Google开源Artemis:AI操作安卓真机,从安装到MCP接入IDE全跑通

大家好!今天给大家带来 Google 刚开源不久的重磅项目——Artemis。本文将围绕「让 AI 像人一样操作安卓真机」展开,涵盖核心架构、Flash/Pro 双模式原理、Windows/macOS 安装配置、CLI 与 Web 控制台、MCP 接入 Claude Code 等 IDE、Python SDK 集成 pytest 全套流程,每一步都给出可直接复制的命令和配置,并附上模型选型与避坑清单。无论你是安卓测试工程师,还是想给自己的 AI Agent 配一台「手机」的开发者,希望你都能有所收获!

一、Artemis 是什么:把「写脚本」变成「下指令」

做移动端自动化的同学都懂传统方案的痛:Appium、UIAutomator 写出来的脚本靠控件 ID 定位,UI 一改版就集体返工;遇到 Canvas、Compose、Flutter 自绘界面,定位是老大难;跨 App 的长链路用例,脚本量指数级上涨。

Artemis 是 Google 开源的 Android 真机 AI Agent 框架(Python 3.12+,Apache 2.0 协议,部分源代码来自 Minitap 的 mobile-use 项目),思路完全反过来:你用自然语言下发任务,AI 自己看屏幕、定位元素、执行点击、校验结果。在 Google Research 的 AndroidWorld 基准评测(20+ 款应用、100+ 项多步任务)中,它拿到了 99%+ 的任务完成率,是目前该榜单的 SOTA。

AndroidWorld 基准评测对比,Artemis 99%+ 排名第一

核心亮点 5 条:

  • 跨 App 自动化:自然语言指令直接驱动测试流程和日常任务;
  • 多模态定位:优先用无障碍树元素索引,自绘界面用坐标和视觉模型兜底;
  • IDE 内诊断:通过 MCP 协议让 Claude Code、Antigravity、Codex、Windsurf 直接操作测试设备、收集 Logcat 输出和截图;
  • Flash 执行:观察-执行循环加异步历史摘要,单步约 3~5 秒;
  • Pro 探索:单个动作执行前校验目标,支持长时间探索和稳定性测试。

和传统方案的对比一目了然:

维度Appium / UIAutomatorArtemis
用例编写代码脚本,按控件 ID 定位自然语言一句话下发
自绘界面需要额外方案无障碍树 + OCR + 视觉模型兜底
弹窗 / 瞬态控件脚本容易崩动作序列原子连发处理
跨 App 长链路逐段写脚本一句话描述目标即可
UI 改版维护脚本全面返工无脚本可修
速度与成本快,零模型调用Flash 单步 3~5 秒,有 Token 成本

二、核心架构:它是怎么「看」屏幕、「点」屏幕的

2.1 三层元素定位,自绘界面也能打

Artemis 的元素定位是分层兜底的:第一层走无障碍树,直接拿元素索引,最快最准;自绘控件拿不到标准节点时,第二层用 OCR 和坐标定位;再不行第三层上视觉模型做识别。三层组合下来,Canvas、Compose、Flutter 这类传统自动化最头疼的界面都能覆盖。

2.2 Flash 模式:3~5 秒一步的响应式循环

Flash 是单模型观察-思考-执行的轻量循环,不经过图编排,单步约 3~5 秒。它的历史是被压缩而不是被截断:截图会异步替换成视觉摘要,更早的步骤分块归档,可以按需召回,所以默认不限步数。对自动消失的控制栏、toast 等瞬态控件,它会把多次点击串成一个原子的 click_sequence,赶在控件消失前点完。

2.3 Pro 模式:Planner + Operator + Checker 多智能体编排

Pro 是基于 LangGraph 的多智能体图,单步约 15~40 秒,换来了三样 Flash 没有的东西:

  • Planner:维护一份带里程碑和 verify / assert 检查项的 Markdown 任务计划;
  • Safety Net:Operator 的每个动作下发前都经过 XML 优先、像素兜底的目标校验,被拦截的动作会打开一条「执行事故」,留在上下文里直到恢复;
  • Checker:只读校验计划检查点,并在退出前对照原始目标做终审(--verification-level 可设 off / final / checkpoints / strict,默认 final)。

