夜雨聆风学习资料网

ARTICLE · 1036335

谷歌开源 ARTEMIS:让 AI 助手像人一样操作真机,AndroidWorld 99%+ 成功率

谷歌开源 ARTEMIS:让 AI 助手像人一样操作真机,AndroidWorld 99%+ 成功率

ARTEMIS 是什么:谷歌开源的“AI 真机操作员”

简单说,ARTEMIS 是谷歌开源的一个项目,它能把自然语言指令变成可靠的 Android 自动化操作。你说“打开设置看看电量”,它就像人一样拿起手机去点、去划、去确认,然后把结果告诉你。它也支持让 AI 编码助手(Antigravity、Claude Code、Codex 等)通过 MCP 直接驱动真机。

成绩单很能打:在 Google Research 的 AndroidWorld 基准测试上拿到 99%+ 的任务完成率,覆盖 20+ 应用、100+ 多步任务。项目是 Apache 2.0 协议,要求 Python 3.12+,支持 Gemini、Claude、GPT-4o、Qwen-VL 多种多模态模型。

上面这个动图是实机演示:在 Google Maps 设置驾车路线并计算总耗时,然后打开 YouTube 播放 Coldplay 的歌——全程一条自然语言指令搞定。

核心能力一览:不止会点按钮

第一是跨应用自动化。测试流程也好,日常任务也好,直接用自然语言描述就行,它自己跨 App 把活干完。第二是多模态定位:优先用无障碍树的元素索引,定位不到就走坐标和视觉模型兜底,所以 Compose、Flutter、自定义 Canvas 这类自绘界面也能对付。

第三是 Flash/Pro 双模式。Flash 是响应式的“观察-执行”循环,带异步历史摘要,单步通常 3-5 秒,适合轻量确定性任务;Pro 会在每个动作执行前预检目标(对着实时 UI 树和像素校验),被拦截的动作交回 Operator 恢复,适合长时间探索和稳定性测试。第四是 MCP 集成,AI IDE 里直接驱动设备、采集 Logcat 和截图,还能自动生成诊断报告。

五分钟上手教程

准备很简单:一台开了 USB 调试的安卓设备,或者干脆用模拟器。然后 clone 仓库,跑一键启动脚本。脚本会自动检测并安装 ADB、scrcpy、FFmpeg 和 Python(uv)依赖,还会提示你把 MCP 配置和测试规则文件装进各家 AI IDE。

# macOS / Linux
git clone https://github.com/google/artemis.git && cd artemis
./start.sh
# Windows PowerShell
git clone https://github.com/google/artemis.git
cd artemis
.\start.bat

小坑提醒:PowerShell 默认不在当前目录找可执行脚本,所以要写 .\start.bat;CMD 里直接 start.bat 就行。启动后打开 http://localhost:8000,就是 Web 控制台:有设备连接向导、实时投屏、自然语言派发和执行回放。

不想开浏览器,CLI 直接跑也行:

uv run artemis run "Open Settings, find Battery and tell me current level" --profile flash

Web 控制台长这样,自然语言派发、实时推理遥测、动作轨迹和执行回放都在一个界面里:

另外用 uv run artemis restart / stop / status 可以在任意终端管理服务生命周期。想全局使用 artemis 命令(不写 uv run),在项目根目录跑一次 uv tool install -e . 即可。

接入你的 AI IDE(MCP 实战)

推荐一键安装,直接把 MCP 服务器和全局规则装到检测到的 IDE 里:

# Antigravity / Jetski
uv run artemis mcp --install antigravity
# 所有支持的 IDE(含 Codex)
uv run artemis mcp --install all

想手动配置的话,用 uv run artemis mcp --generate-config  生成对应片段。比如 Codex 的 ~/.codex/config.toml:

[mcp_servers.artemis]
command = "/path/to/artemis/.venv/bin/python"
args = ["-m""mcp_server"]
cwd = "/path/to/artemis"
[mcp_servers.artemis.env]
PYTHONUNBUFFERED = "1"
PYTHONPATH = "/path/to/artemis"

Antigravity 的 ~/.gemini/jetski/mcp_config.json 长这样,还可以把常用工具设为 eager 加载:

{
"mcpServers": {
"artemis": {
"command""/path/to/artemis/.venv/bin/python",
"args": ["-m""mcp_server"],
"cwd""/path/to/artemis",
"env": {
"PYTHONUNBUFFERED""1"
      },
"tools": {
"mobile_run_task": { "eager"true },
"mobile_manage_task": { "eager"true },
"mobile_get_device_state": { "eager"true },
"mobile_inspect_trace": { "eager"true },
"mobile_diagnose": { "eager"true }
      }
    }
  }
}

