如何教会 AI 智能体独立测试移动应用
熟悉的场景:你让 Cursor 或 Claude 这样的 AI 助手为移动应用编写一个功能,它生成一堆代码,你复制过来,然后……你打开模拟器,手动点击每个屏幕来检查布局是否被破坏。那一刻,你感觉自动化在某个地方走错了路。AI 能写代码,但对文本编辑器之外的真实界面却是"视而不见"的。
Callstack 团队通过发布 agent-device 解决了这个问题。这是一款 CLI 工具,将 AI 智能体从理论家转变为实践者。现在智能体可以在 iOS 模拟器或 Android 仿真器上打开应用,查看屏幕元素,并点击正确的按钮。
既然已有 Appium 或 Maestro,何必多此一举
看起来移动自动化工具已经很多了。但问题在于:Appium 和 Maestro 是为人类设计的。AI 智能体不需要编写复杂的 YAML 场景或处理 XML 树中的选择器。它需要一种快速、廉价且直接的方式来与硬件交互。
agent-device 的工作方式不同。它不仅将截图作为图像捕获,还将其作为结构化无障碍树。与其将大量截图发送给多模态模型并消耗大量 token,不如让智能体获得带有简短引用的元素文本描述,如 @e1、@e2。这既降低成本又加快速度。

这个工具能做什么
该工具将自己定位为智能体的"双手和双眼"。以下是吸引我注意的主要功能:
- 智能截图。
snapshot -i命令只返回可交互元素。智能体看到列表:@e1 [button] "Sign In"、@e2 [text-field] "Email"。无需猜测该点击哪里。 - 开箱即用的跨平台支持。 同一工作流程适用于 iOS、Android、TV(tvOS 和 Android TV),甚至 macOS 和 Linux 上的桌面应用。
- 证据收集。 如果出现问题,智能体可以自行启动视频录制、捕获日志或提取网络流量。这对于调试仅在运行时才能复现的 bug 非常有价值。
- React Native 集成。 由于 Callstack 是这个项目的幕后推手,它提供了深度的 RN 支持:你可以检查组件树和分析渲染性能。

实际使用体验
想象一下,你正在为 AI 智能体设置 MCP 服务器(Model Context Protocol)。现在它可以直接在终端中执行命令。
首先,我们检查环境:
agent-device doctor
如果一切正常,智能体可以启动应用:
agent-device open "MyApp" --platform ios
然后它环顾四周:
agent-device snapshot -i
一旦获得元素列表,它只需模拟用户操作:
agent-device fill @e3 "[email protected]"
agent-device tap @e2
就这样。无需等待编译或手动切换窗口。
技术原理
该工具不会在已有标准的地方重复造轮子。对于 iOS,它使用 XCTest;对于 Android,则是 ADB 配合自定义截图辅助工具。对于 Web,底层运行的是 Playwright(具体是 vercel/agent-browser 的逻辑)。
有趣的是,agent-device 可以将其会话转换为 Maestro 格式。这意味着智能体可以在"探索"应用时起草测试,然后你可以将其保存为完整的 E2E 测试用于 CI。
谁应该尝试
我看到几个能真正节省时间的场景:
- React Native 和 Expo 开发者。 如果你正在使用 Cursor 或 Windsurf,请将 agent-device 文档添加到上下文中。智能体可以自行验证更改,不会打扰你。
- QA 工程师。 你可以将基本的冒烟测试编写工作委托给 AI。它会自己找到按钮并验证过渡是否正常工作。
- 从事 TV 平台开发的团队。 TV 自动化一直是个难题,而这里它被打包在一起了。
该项目正在积极开发中,虽然文档在某些地方仍在完善中,但主要的 CLI 运行稳定。如果你相信 Agentic Workflows 的概念,这个工具绝对值得你花一个晚上来体验。
你可以从他们的官方文档开始,其中详细介绍了如何将 CLI 与流行的 AI 智能体集成。
相关项目