自动化工具 活跃维护

agent-device

callstack/agent-device

针对 AI 编码代理的移动应用自动化和验证。适用于 iOS、Android、HarmonyOS、电视、网页、macOS 和 Linux 的 CLI、MCP 服务器和类型化 Node.js API。

5166
Stars 标星
358
Forks 分支
6
Watchers 关注
98
Open Issues
TypeScript
主要语言
MIT
开源协议
225.7 MB
仓库大小
1 小时前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:callstack/agent-device
git clone https://github.com/callstack/agent-device.git
git clone git@github.com:callstack/agent-device.git
README.md main

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。


代理-设备

用于 AI 编码代理的移动应用自动化和验证。 通过 CLI、内置 MCP 服务器或输入的 Node.js API,为编码代理提供实时应用反馈循环。

让你的编码代理在运行的应用程序中验证其更改。agent-device 允许代理在 iOS、Android 和 HarmonyOS(模拟器、仿真器和物理设备)以及 tvOS、Android TV、Fire TV(Fire OS)、Amazon Vega OS TV(Vega 虚拟设备)、Web、macOS 和 Linux 上检查、控制、调试和验证应用程序。代理读取高效令牌的可访问性快照,而不是仅仅基于截图进行推理,通过 refs 和 selectors 执行操作,并保存证据以供审查。它还协调并行代理工作树之间的设备访问,并连接远程设备云。

可与 Claude Code、Codex、Cursor、Windsurf、Cline、Goose 以及任何能够运行 CLI 或通过 MCP 连接的代理一起使用,或作为你使用 AI SDK 或 Eve 构建的代理的运行时。 Expensify、Shopify 以及其他公司 others 的开发者使用它来验证他们的应用程序。

代理设备在 中驱动移动自动化 e2e 和 T3 代码。

快速开始

安装 CLI 并检查设置。它需要 Node.js 22.12 或更高版本;网络自动化需要 Node.js 24 或更高版本。请参阅 安装 了解目标要求。

npm install -g agent-device@latest
agent-device doctor
agent-device help workflow

在将 CLI 交给代理之前,请自己运行 doctor。help workflow 提供了调试、重放和分析的指南链接。

通过 CLI 驱动应用程序

在内置的 iOS 通讯录应用中添加联系人:

# Start a session.
agent-device open Contacts --platform ios

# Inspect the screen. The example below shows the output; refs vary.
agent-device snapshot -i
# @e2 [button] "Add"

# Use the ref and wait for the UI to settle.
agent-device press @e2 --settle
# The diff includes:
# + @e7 [text-field] "First name"

agent-device fill @e7 "Ada" --settle
# The next diff shows changed values and current refs:
# - @e7 [text-field] "First name"
# + @e14 [text-field] "Ada"
# = @e15 [text-field] "Last name"

# Capture evidence and close the session.
agent-device screenshot ./contact-form.png
agent-device close

引用仅在最新输出中有效:在 --settle 命令之后,使用其差异中的引用,并且只有在差异中遗漏您需要的内容时才拍摄新的快照。快照来自应用的可访问性树,因此清晰的标签、角色和测试 ID 可以使代理运行更加可靠;当可访问性数据较差时,也可使用截图和视频作为证据。

将 MCP 工具添加到您的代理中

agent-device mcp 启动官方 stdio MCP 服务器,通过与 CLI 相同的执行路径,将已安装的命令作为结构化工具公开:

{
  "mcpServers": {
    "agent-device": {
      "command": "agent-device",
      "args": ["mcp"]
    }
  }
}

请参阅 AI 代理设置 了解每个客户的设置,以及何时优先选择普通 CLI 而不是 MCP。

从 Node.js 脚本化操作

createAgentDeviceClient() 为 Node.js 提供了对相同命令的类型化访问,可以作为您自己代理中的模型工具或从编排代码中使用:

import { createAgentDeviceClient } from 'agent-device';

const client = createAgentDeviceClient({ session: 'qa-run' });
try {
  await client.apps.open({ app: 'com.apple.Preferences', platform: 'ios' });
  const snapshot = await client.capture.snapshot({ interactiveOnly: true });
  const button = snapshot.nodes.find((node) => node.role === 'button');
  if (button) await client.interactions.press({ ref: button.ref });
} finally {
  await client.sessions.close();
}

请参阅Node.js API、可运行示例以及AI SDK和Eve集成指南。

代理能做什么

  • 通过可访问性快照、引用和选择器检查应用状态,并分析 React Native 渲染性能,以找出导致交互变慢的原因。
  • 对可见的界面进行操作,例如点击或按压元素、填写字段、滚动、进行手势操作、等待、断言状态以及处理提示框。
  • 诊断故障,通过截图、视频、日志、跟踪、网络数据、性能样本、崩溃细节和 React 配置文件进行分析。
  • 重复工作流程,将可用的操作步骤保存为 .ad 脚本以便本地使用或持续集成(CI)。在需要时导出严格的 Maestro YAML 文件。

参见 Commands,了解每个目标支持的命令和证据类型。

可以问代理的内容

