ARTICLE · 1048508
【GitHub】Google 开源安卓自动化框架:99% 跑分,源码归属起争议
安卓自动化测试这件事,Google 上个月开源了一个新框架 ARTEMIS,官方跑分 99%+。先别急着收藏,这个数字和这个项目,都有需要拆开看的地方。

{它把手机接进了 IDE}
ARTEMIS 的定位一句话说得清,让 AI 助手和测试套件像人一样操作真机。你给一句自然语言,它驱动安卓设备点、划、输入,顺手把 Logcat 和截图收回来。
一条命令接进编辑器
它内置原生 MCP 服务,跑一句 uv run artemis mcp --install all,就能把真机接进 Antigravity、Cursor、Claude Code、Codex、Windsurf 这些编辑器。 装好之后在聊天框里直接派活:
把最新改动打成 APK,装到连接中的设备,用测试账号打开登录页,验证登录后有没有意外弹窗,并返回最终页面的截图。
模型不绑一家,GEMINI_API_KEY、OPENAI_API_KEY、ANTHROPIC_API_KEY、OPEN_ROUTER_API_KEY 都能配,也能指向本地 ollama。
规则文件比 MCP 更值钱
比 MCP 接口更值得看的,是它同时塞进编辑器的一份规则文件 mcp_server/rules.md,13KB 全是移动测试的方法论。
定位策略坚持「动态优先、坐标兜底」,能用资源 ID 和文本就不写死坐标,坐标只做兜底。
写测试代码之前必须先用它探索目标应用,不许假设交互怎么走。文件里还有一组诚实的数字,Flash 单步约 5 秒,Pro 单步约 30 秒。所以要等 30 秒的场景,让 Flash 等 25 秒就够。

{Flash 和 Pro 是两套东西}
它的两个档位,是两套不同架构。
Pro 档有个工程决策值得记一笔。动作被拦截或者失败时,它不另起一个「修复 agent」,而是在 Operator 的上下文里留一条执行事故记录,连着失败次数一起摆着。
直到后面某次动作跑通,这条记录才消掉。 责任留在同一个角色的上下文里,比拆一个新 agent 去救火省事。
Flash 的局限官方自己写在 README 里,没有计划、没有安全网、没有检查点验证、没有最终报告,也不能用 ADB shell。想跑长流程,或者要一份能交出去的诊断报告,就得切 Pro。
{99% 这个数字,要拆开看}
AndroidWorld 是 Google Research 自己做的基准,116 个任务、20 个真实应用,按执行后的设备状态判分。ARTEMIS 官方口径是 99% 以上的完成率。这个分数有三重限定。
第一,跑分和被跑分的工具出自同一个组织,仓库里没有引用任何第三方复现。第二,AndroidWorld 上人类操作员大约 80%,头部 agentic 框架普遍已经在 90% 以上,99% 高出的那一点没有形成代差。
第三层更该看,换一套更难的基准,成绩就掉下来了。
短任务、单应用,这类工具已经能用了。长流程、跨应用,它还是会掉链子。 而且上面所有跑分都跑在模拟器上,指纹、真机相机、支付面板、wifi 掉蜂窝,一个都没碰过。
{代码从哪来,账还没结}
这一段可能比跑分更值得你花两分钟。
ARTEMIS 仓库 README 的最后一行写着:
This project includes source code developed by Minitap, Inc.
这句话是投诉之后才补上的。2026 年 9 月 11 日,一家叫 Minitap 的公司在 ARTEMIS 仓库里开了 issue #40,讲得很具体。
初版 pyproject.toml 里带着他们项目 mobile-use 的版本号 3.6.3,还有三位原作者的名字,却挂着 Google LLC 的版权头。后来一个提交只改了这一个文件,把三个名字换掉,另外 228 个文件原样没动。
我拉下源码看了一眼,现在 artemis/clients/adb_tunnel.py 的文件头是两段版权声明,Google 的在前,紧跟着一句 Portions of this file are derived from mobile-use,署名 Minitap。9 月 12 日确实有一条提交专门补版权头,提交信息里写着「per Apache 2.0 requirements」。
但 issue #113 到今天仍然开着,没人回。它讲的是 Apache 2.0 第 4(d) 条,上游项目带了 NOTICE 文件,转发方就得把里面的署名声明一起带上。ARTEMIS 有 LICENSE,没有 NOTICE。 Google 至今没有公开回应。
说实话,这件事没有定论。但文件头和提交时间线都公开可查,建议自己去翻一遍再决定要不要用。
{装到你手机上的是什么}
第一次跑任务,它会在手机上装一个 Artemis Accessibility Helper,一个读屏幕结构的无障碍服务,好处是不去抢 UiAutomation 连接。
官方说法是它只在手机本地监听,不外发任何东西。这句话同样只有项目自己背书。
不想留就给三个开关。uv run artemis helper uninstall 卸载,ARTEMIS_HELPER_AUTO_INSTALL=false 禁止自动安装,ARTEMIS_HIERARCHY_BACKEND=uiautomator 换回 UiAutomator2。
还有一条安全 issue #99 报了个命令注入,还没修。ARTEMIS_NOTIFY_CMD 的模板替换没做 shell 转义,而填进去的任务描述是外部可控的。生产环境用之前,别配那个通知脚本。
{想试的话}
需要 Python 3.12+,一台开了 USB 调试的安卓机或者一个模拟器。
git clone https://github.com/google/artemis.git && cd artemis
./start.sh
Windows 下换成 .\start.bat,那个点别漏,PowerShell 默认不从当前目录找脚本。装完浏览器会打开 localhost:8000,里面有设备连接向导、实时投屏和一个提示词沙盒。
也可以直接命令行派活:
uv run artemis run "Open Settings, find Battery and tell me current level" --profile flash
截至今天,这个仓库 6583 star、590 fork,Apache-2.0 协议,贡献者只有 6 个人,从建仓到现在一个月零四天,还没发过任何正式 Release。
顺手去 GitHub 给它点个 Star 吧,把真机接进 AI 编辑器这个方向值得盯着看。真有移动测试需求,建议先拿自己项目的回归用例跑一遍,别拿那个 99% 当验收标准。
#开源 #Google #安卓自动化 #MCP #AI测试 #开源项目 #ClaudeCode #AI
artemis
Let AI assistants and test suites use real phones like a human.
https://github.com/google/artemis
{ 感谢阅读 }
如果本文对您有帮助,欢迎 “点赞“,点“推荐”