两种模式怎么选,一张表说清:

维度Flash(--profile flash)Pro(--profile pro)
单步耗时约 3~5 秒约 15~40 秒
架构单模型响应式循环多智能体图编排
执行前校验无Safety Net(XML + 像素)
任务计划 / 报告无Markdown 计划 + 终审 + 书面报告
ADB 命令不支持支持诊断类命令
适用场景确定性 UI 回归校验长程探索、稳定性测试、100+ 步业务流

2.4 上下文压缩:长任务不「失忆」的秘诀

Flash 和 Pro 共用同一套会话记录账本:相对测试时间 T+mm:ss 的时间线、截图折叠为视觉摘要、更早步骤分块归档,支持 search_history 关键词召回和 replay_steps 步骤重放。配置里默认上下文预算 80000 token,占用到 35% 开始准备压缩、70% 进入软替换、90% 强制收敛,旧截图按深度原位替换成视觉摘要且不恢复。这套机制是它敢把 Flash 默认步数设为「不限」的底气。

ARTEMIS 架构系统示意图

三、五分钟装好:安装与第一条命令

3.1 环境准备

只需要一台开着 USB 调试的 Android 实体机,或者一个 Android 模拟器。一键启动脚本会自动检测并安装 ADB、scrcpy、FFmpeg、Python(uv)运行时和项目依赖,不用手动配环境。

3.2 克隆与一键启动

macOS / Linux:

# 1. 克隆代码仓库并进入目录
git clone https://github.com/google/artemis.git && cd artemis

# 2. 一键启动
./start.sh

Windows PowerShell:

# 1. 克隆代码仓库并进入目录
git clone https://github.com/google/artemis.git
cd artemis

# 2. 一键启动
.\start.bat

注意一个 PowerShell 的坑:必须写 .\start.bat,不能只写 start.bat,命令末尾也不要加 \——PowerShell 默认不从当前目录查找可执行脚本。如果是传统 CMD,直接运行 start.bat。