安装 CLI 后,像这样的提示可以端到端运行:

  • “实现入职屏幕,在 iOS 模拟器和 Android 模拟器上运行,并附上截图。”
  • “重现此崩溃并捕获导致崩溃的日志。”
  • “检查此更改是否会导致不必要的 React Native 重新渲染。”
  • “探索一次结账流程,将其保存为重放脚本,然后在 CI 中运行。”
  • “在真实设备上验证此拉取请求并附上可审核的证据。”

下一步

在哪里运行代理设备

相同的会话和证据模型在每一步都有效:代理探索应用、捕获证据、保存回放、在CI中运行,然后转向远程设备。

路径 最适合 开始使用
本地 在模拟器、仿真器、物理设备、macOS 和 Linux 上尝试命令和调试应用。 按快速开始操作。
CI/CD 使用回放脚本和捕获的工件进行自动拉取请求和合并验证。 试用 EAS 工作流程模板。
云 / 远程 Linux 运行器、托管设备和远程作业。 设置一个 远程代理,连接一个 设备云(BrowserStack、AWS Device Farm、TestMu AI、Limrun),或 联系 Callstack 进行团队 QA。

工作原理

agent-device 在会话中保持设备状态。它使用本地可访问性桥来获取 iOS 模拟器的快照,并使用 XCTest 进行 iOS 交互,包括物理 iOS 和 tvOS;在 Android、Android TV 和 Fire OS 上使用 ADB 和快照助手;在 HarmonyOS 上使用 HDC 和 ArkUI uitest;在 Vega 虚拟设备上使用 Vega CLI/VDA;在 macOS 上通过本地助手,包括通过可访问性树对 Electron 和其他基于 Chromium 的应用;在 Linux 上使用 AT-SPI。

对不同目标的支持深度不一。一些后端(如 HarmonyOS 和 Vega OS)只覆盖部分命令;运行 agent-device capabilities --platform <platform> 可查看目标支持的内容。功能矩阵 显示了每个目标、桌面、Web 和云提供商支持哪些命令。

会话范围限定在调用者的 git 工作区内,本地主机设备声明防止并行代理接管彼此的模拟器和仿真器。运行 agent-device device status 可在无守护进程情况下检查所有权,运行 agent-device device release --stale 可释放所有权已确定不再运行的声明。相同的命令可在 BrowserStack、AWS Device Farm、TestMu AI 和 Limrun 上驱动托管设备。

agent-device 使用 Vercel 的 agent-browser 提供的 inspect-act-verify 流程来操作移动设备、电视和桌面应用。基本 --platform web 支持在同一会话和回放系统中运行 agent-browser。

常见问题

代理设备是什么?

agent-device 是一个命令行工具和 MCP 服务器,它允许 AI 编码代理检查、控制和验证移动应用,并保存证据以供审查。它支持 iOS、Android、HarmonyOS、电视、Web、macOS 和 Linux。

是否有用于移动应用自动化的 MCP 服务器?

是的。agent-device mcp 启动官方 stdio MCP 服务器。上面的快速入门包含客户端配置,AI 代理设置 涵盖每个客户端的详细信息。

它是否适用于 React Native、Expo、Flutter 和原生应用?

是的。agent-device 支持原生 iOS 和 Android 应用,以及受支持目标上的 React Native、Expo 和 Flutter 应用。命令和证据因目标而异。

它与移动 MCP 服务器有何不同?

MCP 服务器是与 CLI 和类型化 Node.js API 使用的相同运行时的一个入口点。会话、设备所有权、选择器、证据、回放、CI 工作流和云路由在这三者之间保持一致。

我可以在 agent-device 上构建自己的代理或 QA 产品吗?

可以。类型化 Node.js 客户端是该相同运行时的公共界面,因此你构建的代理继承以上所有功能。从 Node.js API、AI SDK 或 Eve 指南开始。

它与 Appium、Detox 或 Maestro 有何不同?

使用 agent-device,代理在运行时读取应用状态并选择每个命令。团队使用 Appium、Detox 和 Maestro 来编写和维护测试套件。agent-device 可以通过将运行保存为 .ad 脚本或导出为严格的 Maestro YAML 来补充它们。

agent-device 可以在 CI 中运行吗?

可以。将运行记录为 .ad 脚本,在 CI 中回放,并将截图和日志保留为工件;EAS 工作流模板 是一个可用示例。

文章和视频

文章

视频

谁在使用代理设备?

Callstack、JPMorgan Chase、Expensify、Shopify、Kindred、Total Wine & More、LegendList、HerLyfe、App & Flow 及其他团队和开发者使用 agent-device。

文档

贡献

请参阅 CONTRIBUTING.md。

Made by Callstack

agent-device 是在 MIT 许可下的开源软件。访问 agent-device.dev 或 联系 Callstack。

本站来源与版权声明
  • 本文标题:agent-device - 针对 AI 编码代理的移动应用自动化和验证
  • 本文链接:https://www.cn121.com/automation/callstack-agent-device.html
  • 原项目:callstack/agent-device 版权归原作者 callstack 及贡献者所有
  • 收录信息:本站于 2026-10-28 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 callstack/agent-device。
  • 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。