
iOS 模拟器 MCP 基准测试:simulator-use 单次登录仅读 194 token,比 Xcode MCP 少 66 倍
来源标题:iOS Simulator MCP benchmark: eight tools for AI agents
在 iPhone 17 Pro 模拟器上对比八款 iOS 模拟器 MCP 工具,simulator-use 完成一次登录全程仅回读 194 个 token,比第二名少 3.4 倍、比 Xcode MCP 少 66 倍、比 AXe 少 569 倍。它同时登录最快,分步耗时 3.50 秒、批量 2.87 秒,测试取 10 次运行中位数。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
八款工具在同一台 Mac 上登录同一台 iPhone 17 Pro Simulator 上的同一个 app,每款工具各自通过自己的 MCP server 接入(AXe 没有 MCP server,走命令行)。simulator-use 每次登录读取 194 个 token:比第二名少 3.4 倍,比 Xcode MCP 少 66 倍,比 AXe 少 569 倍。它登录也最快:分步 3.50 秒,批量 2.87 秒。每次调用都计时并保存,包括失败。
全部在同一台 Mac 上,一次只跑一个工具。排名依据是 agent 在整个登录过程中读回的内容量(读屏、输入邮箱、输入密码、点 Sign In、读屏确认“Welcome”),因为每一个 token 都要经过模型;时间相同则按耗时排名。取 10 次运行的中位数,每次都在全新启动的 app 上。分步登录和批量登录的耗时见 The whole sign-in。
运行顺序为:simulator-use、AXe、MobileBuildMCP、mobile-mcp、agent-device、Argent、Xcode MCP,然后在 Not ranked here 下进行第二轮运行,接着是 Maestro MCP 和 AXe 的最后一次运行:它们的首次尝试在任何调用之前就中止了,因为 Simulator 在重启后被发现在关闭状态。Token 数为估算值:文本按字符数 / 4 计算(本次运行未设置 Anthropic API key),图像按宽 * 高 / 750 计算。
simulator-use 与各工具的对比,每项一页:compare。
工具自身的读屏,在未变化的登录界面上读取 20 次,之前先做一次预热读取。
空字段点 Sign In,20 次,每次都在 app 全新启动并做一次不计时的读取之后。app 自身的日志确认每次点击。“Shows the result”统计的是答案中包含新状态文本“Invalid email or password”的响应——无论是在答案本身中,还是在它为 agent 指定打开的文件中。
向 Email 输入 gary@example.com,10 次,每次都在全新的 app 上:使用工具的填充调用,或者在工具的方式是点击字段再输入时,用点击加输入调用。工具的下一次读取必须显示该文本。
分步模式,每个动作一次调用;批量模式,在工具有自己的批量或序列调用时,将三个动作放入其中。登录成功是指最终读取显示“Welcome, gary@example.com”,且 app 记录了这次登录。
第二轮运行。AXe 和 MobileBuildMCP 在 Device Hub 打开的情况下再次运行,因为 AXe 的 README 说:“Xcode 27 simulator automation uses Device Hub; Simulator.app is not required.”在 Device Hub 打开时,它们的点击大多未能到达 app。最后在 Device Hub 关闭的情况下再运行一次,两者都再次通过。因此在这台 Mac 上,排名采用的是无头运行结果——每个工具都进行了无头运行。
server 的工具列表和说明在每个会话中、agent 做任何事之前占用的上下文量。
Setup 是工具说明在第一个动作之前要求做的事(打开会话、选择或启动设备);其耗时不计入上述任何数字。
来自各工具自己的 README、许可证和文档,阅读于 2026 年 10 月 31 日;来源链接见每一行。
这里每个工具都需要一台装有 Xcode 和 iOS Simulator runtime 的 Mac 来运行 iOS Simulator。引用的需求来自上述来源。
每个工具自己的调用,选自其 README、工具描述或其答案中的提示。代码在 bench/tools 中。
每次运行都在同一台 Mac 上,一次只跑一个工具,其他所有工具的进程都已结束,Simulator 在其之前关闭并重新启动。AXe 和 MobileBuildMCP 在 Device Hub 打开的情况下运行了第二次。harness 通过 stdio 与工具自己的 server 进行 MCP 通信,就像 agent 的客户端一样,并对每次调用从发出请求到收到答案计时(AXe 没有 MCP server,因此其命令每个步骤运行一次,从启动到退出计时)。每个工具都使用自己的读取方式、自己的点击和输入方式(有 id 时按 id,其方式为坐标时按坐标)、自己的 settle 和 verify 选项,以及其文档或自身提示所要求的 setup。点击或登录只有在 app 自身日志显示时才计数,这一检查不使用无障碍功能;失败的步骤会被报告,绝不重试。
Token 是 agent 读回的内容:答案文本按字符数 / 4(本次运行未设置 Anthropic API key;设置了的话,harness 会用 Anthropic 的 token 计数 API 来计数),图像按宽 * 高 / 750,对于 Xcode,则是其答案指向的层级文件——其自身的 skill 要求每次交互后都读取该文件。中位数是中间值;p90 是按最近秩计算的第 90 百分位数。
harness 及其进行的每一次调用:bench,原始结果在 bench/results/2026-11-01(每个文件记录了其 Mac、Simulator、版本以及 Device Hub 是否打开)。先运行 bash bench/setup.sh,再运行 bash bench/run-all.sh,即可在任何装有 Xcode 的 Mac 上再次运行;node bench/summarize.mjs 和 node bench/page.mjs 将结果转为这些表格。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。