启动后会自动在浏览器打开 Web 控制台(http://localhost:8000),提供设备连接向导、实时投屏、任务演练与状态回放面板:

Artemis Web 可视化控制台:投屏、推理流、提示词输入坞与任务队列

3.3 第一条 CLI 命令

不想开控制台,也可以直接命令行跑:

uv run artemis run "打开系统设置,找到电池选项并告诉我当前电量" --profile flash

常用管理命令顺手记一下:

uv run artemis ui        # 启动 Web 控制台
uv run artemis status    # 查看服务状态
uv run artemis restart   # 重启服务
uv run artemis stop      # 关停服务
uv run artemis init      # 交互式配置向导

四、MCP 接入 IDE:让 Claude Code 直接操作你的手机

这是 Artemis 最有意思的玩法:它内置原生 MCP 服务,接入之后,你在 IDE 里的 AI 助手就多了一双「操作真机的手」。目前支持 Antigravity、Cursor、Claude Code、Codex、Windsurf、VS Code、Cline/Roo、OpenClaw。

4.1 一键自动安装(推荐)

# 安装到 Antigravity:
uv run artemis mcp --install antigravity

# 或一键安装到所有支持的 AI IDE:
uv run artemis mcp --install all

启动脚本 start.sh / start.bat 运行时也会主动询问是否自动挂载全局 MCP 与测试行为准则,随时可以跳过之后手动补装。

4.2 手动配置示例

习惯手动配置的,可以用 uv run artemis mcp --generate-config <client> 生成对应格式,注意把 command 改成项目下 .venv 里 Python 的绝对路径。以 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"

Claude Desktop(claude_desktop_config.json):

{
  "mcpServers": {
    "artemis": {
      "command": "/path/to/artemis/.venv/bin/python",
      "args": ["-m", "mcp_server"],
      "cwd": "/path/to/artemis"
    }
  }
}

接入后 IDE 里可用的核心 MCP 工具有 5 个:mobile_run_task(下发任务)、mobile_manage_task(任务管理)、mobile_get_device_state(设备状态)、mobile_inspect_trace(检查执行轨迹)、mobile_diagnose(失败诊断)。

4.3 挂载测试思维准则 Rules(强烈建议)

光有工具还不够,AI 得像资深测试工程师一样思考,避免凭空臆测 UI 交互。官方提供了专属行为规范文件 mcp_server/rules.md,涵盖可运行代码原则与真机探索、Flash 与 Pro 任务路由策略、延迟与时间补偿机制、「动态优先、坐标兜底」定位模式。Claude Code 用户直接一条命令装到 ~/.claude/rules/artemis.md:

uv run artemis mcp --install claude

注意 Claude Code 会同时加载 ~/.claude/CLAUDE.md 和 ~/.claude/rules/*.md,装到单一位置即可,重复安装白白浪费上下文。

4.4 实战:Antigravity 全流程自主测试

接入后的完整链路是这样的——在 IDE 里输入测试提示词,AI 自动生成测试方案、驱动真机执行、最后交付结构化报告:

第一步:在 IDE 中用自然语言输入测试需求

第二步:自动拆解任务,生成测试步骤与架构图

第三步:驱动真机自主执行,实时分析性能指标

第四步:交付结构化测试报告,含图表与原始数据

最后给一句官方示例指令,感受一下画风:

“请帮我把刚刚修改的代码编译成 APK 并安装到手机上,打开登录页面输入测试账号,验证登录后是否有异常弹窗,并把最终页面截图回传。”

五、模型配置:一份 jsonc 切换四大模型

所有模型配置集中在 config/artemis.jsonc,全局默认是 gemini-3.8-flash,并内置了 5 套预设(presets),改一行就能切换:

预设名主模型Fallback
gemini-flagshipgemini-3.8-flashgemini-3.7-flash
gemini-flashgemini-2.5-flashgemini-2.0-flash
openai-gpt4ogpt-4ogpt-4o-mini
cost-savinggemini-3.5-flash-litegemini-3.1-flash-lite
local-ollamallama3.2-vision(本地)同左

除了全局默认,还能按智能体节点单独定制:Planner 用高思考档,Operator 输出思考流,日志分析和失败诊断节点默认开启搜索接地(grounding)。三个值得记住的细节:

  • 坐标定位节点必须用 ER 模型:配置注释里写得很明白,标准 LLM(包括常规 Gemini Flash、GPT-4o、Claude)缺乏亚像素级空间坐标微调能力,object_detector 节点必须用 gemini-robotics-er-2-preview 这类具身推理(Embodied Reasoning)模型,否则空间坐标检测会失败——这是自建配置时最容易踩的坑;
  • Explorer 三档感知深度:flash(一次性视觉检测,最快)、pro(3 轮循环:UI 树搜索 + 坐标审计 + 检测)、ultra(8 轮循环,加缩放、OCR 和像素级图像处理,最慢最准),通过 flash.explorer_mode / pro.explorer.mode 按运行档位设置;
  • 视频分析双路引擎:Gemini 系走原生 Files API,Claude / GPT-4o / OpenRouter 走通用多模型引擎(动态关键帧抽取 + 多模态工具调用),Pro 模式默认用 scrcpy 持续录屏。

六、Python SDK:接进 pytest 和 CI

如果要把 Artemis 塞进现有测试体系,官方提供了零运行时依赖的薄客户端 artemis-client:开发机只装客户端,ADB、Agent、模型调用全部留在设备主机上,天然适合「一台主机 + 多台测试机」的架构:

uv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client"
import asyncio
from artemis_client import ArtemisClient


async def main():
    client = ArtemisClient(
        "http://artemis-host:8000",
        device_serial="emulator-5554",  # 可选:不传则自动选择空闲设备
        default_profile="flash",        # "flash" 极速校验 或 "pro" 深度推理自愈
    )

    result = await client.run(
        "打开系统设置,进入『电池』页面,验证是否正常显示电量百分比,"
        "确认页面无异常报错弹窗。",
    )

    assert result.succeeded, f"测试执行失败: {result.error or result.status}"
    print(f"✅ 测试通过!设备: {result.device_serial} | Trace ID: {result.trace_id}")


if __name__ == "__main__":
    asyncio.run(main())

返回结果是基于 Pydantic 的强类型结构化对象,带 succeeded、status、error、device_serial、trace_id 字段,放进 pytest 断言或者 CI 流水线的步骤里都是现成的。

七、避坑清单:6 个高频问题一次说清

1. Artemis 会往我手机里装什么?安全吗?
首次执行任务时会安装 Artemis Accessibility Helper,一个读取屏幕布局的小型无障碍服务,不占用 UiAutomation 连接。它只监听手机本机回环地址,不向外发送任何数据。想提前装好(省约 3 秒)用 uv run artemis helper install,随时 helper status 查看、helper uninstall 移除,artemis doctor 做整体体检。

2. 不想让它自动装 Helper 怎么办?
在 .env 里设 ARTEMIS_HELPER_AUTO_INSTALL=false;想换回 UIAutomator2 读屏,设 ARTEMIS_HIERARCHY_BACKEND=uiautomator。Helper 中途失效时框架会自动回退到 UIAutomator2,并在任务时间线和最终报告里明确说明。

3. Flash 和 Pro 到底怎么选?
确定性高的常规 UI 校验(打开某页面、检查某状态)用 Flash,快且省;长程复杂业务流、探索性稳定性测试、需要书面报告的用 Pro。MCP 的 rules.md 里内置了路由策略,IDE 场景下 AI 会自己判断。

4. toast、下拉控制栏总点不到?
瞬态控件等不到下一轮模型响应,Flash/Pro 都会把多次点击串成 click_sequence 原子连发。如果你的用例涉及这类控件,优先让任务描述里明确「控件会快速消失」这类提示。

5. 自建模型配置后坐标全点歪?
九成是 object_detector 没用 ER 系列模型。标准视觉模型给不出亚像素级坐标,必须保留 gemini-robotics-er-2-preview 这类具身推理模型,除非你只走元素索引路线。

6. PowerShell 里运行 start.bat 报「无法识别」?
PowerShell 不从当前目录找可执行文件,写 .\start.bat(末尾别带 \);CMD 用户直接 start.bat。

八、总结

最后用一张清单收束全文:

  • Artemis 是什么:Google 开源的 Android 真机 AI Agent 框架,自然语言下发任务、AI 自主操作真机,AndroidWorld 基准 99%+ 完成率 SOTA;
  • 架构核心:无障碍树 + OCR + 视觉模型三层定位;Flash 响应式循环(3~5 秒/步)与 Pro 多智能体编排(计划 + Safety Net + Checker 终审)双模式;
  • 上手三步:git clone 后 start.sh / .\start.bat 一键装环境,CLI 一条 artemis run 跑通首个任务,Web 控制台可视化管理;
  • IDE 协同:artemis mcp --install all 把真机操作能力挂进 Claude Code / Antigravity / Codex 等 8 种 AI IDE,配上 rules.md 行为准则;
  • 工程化:artemis-client 薄客户端接 pytest / CI,Pydantic 强类型结果开箱即用;
  • 两个关键坑:坐标定位节点必须用 Gemini ER 系列模型;PowerShell 启动要写 .\start.bat。

项目路线图上还有 Android Studio 深度集成、iOS 跨平台、端侧轻量化模型和实时语音双工,值得持续关注。

参考资料:

  • Artemis 仓库:https://github.com/google/artemis
  • AndroidWorld 基准评测:https://github.com/google-research/android_world
  • MCP 测试思维准则 rules.md:https://github.com/google/artemis/blob/master/mcp_server/rules.md
  • 官方 Discord 社区:https://discord.gg/wF2FN4WHGY

写在最后:从「写脚本」到「下指令」,移动端测试的范式正在被 AI Agent 重写,而 Artemis 把门槛降到了一条 clone 命令。如果你已经在用 Appium 维护一堆脆弱脚本,不妨找个模拟器跑一跑 Flash 模式,评论区聊聊你的实测体验~

相关链接

名称链接
https://github.com/google/artemishttps://github.com/google/artemis
https://github.com/google-research/android_worldhttps://github.com/google-research/android_world
https://github.com/google/artemis/blob/master/mcp_server/rules.mdhttps://github.com/google/artemis/blob/master/mcp_server/rules.md
https://discord.gg/wF2FN4WHGYhttps://discord.gg/wF2FN4WHGY
Logo

更多推荐