关于 Mobster
Mobster 是面向移动自动化开发者的 MIT 许可 iPhone Agent 引擎,采用观察、决策、验证和执行循环,并包含操作安全机制与基准测试。基于该引擎的 Mac 产品与此代码库分开。
主要功能
- 01读取 iPhone 屏幕并执行操作
- 02逐步验证操作效果
- 03高风险操作需审批
- 04敏感信息遮蔽与重复操作防护
- 05基准测试与评估工具
适用场景
- 01开发由 Agent 执行的 iPhone 任务
- 02检查和测试移动自动化行为
- 03通过基准评估 iOS 任务完成情况
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Mobster 引擎
Mobster for Mac 背后的 Agent 循环,以及我们用来衡量它的研究。MIT。
驱动 iPhone 的 Agent 可以读取你的消息并点按“发送”。这个仓库中的代码决定何时执行这些操作:观察、决策、验证、执行的循环;它读取和执行操作所用的 WebDriverAgent 驱动;以及每次操作前的安全核心。仓库中还包含基准测试、评估结果和我们发布的研究成果,优点和不足都如实呈现。
Mobster for Mac 是基于这个循环构建的产品。它可以设置你的 iPhone、实时显示手机画面、通过卡片请求你的确认、按计划运行工作流、接入 Claude Code、Cursor 和 Codex,并在应用中运用速度与质量方面的成果运行循环。在 mobster.dev 获取 Mobster for Mac。
阅读循环
| 路径 | 内容 |
|---|---|
mobile_agent/frontier.py | 循环:一个模型规划每一步;包括防护机制、任务契约和 DONE 门控 |
mobile_agent/contract.py | 任务要求,以及屏幕上证明各项任务已完成的证据 |
mobile_agent/engines.py | 应用和基准测试共用的配置(模型、推理、限制)以及结果摘要 |
mobile_agent/drivers.py、state.py | WebDriverAgent 的 HTTP API:将无障碍树作为快照读取,然后执行点按、输入和滑动 |
mobile_agent/transport.py、gemini.py | 模型调用底层的传输层。Claude、OpenAI 和 Gemini 客户端以及价格表位于 model_clients.py |
mobile_agent/journal.py、task_policy.py、effect_ledger.py、secret_filter.py、system_dialogs.py、permissions/ | 安全核心:设备锁和运行日志、发送、购买、发帖或删除的判定规则、重复操作防护、秘密信息遮蔽、iOS 自带提示、审批门控 |
mobile_agent/harness_api.py | 与 Mobster for Mac 的衔接处:注册表和钩子;在此仓库中为空 |
examples/reference_loop.py | 按运行时的执行顺序展示循环的 API |
mobile_agent/bench/、mobile_agent/evals/ | MobsterBench-iOS、iOSWorld 测试框架、基线、配对 A/B 工具、VisionJudge 的标注集 |
mobile_agent/docs/、research/ | 设计说明和带日期的研究报告 |
单步运行方式
- 观察。 驱动读取 WebDriverAgent 中应用的无障碍树,并将其转换为快照:包含每个元素的角色、标签、值和边框。
- 决策。 模型接收任务、当前计划和以编号行呈现的屏幕,然后返回接下来的 1 到 6 个操作。
- 验证。 执行操作前,循环会根据选择该操作时的屏幕进行检查。操作执行后,循环会再次读取屏幕,并检查操作是否生效。
- 执行。 驱动执行点按、输入或滑动,然后循环返回第 1 步,直到屏幕上出现契约要求的证据,或达到停止限制。
每一步都受到安全核心的保护:
- 对于发送、购买、发帖或删除操作,循环会先征求许可(
task_policy.py、permissions/);结果未知的操作绝不会再次发送(effect_ledger.py)。 - 每个事件都会在发送下一项操作前发出。Mobster for Mac 会将每个事件写入日志(
journal.py),并确保同一时间只有一次运行持有手机锁。 - 密码、一次性验证码、卡号和密钥在存储前都会被遮蔽(
secret_filter.py)。 - 从手机读取的文本只是数据,绝不会作为指令传给模型。
examples/reference_loop.py 展示了一个固定的只读任务所用的完整 API:读取“设置”中的 iOS 版本。你需要提供一个能连接 iPhone 的 WebDriverAgent 运行器,以及 Claude 或 OpenAI 密钥。对于每项审批请求,它都会回答否。
结果
每个数字都说明了测量对象、测量内容和时间。方法和置信区间见 mobile_agent/docs/benchmarks.md 和 research/。
| 测量项 | 结果 | 失误与差距 |
|---|---|---|
iOSWorld dev_core 子集,Claude Sonnet 5.5 低推理设置下运行此循环,模拟器,2026 年 10 月 10 至 11 日 | 官方通过率 53.8%;Agent 耗时 p50 为 103 s;每项任务约 $0.18 | 多应用任务通过率为 31%。已发布的最佳结果为 51.9%,覆盖全部 133 项任务,因此两者无法直接比较 |
| iOSWorld,16 项未见任务,配对 A/B 测试,2026 年 9 月 28 日 | Sonnet 5.5:50%(95% CI 为 28 至 72),每项任务 $0.197;Opus 5.5:56%(31 至 81);gpt-5.6-sol:50% | 在这个样本量下,模型之间的差异均不显著 |
| MobsterBench-iOS,68 项任务,iPhone 15 Pro 通过 USB 连接,2026 年 9 月 24 日 | 66 项中通过 54 项(82%,CI 为 71 至 89);每项任务 p50 为 7.7 s;每项任务 $0.0057 | 多应用任务通过 6 项中的 2 项。拦截了 1 次有风险的点击,并记录了 2 次非预期操作。未采用留出测试:两轮测试之间加入了修复(通过率依次为 63%、71%、82%)。未运行基线测试 |
| 时间分布,346 次运行,2026 年 9 月 22 日 | 设备端约占总耗时的 61%,模型约占 36% | 至少 17% 的时间用于等待屏幕稳定 |
| FrameClock(将 MJPEG 流用作稳定时钟),iPhone 15 Pro,2026 年 9 月 23 日 | 导航平均稳定时间从 1,122 ms 降至 996 ms;48 次中没有提前判定稳定 | 32 次中 0 次提前判定稳定仍意味着比例最高可能约为 9%;未测量 Safari 的像素稳定情况 |
| VisionJudge 在 135 张已标注的公有领域图片上的表现,2026 年 9 月 23 日 | 117 个回答中有 1 个错误(精确率 99.1%) | 仅有一名评审;阈值根据同一组数据拟合;测试图片不是手机屏幕截图 |
| 操作验证器,34 次尝试,2026 年 9 月 19 日 | 14 次正确操作全部放行;12 次错误操作全部拦截 | 有 6 次本应拒绝的操作却被放行;重复执行 Add 的问题仍未解决 |
9 月的结果早于 2026 年 10 月 13 日;自那天起,此循环成为 Mobster 的唯一引擎。10 月的 iOSWorld 数字来自此循环。研究笔记介绍了随 Mobster for Mac 一同发布的模块(帧时钟、对冲调用、技能);这些模块的代码不在此存储库中。
测试
测试无需手机、模拟器、网络或密钥:
make venv
make test-backend
mobile_agent/tests/test_engine_boundary.py 会检查引擎是否仅导入自身模块,并在脚本化的手机和模型上运行参考示例。
第三方软件
该引擎通过 PyPI 安装 jsonschema 和 referencing(MIT)以及 Pillow(MIT-CMU)。它通过 HTTP 与 WebDriverAgent(BSD-3-Clause,Facebook, Inc.)通信;此存储库不包含其任何代码。VisionJudge 使用的图片遵循 CC0 或属于公有领域,来源信息列于 mobile_agent/evals/vision/manifest.json。
许可证
MIT,版权归 Radish Retail, LLC 所有。请参阅 LICENSE。如需报告漏洞,请按 SECURITY.md 中的说明操作。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。