Andee —— 让 AI 住进手机:一个 APK 操控所有 App
你有没有觉得,手机里的语音助手喊了这么多年,还是停留在「帮你打开 App、点两下」的阶段?
最近在 GitHub 上看到一个项目,想法完全不一样——它不是给手机「加一个助手」,而是让一个 AI 直接住进手机里。上线一个多月,已经 2.2k Star。
它叫 Andee。
它是什么
装一个 APK,不用 root,不用刷机。装好之后,手机屏幕上会多出一个会变表情的悬浮球——这就是 Andee 的「脸」。
它通过安卓的无障碍服务读屏、点击、输入,能操作手机上的任何 App:不需要 App 提供接口,不需要厂商适配。你动嘴(或者打字、给它看照片),它动手:看消息、查订阅、录会议、到点帮你抢名额……只要你的大拇指能做到的事,它都能做。
它和手机自带助手有什么不一样
1. 大脑在本地,模型随便换
它的 Agent 循环直接跑在手机上,接任何 OpenAI 兼容的接口——英文界面默认 OpenAI,中文界面默认 DeepSeek,你也可以指向任何自己的模型服务。没有厂商后端,不用注册账号。检查更新时它只往外发两个字段:版本号和手机型号。
2. 记忆只留在手机里
它有一个只属于自己的「笔记本」:你的习惯、它答应过你的事,都记在本地,标记为 localOnly,不会进入任何上报数据。而且完全透明——「它记住了什么」里每一条都能看、能删。
3. 它有性格,不只是皮肤
6 种外观、19 种表情,悬浮球的脸是用 OpenGL 手绘的。最有意思的是,表情由模型自己挑、还能说到一半换脸:前半句开心、后半句平静,脸跟着语音一起变。滑动悬浮球就能换一个人格,连说话的语气和声音一起换。
4. 没人看着的时候,它也不乱来
对话结束后,它会自己复盘一遍刚才的对话(不出声、不碰手机):把没兑现的承诺补上,把重复出现的活儿记下来。通知来了也不是每条都吵你——先用一个便宜的小模型分拣(一次约 500 token):该办的办、该说的用一句话说、其余的默默记下原因,天生倾向于沉默。
它是怎么「操作手机」的
这部分是工程师会喜欢的细节:
- 读屏:优先读无障碍树,生成一份带编号的元素大纲,模型按编号点;遇到小程序、WebView、游戏这种自绘界面,退回截图模式。
- 不算坐标:通用模型最不擅长的就是算坐标。它的做法是给截图罩一层 8×12 的标注网格,模型报「格子 + 格子内的三分之一」来定位,遇到小目标还会放大、用红色十字线预览落点再下手。
- 防手抖护栏:同一个位置连点三次还不行,第四次会被直接拒绝并停下来问你——而不是被带偏了还一直猛戳。
- 打字不用换输入法:Android 13 以上,它走无障碍自带的输入通道往聚焦的输入框里写字,你自己的键盘照常保留。
安全边界写在代码里,不是写在提示词里
这一点我觉得是整个项目最值得说的。
让 AI 替你操作手机,最怕的就是它被页面上的一句话「说服」。Andee 的关键边界不在提示词里,而在调度器(dispatcher)层面硬编码:
- 付款、预订这类操作,它会把表单填到最后一个按钮之前停下,确认永远留给你;
- 绝不输入支付密码;
- 陌生人发来的通知,解锁不了它的保险库,也给不了它新权限——通知触发的轮次在机制上就被禁止碰保险库;
- 保险库用安卓 Keystore 的 AES-GCM 加密存账号密码,模型可以把密码「打进输入框」,但没有任何工具能把密码读出来,哪怕打码的也不行。
场景(Scenes):把重复的活儿沉淀下来
它把长期任务叫做「场景」:一个目标 + 一种语气 + 一套例行流程。开箱带了四个现成的,点 Adopt 就能用:
- 盯消息:跨所有聊天 App 读通知,只把真正需要你的拎出来,一人一行;群聊、广告、公众号保持安静,陌生链接和验证码会被点名可疑、绝不点开。
- 查订阅:把你每月的订阅列出来、总金额放最上面,然后逐个问你:取消 / 保留 / 再想想——停在最后确认之前。
- 录会议:举着麦克风录一小时,散会直接给你一页纪要:决定、待办、未决问题、关键原话。
- 开售即订:到你定的时间自己打开 App、读页面、填好一切,只差最后一个按钮。
不止现成的:同一种活儿重复出现几次,它还会主动提议把它固化成新场景——但必须你点头才保存。
一个彩蛋:它的「身体」不止是手机
在 Andee 的设定里,手机只是它今天穿的身体:摄像头是眼睛,麦克风是耳朵,无障碍是手——甚至还能通过一个 USB 小硬件(Arduino Nano + NRF24L01)驱动一只机器狗,当作它的一条腿。「走到厨房看看台面上有什么」这种指令,它能一边移动、一边用摄像头看,在一个任务里完成。大脑本身也是可拆的:可以跑在设备上,也可以放在别处通过 WebSocket 连回来——工具协议是明文的工具 schema 契约,换身体不用重写大脑。
顺带一提工程上的倔强:4.3 万行 Kotlin,故意不用 Compose、不用依赖注入框架、不用协程——悬浮层放不了 Compose,UI 全是手写 View。这种「反潮流」在 README 里都写明了理由。
怎么上手
- 要求:Android 11 及以上,真机(模拟器能跑,但没什么意义)。
- 最省事:项目推荐了 CodeFlying 的一键打包页(中文站 codeflying.net),描述一下想要的样子就能拿到配好 Key 的安装包。注意这是第三方平台、和项目本身无关,免费额度用完后要付费。
- 自己动手:到 Releases 下载官方附带的 debug APK,自己填两个 Key——大脑 Key(必填,任何 OpenAI 兼容接口)和语音 Key(可选,火山引擎或 Google,不填就只是不能语音)。装好后按顺序授予「悬浮窗」和「无障碍」,悬浮球就会出现。
- 自己编译:JDK 17–20 + Android SDK 34,仓库里有完整的 Provisioning 文档。
丑话说在前面
项目自己在 README 最前面就写了免责声明,我原样转述要点:这是实验性项目、无担保。它确实能以你的名义发消息、完成付款,它做的事后果由你承担(包括转错人)。另外别误读「数据不出手机」:不出设备的是它的记忆和厂商后端这两块;你的语音会发给你选的语音服务商,对话会发给你配的模型接口——这和所有 AI 应用一样,心里有数就行。
写在最后
这两年「手机 Agent」的概念讲了很多,但大多停在演示视频里。Andee 让我眼前一亮的地方,不是它能点多少下,而是它认真回答了一个问题:一个住在你手机里的 AI,凭什么值得信任? 答案是——记忆不出门、边界写进代码、所有行为可查可删。这种把「克制」做进架构里的做法,比多几个功能更难得。
感兴趣的话,去给它点个 Star,或者装到备用机上先试试。