AI 写了代码却从没跑过手机——3.4 万人决定给它装双手

你的 AI 编程助手刚写完一个 React Native 登录页。代码看起来没问题,commit 了,PR 提了。

然后你在手机上打开 App——登录按钮被键盘挡住了。

AI 写了代码,但从没在手机上跑过。它不知道键盘弹起时布局会塌,不知道 Android 的返回手势会吞掉弹窗,不知道 tvOS 的焦点导航根本不是点按。

AI 编程最大的盲区不是模型能力,是它从来没有"手"。

Callstack——React Native 生态最大的咨询公司,Wix 之外 Detox 框架的维护者——花了半年造了一双手:agent-device。3.4K Star,187 Fork,MIT 协议,让 AI Agent 直接操控 iOS/Android 真机验证。

agent-browser 的手机版

如果你知道 Vercel 的 agent-browser——给 AI Agent 操作浏览器的 CLI——agent-device 就是同一个思路,但面向手机、电视和桌面。

核心循环只有三步:

snapshot → 理解屏幕 → act → 再 snapshot

snapshot 读取无障碍树,输出结构化文本:

@e1 [heading] "设置"
@e2 [button] "登录"
@e3 [text-field] "邮箱地址"

act 用 ref 或语义选择器操作:

agent-device fill @e3 "test@example.com"
agent-device find "登录" click
agent-device find role button click

关键设计:不用截图理解 UI,用无障碍树。截图要喂给多模态模型,一个屏幕 2-4K token;无障碍树快照只要 200-500 token。Callstack 官方数据:**Token 消耗砍半,时间缩短 33%**。

为什么不用 Appium/Maestro/Detox?

维度 agent-device Appium Maestro Detox
设计目标 AI Agent 驱动 人类写脚本 人类写 YAML React Native 专用
Token 效率 200-500 tok/屏幕 N/A(非Agent设计) N/A N/A
跨平台 iOS/Android/tvOS/TV/macOS/Linux/Web iOS/Android iOS/Android/Flutter/Web 仅 React Native
选择器策略 ref(@e3)+语义双通道 XPath/Accessibility ID YAML text/id testID
录制回放 .ad 脚本 + 自动修复 YAML 回放
证据收集 截图/视频/日志/trace/网络/音频/性能/崩溃 截图/视频 截图/视频 截图/视频
MCP 支持 ✅ 原生
Agent Skill ✅ 官方 Skill 包
许可 MIT Apache 2.0 Apache 2.0 MIT

核心差异:Appium/Maestro/Detox 是给人用的测试框架,agent-device 是给 AI Agent 用的操控层。前者需要人写脚本,后者 Agent 自己看屏幕自己操作。

Maestro 也在做 AI 集成(CEO 在 TestGuild 播客展示了 Agent 自动写 E2E 测试),但它的 AI 层是后加的——底层还是 YAML 驱动。agent-device 从第一天就是 Agent-first 设计。

五个你该关注的技术细节

1. 双通道选择器:ref + 语义

@e3 这种 ref 是临时的——滚动或切屏后失效,必须重新 snapshot。但语义选择器(find "登录" click)是稳定的,UI 改了位置还能找到。两种方式互补:ref 精确快速,语义稳定可靠。

2. 录制回放 + 自动修复

# 录制探索性操作
agent-device open MyApp --platform ios --session e2e --save-script
# 确定性回放
agent-device replay ~/.agent-device/sessions/e2e-run.ad
# 自动修复过时选择器(实验性)
agent-device replay -u ~/.agent-device/sessions/e2e-run.ad

探索性测试 → 录制 → 回放 → CI 集成,一条龙。还能导出 Maestro YAML。

3. 证据收集:9 种类型

截图、视频、日志、trace、网络流量、音频探测、性能采样、崩溃上下文、React Profile。不是全都要——按需采集,Agent 判断什么时候需要截图留证。

4. MCP 原生支持

agent-device 同时提供 CLI + MCP Server。Codex、Claude Code、Cursor、Windsurf 都能直接调用。还提供官方 Skill 包:

npx skills add callstackincubator/agent-device

装了 Skill 的 Agent 知道什么时候该 snapshot、什么时候该截图、什么时候该录制——不用从零学。

5. Cloud 远程设备

本地跑模拟器,Cloud 跑真机。Agent Device Cloud 提供远程设备池,Linux runner 也能测 iOS。对 CI/CD 集成很关键——GitHub Actions 不需要 macOS runner 也能跑 iOS 测试。

代价清醒

1. iOS 测试必须用 macOS

iOS Simulator 和 XCUITest 只能在 macOS 上跑。Linux/Windows 开发者要么用 Cloud 远程设备,要么买 Mac。这不是 agent-device 的限制,是 Apple 的限制——但它是硬约束。

2. 37 个 Open Issue,活跃开发中

项目 6 个月发了 19 个版本(最新 v0.19.1,2026-07-08),迭代很快——但也意味着 API 还在变。Issue #1280(Android 列表行 PRESS 无选择性标识)、#1271(录制修复还在实验阶段)都是实际使用会碰到的问题。

3. Web 平台靠 Vercel agent-browser

--platform web 不是自己实现的,是调用 Vercel 的 agent-browser。Web 自动化不是核心能力,是借来的。如果你的主要场景是 Web 测试,直接用 agent-browser 更好。

4. Node.js 22+ 硬性要求,Web 需要 Node 24+

Node 22 2025 年 10 月才进入 LTS。很多 CI 环境还在 Node 18/20。升级 Node 版本可能比装 agent-device 本身更麻烦。

5. 无障碍树质量决定一切

snapshot 的质量完全依赖 App 的无障碍标注。如果你的 App 没有给按钮加 accessibilityLabel,Agent 看到的就是 @e5 [button] ""——和瞎了没区别。agent-device 的上限是 App 无障碍标注的上限。

6. 主贡献者巴士因子约 2

thymikee(1027 次贡献)贡献了 98%+ 的代码。第二名是 devin-ai-integration[bot](14 次)。核心依赖一个人,项目可持续性有风险。

7. macOS 桌面自动化需要辅助功能权限

macOS Accessibility 权限需要手动授权,CI 环境配置麻烦。桌面自动化不是"装了就能用"。

谁该用,谁不该用

该用:

  • React Native/Expo/Flutter 团队,AI Agent 写代码但没人验证手机端
  • 需要 Agent 自主探索 + 录制回放的 QA 流程
  • CI/CD 集成移动端 E2E,不想写 Appium 脚本
  • tvOS/Android TV 应用测试(这是唯一支持 TV 的 Agent 工具)

不该用:

  • 纯 Web 应用测试——直接用 agent-browser
  • 没有 AI Agent 的传统 QA 团队——Appium/Maestro 更成熟
  • App 无障碍标注很差且不愿改进——snapshot 质量上不去
  • Windows/Linux 开发者且不想付 Cloud 费用——iOS 测试做不了

判断

agent-device 解决的是一个真实且越来越大的问题:AI Agent 能写代码但不能验证代码在手机上的表现

Callstack 的定位很精准——不做通用测试框架,做 Agent 的"手和眼"。Token 效率优化、双通道选择器、录制回放、MCP 原生支持,每个设计决策都围绕"让 Agent 更高效地操控设备"。

但 0.19 版本意味着 API 还会变,37 个 Issue 意味着坑还没填完,巴士因子约 2 意味着可持续性存疑。

如果你在用 AI Agent 写移动端代码,agent-device 值得试。但别拿它替代 Appium——它是 Agent 的操控层,不是测试框架的替代品。


相关链接:

评论

暂无评论。

登录后可发表评论。