他打下一句话:“打开Facebook,发一条‘I love programming’,红色背景。”手机自己打开了应用,挑好红色背景,敲完文字,然后停住——等他点头,才按下发布。

打开网易新闻 查看精彩图片

没有脚本,没有为每个应用单独写适配。就一句话。这个项目叫 Eccles Agent,一个开源的 Android 应用,替你去操作手机。

作者说,只要人能在屏幕上做的事,Eccles 都会试着做。在他自己的测试里,它打开快捷设置找到手电筒开关并点下去;在 Facebook 里选背景色、输入文字完成发帖;找到联系人、打开对话、按下拨号键;对着后置摄像头说“拍一张我笔记本的照片”,它打开相机按下快门;甚至能在 Android 拒绝从后台启动应用时,依然把应用打开。

它的做法不复杂:模型返回一串小的 JSON 动作,Eccles 照着执行。动作清单包括打开应用、点击、轻触、长按、滑动、输入、按键、滚动、等待。比如模型会先“想”一句“Facebook 已经打开,输入框是第 7 项”,然后给出点击第 7 项、输入文字两条动作。

脑子可以自己换

它不绑定某一家模型。默认用 Google Gemini,也可以换成 OpenAI、Anthropic Claude,或者任何兼容 OpenAI 接口的服务——OpenRouter、Groq、DeepSeek,甚至本地跑的 Ollama、LM Studio。在设置里切换,点一下测试连接就行。API Key 用 AndroidKeystore 的密钥加密,不会以明文躺在偏好设置里。

这里有个容易被忽略的细节:Android 经常在什么都没发生时,也回报“点击已执行”。Eccles 只在界面真的产生反应时,才算一次动作成功。没反应,它会重新截屏、重新规划,而不是盲目重试,把“点赞”点成两次。截图也不是每步都发给 AI——只有界面结构信息不够用时才发,而且由你决定是“从不发”“需要时发”还是“每一步都发”。

能点任何东西,就得有硬性的“不行”

作者把安全写进了架构,而不是做成一个开关:

  • 银行和支付类应用被彻底排除,不读取、不截屏、不发给 AI,这道防线是失败即关闭的。
  • 遇到密码界面,任务直接停止。
  • 发送、发布、删除、购买,都需要你点“允许”;60 秒内不回答,按拒绝处理。
  • 一个悬浮的停止按钮,浮在所有应用之上。

安装上有个 Android 13 之后的坑:Eccles 是无障碍服务,从浏览器装的 APK 会被灰掉,提示“受限设置”。解决办法是进设置 → 应用 → Eccles Agent → 右上角菜单 → 允许受限设置,再把服务打开。也可以用电脑执行 adb 安装。README 里两条路径都写了,还附了 SHA-256 供核对下载文件。

作者也没藏着短板:这是 AI 在驱动界面,它会出错,得盯着时间线、把停止按钮放在手边;任务期间屏幕上的内容会发给你选定的 AI 服务商;有些应用会对无障碍隐藏;它还没上 Google Play。

这个项目是他一个人在一台低端 Chromebook 上、零预算做出来的。他在文末留了个问题:一个这样的 Agent,最不该被允许做什么?