强烈建议把仓库里的 mcp_server/rules.md 挂到 IDE 的规则里,让 AI 以资深移动测试工程师的方式干活,避免幻觉式 UI 操作。这份规则覆盖了“写代码前先主动探索”、Flash/Pro 路由策略、延迟补偿、以及“动态优先、坐标兜底”的定位模式。安装时注意:Claude Code 用 artemis mcp --install claude 装到 ~/.claude/rules/artemis.md,只装这一处——Claude Code 会同时加载 ~/.claude/CLAUDE.md 和 ~/.claude/rules/*.md,重复装浪费上下文。Cursor 是复制到 .cursorrules 或 .cursor/rules/artemis.mdc;Codex 加到 ~/.codex/AGENTS.md。

配好之后,在 IDE 聊天框里就能这样派活:“把最新改动构建成 APK,装到连接的设备上,用测试账号打开登录页,验证登录后有没有意外弹窗,最后返回最终页面的截图。”

完整闭环是四步:先在 Antigravity 里输入测试需求,然后自动拆解生成带架构图的测试方案,接着驱动真机自主执行并采集性能数据,最后交付结构化诊断报告(含指标表格和原始数据)。看几张官方流程图:

四种使用方式与隐私说明

ARTEMIS 提供四种用法,按需选:① Web 可视化控制台(uv run artemis ui),实时投屏+自然语言派发+执行回放;② MCP Server,接入 Antigravity、Claude Code、Windsurf 等复现 bug 和跑测试;③ 开发者 CLI(uv run artemis run),终端直接跑测试用例、探索性稳定性检查或 AndroidWorld 基准,输出结构化结果;④ Python SDK,集成进 pytest 或 CI/CD,带 Pydantic 强类型结构化输出和断言支持。

SDK 是零运行时依赖的瘦客户端,装在开发机即可,ADB、Agent、模型和图像处理都留在设备主机上:

uv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client"
import asyncio
from artemis_client import ArtemisClient
asyncdefmain():
    client = ArtemisClient(
"http://artemis-host:8000",
        device_serial="emulator-5554",  # optional: target specific device serial
        default_profile="flash",  # "flash" (fast reactive) or "pro" (deep reasoning)
    )
    result = await client.run(
"Open System Settings, go to 'Battery', verify battery percentage is displayed, and check for any crash dialogs.",
    )
assert result.succeeded, f"Test failed: {result.error or result.status}"
print(f"✅ Test Passed! Device: {result.device_serial} | Trace ID: {result.trace_id}")
if __name__ == "__main__":
    asyncio.run(main())

隐私方面说清楚:设备上第一个任务时会安装一个 Artemis Accessibility Helper 无障碍服务,它只在本地读取屏幕布局,不占用 UiAutomation 连接,也不会向任何地方发送数据。手机上会多一条收起的“Artemis test helper is running”通知和设置里无障碍的一项,就是它。管理命令如下:

# 预装(避免首个任务约 3 秒延迟)
uv run artemis helper install
# 检查
uv run artemis helper status
uv run artemis doctor
# 卸载
uv run artemis helper uninstall

还有两个 .env 开关:ARTEMIS_HIERARCHY_BACKEND=uiautomator 可以切换到 UIAutomator2 后端;ARTEMIS_HELPER_AUTO_INSTALL=false 禁止自动安装。就算 helper 中途挂了,ARTEMIS 也会自动回退到 UIAutomator2,并在任务时间线、mobile_manage_task 状态和最终报告里说明。

对比与总结

对比传统脚本自动化(Appium/UIAutomator):传统方式要先写选择器脚本,UI 一变就得改;ARTEMIS 用自然语言驱动,靠元素索引加坐标/视觉兜底适应动态 UI,基本不用维护脚本。对比纯视觉 Agent:ARTEMIS 优先用元素索引、坐标回退,比纯截图识别更快更稳,Flash 单步只要 3-5 秒。

架构上还有两个细节值得一提:Pro 在派发动作前会对照实时 UI 树和像素校验目标,并用“动作爆发(action bursts)”处理瞬态控件,不用干等下一轮模型;Flash 和 Pro 共享历史压缩机制,把旧截图替换成视觉摘要,避免上下文爆炸。

总之,如果你在做 Android 自动化测试、稳定性探索,或者想把 CI/CD 和 AI 助手接上真机,ARTEMIS 值得认真试试。99%+ 的 AndroidWorld 完成率加上 MCP 生态的无缝接入,让它成为目前这个方向上最值得关注的开源项目之一。

相关学习资料