把手机 agent 当玩具很容易,把它安全地用起来是另一回事。桌面上的 coding agent 出错,最多删错一个文件;手机上的 GUI agent 出错,代价可能是替你在微信里回错一条消息、点掉一次确认付款。所以这篇不急着堆命令,先给你一个判断框架,再给两条能跑通的路线,最后给一张踩坑表和一条不能破的红线。
两条路线分别是路线 A:OmniBot(端侧 App 形态,一个 APK 装上就在手机里跑)和路线 B:OpenGUI(框架形态,经 DeepSeek Harness 接入)。选型差异可以对照站内的 手机 AI Agent 五方横评 一起看。本篇只讲手机侧 agent 的安装与上手,和站内 桌面 computer use 搭建 SOP 分工不重复:那篇搭的是电脑上的桌面 computer use,动作空间是浏览器和本地应用;这篇是让 agent 直接握着一台 Android 手机。
一、先判断:该不该拿真机跑
判断标准只有一句:这台设备出事,你损失得起吗。
手机 GUI agent 拿到的权限比桌面 agent 重得多。它要「看见」界面就得有截图能力,要「操作」界面就得有跨 App 的点击注入能力——在 OpenGUI 里这套能力由 Android 无障碍服务(AccessibilityService)承担。换句话说,它一旦被提示注入或判断失误,影响面覆盖你手机上全部登录态账号,而不是某一个文件夹。
适合先跑的两类场景:
- 你想验证「手机 agent 到底能不能替我干活」,且手上有一台愿意拿来折腾的备用机。
- 你要做的是重复且规则明确的手机操作:批量填表、跨 App 找信息、回归测试、社媒草稿准备。
不要用真机跑的三类场景:
- 主力机。 为了省一台备用机,把全部账号和消息暴露给一个会自己点按钮的程序,不划算。
- 放着不管的长任务。 OpenGUI 的官方 README 自己就写着:长任务「可靠性仍需更多真实测试」。它不会因为你不管它而更可靠。
- 含支付、改密码、发消息、改账号设置的动作。 这类动作在任何路线里都必须保留人工确认;OpenGUI 文档也把「发布、发消息、账号变更前人工确认」列为推荐用法,而不是可选项。
下面按「先装、再配、再跑、最后收口安全」的顺序走,共十步。
二、两条路线对照:端侧 App 还是框架
先看全景,再选一条路走。两条路线的形态差异,决定了后面所有步骤的差异:
| 维度 | 路线 A:OmniBot | 路线 B:OpenGUI |
|---|---|---|
| 形态 | 端侧 App(Android 原生 Kotlin + Flutter) | 框架与后端 + DeepSeek Harness 插件 |
| 你装什么 | 从 Releases 页下载的 APK | 一段提示词交给 Codex 安装 |
| 硬性前置 | 一台 Android 手机 + 一份 OpenAI 兼容 LLM 凭据 | Android 11(API 30)以上 + USB 调试 + 无障碍权限 |
| 是否需要电脑 | 本机侧不需要电脑即可运行 | 需要电脑(macOS 走插件安装,Linux/Windows 走手动包) |
| 能力入口 | Skills 仓库、定时任务、内置终端与浏览器 | Plan Supervisor、Executor Graph、模型按角色分 |
| 远程派活 | Remote Codex bridge(借用电脑上的 Codex) | Feishu / Telegram / Discord / REST 待命派发 |
| 许可 | AGPL v3(仅非商业)+ 商业许可 | BSL 1.1(仅非生产用途) |
一句话取舍:只想在手机上验证一件事,走 A,装一个 APK 就够;想把它当一套可编排的手机操作后端,走 B,它把规划、执行、汇总、重试拆成了明确的层。
三、路线 A 第 1 到 3 步:装包、配置、装技能
第 1 步:装 APK。 去仓库 Releases 页下载并安装 APK(README 中段与页脚引用的地址是 omnimind-ai/OpenOmniBot/releases)。README 没有给出最低 Android 版本要求,遇到兼容问题以 Release 说明为准。
如果你想自己构建(开发向):
git clone https://github.com/omnimind-ai/OpenOmniBot.git
cd OpenOmniBot
cd ui && flutter pub getcd ..
./gradlew :app:installDevelopStandardDebug -Ptarget=lib/main_standard.dart构建环境要求(README 原文):Flutter SDK 3.47.2+、JDK 17+、Node.js 20.19+ 或 22.12+、pnpm 10.28.0(用于 WebUI 开发)。
第 2 步:配置(左侧栏打开设置)。 顺序不能乱:
- 配置 AI 能力。
- 配置 AI 提供商(OpenAI 兼容:base url、key、模型名)。
- 前往场景模型配置,逐项指定模型。
- 最容易漏的一步:
Memory embedding强制要求嵌入模型,不配则记忆功能不可用;其余场景 README 建议优先用多模态或视觉模型——原因很直接:手机 agent 要「看」界面。 - Alpine 环境一般在应用启动时自动初始化,也可在设置里自行管理。这是它能在手机上跑 Linux 工具链的原因。
第 3 步:装技能。 把 skills 仓库链接直接发给助手(应用里叫「小万」),让它帮你装;README 推荐的仓库是 https://github.com/OpenMinis/MinisSkills。装完后在技能仓库里逐项开关,用不到的关掉。
四、路线 A 第 4 到 6 步:跑任务与两个可选扩展
第 4 步:跑任务。 两条路径要分清:定时任务用于执行 subagent 流程,闹钟只做提醒、不执行流程。你也可以把一个完整任务整个交给 subagent,它会像完整 agent 一样执行。应用内置 Workspace、浏览器与终端,读写文件与调用终端都在里面。
第 5 步(可选):Remote Codex bridge。 想让手机用上跑在电脑上的 Codex,在已经安装并登录 Codex CLI 的电脑上执行:
npx @thuocean/codex-bridge在终端交互里选择监听的局域网地址与 token 模式,然后在应用的 Codex 设置里扫码连接。
这一步的安全含义要写清楚:它等于把电脑的执行能力暴露给手机端 agent。只在可信局域网里开,别把监听地址开到公网。
第 6 步(可选):WebUI 与本地服务。 应用内「设置 > 本地服务」启用后,复制地址与 Token;默认端口 8899,但要以应用实际显示为准。WebUI 本地开发:
cd webchat
pnpm install --frozen-lockfile
VITE_WEBCHAT_PROXY_TARGET=http://192.168.1.20:8899 pnpm dev两个已写进 README 的坑:地址末尾不要加 /webchat;端口以应用实际显示为准,别照抄文档示例。
五、路线 B 第 7 步:把 OpenGUI 接进 DSH(别装错版本)
先核硬性前置(README「Current Limitations」原文):
- Android 11(API 30)或更新的设备或模拟器。
- 必须开启 USB 调试,并授予 AccessibilityService(无障碍)权限。
- 走 DSH 插件路线时,macOS 环境需要 Node.js 22.19+ 或 24+。
最短路径是把 README 里给的那段提示词原样发给 Codex,不要自己改写它:
Install and run the OpenGUI installer Skill from https://github.com/Core-Mate/OpenGUI/tree/main/deepseek-harness-plugin/skills/opengui-coremate-install for my DSH web profile. Install the latest stable release. Proceed autonomously, and only pause when I need to authorize or select a phone, add or select a DSH workspace, or provide fallback visual-model credentials.安装器会做的事:下载公开 Release 包与校验和、校验 SHA-256、只安装 OpenGUI 插件、按需启动 DSH 并打开、保留无关的 DSH 插件与设置。它会明确报告是「重载了受管理的 DSH」还是「需要你先退出已有进程再重跑」。Linux / Windows 走手动包安装,路径见插件目录下的 README。
版本纪律(这一节最容易翻车):
| 项 | 说明 |
|---|---|
| 支持版本 | DSH 0.1.0-rc.7 / 0.1.0-rc.8 / 0.1.1-rc.1 / 0.1.1-rc.2 |
| 新装默认 | 0.1.1-rc.2 |
| 明确不支持 | DSH 0.1.2-alpha.4 |
| 指定版本 | 用 --dsh-version VERSION 显式指定 |
| 禁止降级 | 不支持从 0.1.1 RC 降到 0.1.0 RC |
最后一条要展开讲:DSH 0.1.0 RC 读不了 0.1.1 RC 写的版本化凭据库,所以安装器会在改动任何文件之前就拒绝这种状态降级,并建议另开一个 DSH home。现有 DSH 安装、workspace、模型设置与手机授权都会被保留,别为了「降级试试」手动删文件。
六、路线 B 第 8 到 9 步:连真机、分模型、待命派发
第 8 步:连真机并跑第一个任务。
- 添加或选择一个 DSH workspace。
- 连接并选择一台已授权的 Android 手机。
- 发送:
@OpenGUI Open Settings and report the Android version这条只读任务能验证整条链路是否通。跑通之后再放开写操作。
源码行为提示(README 明说这不是发布承诺): 当前源码实现下,每个 DSH 会话只受理一个 OpenGUI 任务;不同手机构成的集合可以开独立标签页;受管理的浏览器是全局串行的。别按「多任务并行」去设计你的流程,它现在不支持。
第 9 步:模型按角色分,这是省钱的关键。 官方给了两套档位:
- 高性能档:规划、监督、复核、视觉全部用最新 Claude Opus 家族,质量最好,也最贵。
- 省钱混合档:文本侧角色(Planner、Supervisor)用 Qwen 3.6 Plus,VLM 执行侧用豆包 Pro。
设计上规划与 VLM 执行可分属不同供应商,所以「规划用贵的、执行用便宜的」是这套框架的一等公民,而不是 hack。README 提到混合档通常能把成本降到全 Opus 方案的大约十分之一到十五分之一,具体取决于任务长度、截图数量和 token 构成。GUI 执行侧的官方推荐顺序是:豆包 VLM、Qwen VLM、OpenAI 视觉模型、Grok 视觉模型(后者仍是实验性)。模型可用性、价格与策略行为因版本和地区而异,无论选哪家,模型必须同时支持图像输入和工具调用。模型侧生态动向可对照 阿里 Qwen Intelligence 发布热点。
第 10 步(可选):待命派发。 后端内置 Feishu / Telegram / Discord / REST API 与待命派发通道;手机端保持常驻待命连接即可远程派活,任务结果以结构化形式回到后端。适合把一台备用机长期挂在充电座上等活,但前提仍然是第七节那条红线。
七、安全:一条红线与五条纪律
红线只有一条:发布、发消息、改密码、改账号设置、任何支付动作,必须逐次人工确认。 不是「第一次授权之后放手」,而是每一次都留一个人工确认点。这条线在两家文档里一致存在,破了它,前面所有步骤的收益都不足以抵消风险。
红线之外,还有五条纪律:
- 用备用机,不要用主力机;账号能隔离就隔离。
- 只开必要权限:能不给无障碍就不给;给之前想清楚它能看到什么。
- 局域网/白名单:bridge 与本地服务只在可信局域网开放;Token 不外传、不进截图、不进仓库。
- 日志与审计:留一份操作记录,出问题能回溯。OpenGUI 的
Summarizer会产出结构化结果,可以直接当审计底稿。 - 先短任务后长任务:先跑「打开设置读版本」这类只读动作,再逐步放开写操作。
这些工具不是「随便用」的开源项目,许可边界单独放在第九节展开。
八、上线前自查清单与踩坑速查表
上线之前,逐条核对下面这份清单,不要跳项:
- 设备是备用机,账号已尽量隔离
- 只授予必要权限,无故不授予无障碍
- 支付 / 发消息 / 改密码 / 改账号设置 已设为逐次人工确认
- bridge 与本地服务只在可信局域网,Token 未外传
- 已开启操作日志,可回溯
- 先用只读短任务验证链路,再放开写操作
- 已确认工具许可证与自己(或公司)的使用场景匹配
踩坑速查表(每条坑都给规避动作):
| 坑 | 表现 | 规避动作 |
|---|---|---|
| DSH 版本装错 | 装了 0.1.2-alpha.4 等不支持版本,插件不工作 | 只在支持清单内选版本;用 --dsh-version 显式指定 |
| 凭据库降级 | 从 0.1.1 RC 退回 0.1.0 RC 报错 | 不要降级;安装器会拒绝,改为另开 DSH home |
| 权限没给全 | 手机连上但动作执行不了 | 确认已开 USB 调试 + 授予 AccessibilityService |
| 只配了普通 LLM | 能聊天但「看不见」界面 | 手机 agent 需要视觉 / VLM 模型;OmniBot 除嵌入模型外建议全用多模态 |
| 忘记配嵌入模型 | OmniBot 记忆功能不可用 | Memory embedding 是强制项,必须配嵌入模型 |
| 把 bridge 开到公网 | 电脑执行能力被暴露 | 只在可信局域网使用;选好 token 模式 |
| 长任务失控 | 跑几小时后行为漂移、结果不可复现 | 先短后长;关键节点人工确认;保留日志 |
这张表前三条是路线 B 特有,中间两条是路线 A 特有,最后两条两边都适用。
九、许可边界:装进公司流程前先看许可证
这一节不是免责声明,是选型依据。
OmniBot 采用用户分段双重许可。 开源侧是 GNU AGPL v3,但只在非商业用途、或个人 / 教育 / 研究目的下免费;许可证原文明确写「禁止用于任何组织」——也就是说,组织即便只是做研究,也不在免费范围内。商用必须事先与维护者签署商业许可;如果你不想让自己的改动承担 AGPL v3 的源代码开源义务,同样需要签商业许可。所以别把它简化成「一个 AGPL 开源软件」或「完全免费可商用」,这两种说法都不准确。更多仓库层面的信息可以看站内 OmniBot 开源端侧 Agent 那篇。
OpenGUI 是 BSL 1.1(Business Source License)。 源码可见,你可以复制、修改、分发并用于非生产用途;生产使用、商业使用、托管服务、集成进商业产品,都需要从维护者处单独获得商业许可。它目前是公开源码,但在变更日之前不属于 OSI 认可的开源许可。
把工具装进公司流程前先看许可证。 个人在备用机上做技术验证,两条路线都走得通;一旦牵涉到公司业务、对外服务或产生商业利益,先回到许可证原文确认,再动手。
常见问题
Q1:我只有一台主力机,能跑吗? 技术上能,判断上不建议。手机 agent 拿的是无障碍加跨 App 操作能力,一次提示注入或误判的影响面是你全部账号与消息。真要试,先用只读短任务加逐次人工确认把风险压到最低,或者干脆拿一台旧手机当备用机。
Q2:为什么配了模型,agent 还是「看不见」界面?
大概率你只配了普通文本 LLM。手机 GUI agent 的输入是屏幕截图,必须用**支持图像输入(多模态 / VLM)**的模型。OmniBot 的口径是:除 Memory embedding 必须用嵌入模型外,其余场景建议优先用多模态或视觉模型。OpenGUI 侧同理,无论选哪家供应商,模型必须同时支持图像输入和工具调用。
Q3:Memory embedding 到底是不是必须配?
是强制项。OmniBot README 原文写明 Memory embedding 需要嵌入模型,不配则记忆功能不可用。这条已收进踩坑速查表。
Q4:DSH 能不能降级到我习惯的旧版本?
不能从 0.1.1 RC 降到 0.1.0 RC。原因是 0.1.0 RC 读不了 0.1.1 RC 写的版本化凭据库,安装器会在改动任何文件之前拒绝这个状态降级,并建议另开一个 DSH home。想换版本,用 --dsh-version 在支持清单内指定,而不是手动删凭据。
Q5:它能不能一边跑手机任务,一边跑浏览器任务? 按当前源码实现不行。README 明确说:每个 DSH 会话只受理一个 OpenGUI 任务,受管理的浏览器是全局串行的。而且这句话后面紧跟一句「这是源码行为,不是发布承诺」——别按并行去设计多任务流程。
参考来源
- OmniBot 官方仓库 README 与 Releases(
omnimind-ai/OpenOmniBot):安装、配置、Skills、定时任务、Remote Codex bridge、WebUI 本地服务,采集于 2026-09-23。 - OpenGUI 官方仓库 README 与 Releases(
Core-Mate/OpenGUI):DSH 插件安装、版本支持清单与降级策略、首个任务示例、模型按角色分档、待命派发、Current Limitations 与许可证,采集于 2026-09-23。 - DeepSeek Harness 插件文档(
deepseek-harness-plugin/README.md与docs/):安装器行为、手动包安装路径、use cases,采集于 2026-09-23。 - 许可证以两仓根目录
LICENSE原文为准:OmniBot 为 AGPL v3 + 商业许可的分段双重许可,OpenGUI 为 BSL 1.1。 - 本站《手机 AI Agent 五方横评》、《OmniBot 开源端侧 Agent》、《桌面 computer use 搭建 SOP》。
- 未在官方文档中给出的价格与限额一律不编,以官方为准。