
ARTEMIS 是谷歌最新开源的一个 Android 自动化项目,它让 AI 助手和测试套件能够像人类一样直接操作真实的 Android 设备。通过结合多模态感知、MCP(Model Context Protocol)协议以及灵活的执行模式,ARTEMIS 在 Google Research 的 AndroidWorld 基准评测中取得了 99%+ 的任务完成率,确立了其在移动端自动化领域的 SOTA 地位。

核心亮点
- 像人一样操作真机
- 支持跨 App 的自然语言指令执行,无论是复杂的测试流程还是日常任务(如“打开设置查看电量”),都能直接在真机或模拟器上完成。
- 多模态定位:优先使用元素索引(Accessibility Tree),针对自绘界面(如 Canvas, Compose, Flutter)提供坐标和视觉定位兜底,确保在各种 UI 框架下都能精准点击。
- 双模式执行引擎
- Flash 模式:极速响应,单步约 3–5 秒。采用观察-执行循环和历史摘要压缩,适合常规确定性操作。
- Pro 模式:深度推理,单步约 15–40 秒。引入 Planner(规划者)、Operator(执行者)和 Checker(校验者)多智能体协作,支持执行前安全网校验、长程复杂业务流及书面报告生成。
- IDE 原生集成 (MCP)
- 通过 MCP 协议,ARTEMIS 可以直接嵌入 Antigravity, Claude Code, Windsurf, Codex, Cursor 等 AI 编程环境。
- 开发者可以在 IDE 对话框中直接下达指令(如“编译 APK 并安装到手机验证登录”),AI 将自动驱动真机、收集 Logcat 和截图并反馈结果。
- 业界领先的基准表现
- 在涵盖 20+ 款应用与 100+ 项多步任务的 AndroidWorld 评测中,ARTEMIS 实现了 99%+ 的任务完成率,远超现有方案。
快速上手
1. 环境准备
确保电脑已连接开启 USB 调试的 Android 实体机或模拟器。
2. 一键启动
ARTEMIS 提供了自动化脚本,会自动安装 ADB, scrcpy, FFmpeg, Python (uv) 等依赖,并配置 MCP 服务。
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
启动后,浏览器会自动打开 Web 控制台 (
http://localhost:8000),提供设备投屏、任务演练和状态回放功能。
3. IDE 集成 (以 Claude Code 为例)
运行以下命令自动安装 MCP 服务和测试行为准则:
uv run artemis mcp --install claude
随后即可在 Claude Code 中直接对话:
“请帮我把刚刚修改的代码编译成 APK 并安装到手机上,打开登录页面输入测试账号,验证登录后是否有异常弹窗,并把最终页面截图回传。”
ARTEMIS 会在手机上安装什么?
为了读取屏幕布局,ARTEMIS 会安装一个名为 Artemis Accessibility Helper 的小型无障碍服务。
- 隐私安全:该服务仅监听本机回环地址,不向外发送任何数据。
- 非侵入性:不占用 UiAutomation 连接,避免与其他自动化工具冲突。
- 可管理:可通过
uv run artemis helper install/uninstall手动管理。若 Helper 失效,系统会自动回退到 UIAutomator2。
运行模式对比:Flash vs Pro
| 特性 | Flash 模式 (--profile flash) | Pro 模式 (--profile pro) |
|---|---|---|
| 速度 | 极快 (3-5s/步) | 较慢 (15-40s/步) |
| 架构 | 单智能体响应式循环 | 多智能体图编排 (Planner/Operator/Checker) |
| 适用场景 | 常规确定性 UI 操作、快速验证 | 长程复杂业务流、稳定性测试、需生成报告 |
| 安全性 | 无执行前校验 | 动作下发前经过 Safety Net 校验 (XML+像素) |
| 历史管理 | 视觉摘要压缩,上下文无限 | 完整笔记、历史召回、视频分析 |
| ADB 支持 | ❌ 不支持 | ✅ 支持诊断与命令执行 |
Python SDK 集成
对于需要集成到 CI/CD 流水线的用户,ARTEMIS 提供了零运行时依赖的薄客户端:
import asyncio
from artemis_client import ArtemisClient
async def main():
client = ArtemisClient(
"http://artemis-host:8000",
device_serial="emulator-5554",
default_profile="flash",
)
result = await client.run(
"打开系统设置,进入『电池』页面,验证是否正常显示电量百分比。",
)
assert result.succeeded, f"测试失败: {result.error}"
print(f"✅ 测试通过!Trace ID: {result.trace_id}")
if __name__ == "__main__":
asyncio.run(main())
相关导航


Agent Client Protocol(ACP)

Soup

ACRouter

Laya

Vibium

MergeKit






