OpenGUI 是一个让 AI 操作真实 Android 手机的项目。
项目地址:https://github.com/Core-Mate/open-gui
OpenClaw 把 AI 接到桌面环境,OpenGUI 则把类似的执行层放到了 Android 手机上。它面向的是手机 App 里的任务:点击、输入、截图、阅读页面、执行流程、返回结果。
很多任务天然发生在移动端:X、Reddit、Hacker News、Telegram、微信、小红书,还有不少只在 App 内完整存在的业务流程。网页自动化覆盖不到这些场景。
基本架构
OpenGUI 由后端和 Android 客户端两部分组成。
后端负责理解任务、生成计划、监督执行和总结结果;Android 客户端连接后端,在真实设备上执行 GUI 操作。除了点屏幕,它还要处理任务状态、设备状态和失败后的恢复。
仓库里能看到几块代码:
- 后端的任务规划、Executor Graph、复核和总结
- Android 端的 AccessibilityService 动作执行
- 设备通过 WebSocket 保持连接
- 飞书/Lark、Telegram、REST API 等远程触发入口
这样跑起来后,手机可以保持待命,像一个远程 worker 一样接任务、执行任务、回传结果。
本地启动
本地需要先准备 Android 开发环境,并连接一台 Android 设备。
启动后端:
cd server
./start.sh
启动 Android 客户端:
cd client
./start.sh
后端脚本会准备依赖服务、数据库和 API;客户端脚本会构建 APK、安装到连接的 Android 设备上,并启动应用。
手机侧还需要手动确认 USB 调试、Accessibility Service、悬浮窗权限,以及模型 API Key / 机器人凭证等。权限授权这部分保留人工确认更合理。
难点在哪里
手机 Agent 的麻烦通常出现在后续状态处理上。点一下屏幕只是开始。
比如一个很简单的任务:
打开 X,搜索 mobile AI agents 相关的近期讨论,收集主要观点,并总结大家主要关心的问题。
这个任务看起来不大,但手机上会发生很多不确定的事情:App 可能停在旧页面,搜索框可能没点中,结果页可能加载慢,中间还可能弹出登录、权限、推荐关注之类的窗口。
所以 Mobile Agent 不能只会“看图然后点一下”。它还要知道任务做到哪一步了,当前屏幕是不是符合预期,点错之后怎么恢复,页面没变化时要不要重试,最后怎么把执行结果收回来。
我实际跑了一下,也仔细看了 OpenGUI 的源码。它的思路还挺不错:后端 graph 管任务状态和计划,Executor Graph 负责把具体步骤派到手机上,Android 端通过 AccessibilityService 执行动作,再通过 WebSocket 把设备状态和执行结果传回来。
这会把手机放进执行循环里。后端判断任务要继续、重试还是结束;手机端把真实屏幕和动作结果反馈回来。
这套设计比单纯写脚本靠谱得多。手机可以待命、执行、反馈,更接近一个移动端 worker。
我能想到的第一批用途,是社区信息收集、移动端流程测试、运营任务执行,以及那些网页自动化碰不到的 App-only 流程。
Top comments (0)