OpenCode Mobile
在安卓手机上连接自托管 OpenCode,随时运行和审阅 AI 编码会话。
- Star 数
- ★ 286
- 最近更新
- 1 天前
- License
- MIT
- 主语言
- TypeScript
- FA 评分
- 71/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 已经在笔记本电脑或 VPS 上运行 OpenCode 的开发者,希望离开工作站后通过安卓手机继续查看和回复编码会话。
- 不适合
- 需要 iOS 或 iPad 的用户,目前只有 Android 版本
- 不愿自行搭建并维护 opencode 服务器的团队
- 源码审查
- 71/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
OpenCode Mobile 是面向 OpenCode AI 编码代理的独立开源安卓客户端,采用 React Native 和 Expo 构建。它通过 HTTP 与 SSE 连接用户自行运行的 OpenCode 服务器,可列出、创建和恢复会话,并逐 token 接收代理回复。应用提供文件差异查看、工具调用审批、多服务器连接和生物识别保护,但实际的模型调用与代码操作均由远端 OpenCode 服务器执行。用户自行配置 OpenAI、Anthropic 等模型供应商的 API 密钥;客户端不会接触这些密钥,也不会通过项目方服务器中转代码或对话。它适合已经愿意维护 OpenCode 服务端、需要从安卓设备远程处理编码会话的用户,不适合需要 iOS 客户端、完全托管服务或离线执行真实编码任务的团队。
应用保存并管理多个 OpenCode 服务器连接,可使用局域网地址、Cloudflare Tunnel、ngrok 或 Tailscale 地址。连接后,它调用 OpenCode HTTP + SSE API 来列出会话、创建或恢复会话、发送消息、流式接收回复,并订阅文件变更事件。界面把代理产生的文件修改显示为行内并排 diff,并在工具执行前让用户批准或拒绝调用。服务器凭据通过 expo-secure-store 存入 Android Keystore;应用和单次消息发送还可受设备生物识别验证保护。真正的 AI 模型请求、代码访问和工具执行发生在用户运行的 opencode 服务器上,结果以回复、文件差异和审批请求的形式返回手机。
- 已经在笔记本电脑或 VPS 上运行 OpenCode 的开发者,希望离开工作站后通过安卓手机继续查看和回复编码会话。
- 通过 Tailscale 连接开发机器的个人开发者,需要在可信私有网络中检查代理回复、文件修改和工具权限。
- 使用 Cloudflare Tunnel 或 ngrok 暴露自托管服务的团队成员,希望从移动设备管理多个 OpenCode 端点。
- 需要在执行前人工检查代理工具调用的开发者,可在手机上批准或拒绝请求并查看对应 diff。
- 正在评估产品的用户,可先运行约 30 秒的离线演示,在没有服务器的情况下体验推理、grep、diff 和权限提示流程。
如何安装或部署这个 Agent?
仅支持 Android。可从 Google Play 安装包 cc.agentlabs.opencode;也可在 F-Droid 客户端进入“设置 → 软件源 → +”,添加 https://dzianisv.github.io/opencode-mobile/fdroid/repo 后安装;或从 https://github.com/dzianisv/opencode-mobile/releases/latest 下载签名 APK 手动安装。来源所列当前版本为 v0.4.7。若要运行真实会话,还需在自己的机器上安装并启动 OpenCode:
npm install -g opencode-ai
OPENCODE_SERVER_PASSWORD=yourpassword opencode serve --hostname 0.0.0.0 --port 4096请把 yourpassword 换成自己的服务器密码。iOS、Apple App Store 和 IzzyOnDroid 当前均不可用。
如何使用这个 Agent?
首次体验可以打开 Sessions 页面并点击“Try a Demo”,无需服务器即可播放脚本化的错误修复流程。要连接真实项目,先用 OPENCODE_SERVER_PASSWORD 启动 opencode serve,然后在应用中点击“Add Connection”。选择 Local network、Tunnel 或 Tailscale,并输入服务器地址,例如 http://192.168.1.100:4096、https://my-opencode.trycloudflare.com 或 http://100.x.x.x:4096,再输入启动服务器时设置的密码并点击“Connect”。连接成功后,可浏览、新建或恢复会话,发送编码请求,观看流式回复,检查文件 diff,并批准或拒绝工具调用。模型供应商的 API 密钥应配置在 OpenCode 服务器侧,而不是移动客户端中。
这个 Agent 有哪些优点和局限?
- 移动端覆盖完整的会话循环:消息流式传输、文件 diff 展示以及工具调用批准或拒绝,而不只是简单的聊天界面。
- 支持局域网、Tailscale、Cloudflare Tunnel 和 ngrok,并能管理多个 OpenCode 服务器连接。
- 模型 API 密钥留在自托管服务器,客户端不会通过项目方服务器中转代码或对话。
- 凭据存放于 Android Keystore,生物识别可保护应用和单次消息发送。
- 提供无需服务器的离线演示,方便在部署后端前验证主要交互方式。
- 只提供 Android 版本;iOS、Apple App Store 和平板专用布局尚不可用。
- 真实编码会话依赖用户安装、配置并维护可通过网络访问的 OpenCode 服务器。
- 远程使用可能需要部署和保护 Tailscale、Cloudflare Tunnel 或 ngrok,增加网络配置与安全责任。
- 离线会话历史仍在规划中,当前离线模式只是脚本化演示,不能替代真实代理执行。
- Cloudflare/ngrok 隧道向导仍为 Beta,托管式 opencode Cloud 也尚未发布。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| OpenCode Mobile 当前 | 71 · 存在缺口 | 桌面应用免费 + 模型费 | ★ 286 | 1 天前 | TypeScript | OpenAI API · Claude API |
| CC-Connect | 60 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 16k | 2 天前 | Go | Codex · Claude Code |
| Kandev | 74 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 1.1k | 今天 | Go | Codex · Claude Code |
| Forge:自托管 LLM 工具调用的可靠性层 | 49 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 2.3k | 4 天前 | Python | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README清楚说明移动端、用户自托管的opencode服务器和模型提供商之间的HTTP/SSE数据流,并称模型密钥不经过应用服务器;凭据使用系统密钥库,崩溃报告声明为默认关闭且需选择加入。工具调用具有批准或拒绝界面,生物识别也可保护单次发送,因此普通使用中的确认和外部影响控制较明确。扣分原因是材料没有展示Android权限清单、批准机制的实际执行代码、证书校验策略或完整数据保留细节;package.json包含PostHog依赖且构建注入PostHog密钥,与“无分析SDK”和“不收集个人数据”的表述存在张力。依赖版本多数受约束且CI构建来源版APK,但未见漏洞扫描、依赖更新政策或锁文件证据。差异查看和拒绝工具调用有助于预防变更,但没有展示提交后回滚或恢复机制。独立项目身份、上游opencode、Expo、公司版权及MIT许可归属说明充分,未知的注册身份本身未被当作风险。
CI包含类型检查、单元测试、Android构建和基于模拟服务器的激活E2E,并明确覆盖401可见错误及若干跨目录、差异和选择器流程;依赖的服务器、Android版本和安装渠道也有清楚说明。扣分主要来自自洽性:README反复称当前版本为0.4.7,而package.json为0.4.15;README称没有分析SDK,但依赖和构建配置包含PostHog。E2E注释还承认部分新流程非阻塞、从未在CI完整跑通,以及SSE回复断言因测试环境问题被省略。负面认证流程支持错误消息得分,但未提供更广泛的超时、断网、服务器协议不兼容等用户错误处理证据。
目标受众和场景界定充分:Android用户通过局域网、Tailscale、Cloudflare Tunnel或ngrok连接自托管服务器,并可先使用离线演示。材料明确区分已稳定、测试版、计划中和不可用功能,也说明这是薄客户端而非模型或托管后端,因此能力边界较强。工具调用批准、连接测试和生物识别发送保护体现一定触发精度,但未提供相关生产代码,无法确认所有高影响操作都经过相同门控。环境适配覆盖多连接、目录范围和多个分发渠道,但仅支持Android,平板布局和离线历史尚未完成,且真实服务器兼容性范围没有版本矩阵。
README结构清楚,包含安装、快速开始、架构、状态、路线图、隐私、贡献、支持和许可;三种Android安装路径及服务器启动步骤足以支持普通上手。已明确列出iOS缺失、隧道向导为测试版、离线历史和平板布局尚未实现,MIT正文和版权信息完整。扣分在于版本命名不稳定:README为0.4.7而包元数据为0.4.15,包名@opencode-ai/mobile与“不隶属opencode”的说明也可能造成身份混淆。存在示例和离线演示,但没有系统FAQ或故障排除章节。工作流可生成发布说明,但材料没有CHANGELOG或版本迁移说明。维护公司、赞助入口、支持邮箱及项目看板均有列出,不过发布者企业身份未获策展注册验证,且未展示明确的安全响应责任或支持时限。
流式对话、会话恢复、内联差异、工具批准和跨目录会话管理直接面向移动编码工作流;离线演示还降低了首次评估成本,因此输出呈现和可操作性较强。相对单纯远程终端,专用差异、权限和会话界面提供了明确增量价值。扣分是产品仍依赖用户运行并保护opencode服务器、配置网络通道和承担模型费用;部分隧道体验仍为测试版,离线历史及托管云尚未交付。应用本身免费且安装选择多,但总体成本收益仍取决于服务器、模型和安全网络配置。
不少声明能在所给材料中相互追踪:package.json给出依赖与脚本,工作流具体展示测试、构建、签名和F-Droid变体,模拟服务器注释与端点实现共同说明测试协议。扣分是README的隐私与版本声明和包及构建配置并不完全一致,而且没有提供隐私实现代码、权限清单、锁文件、发布产物证明或测试结果,所以不能完全核实。跨来源对功能、构建和测试有一定印证,但并非所有宣传性声明都有独立文件支持。对模拟服务器、真实服务器、非阻塞测试、CI环境限制、测试版及计划功能的区分非常明确,因此事实、推断和未来计划的分离表现较好。
- 在信任隐私声明前,应核对PostHog的初始化、选择加入逻辑、事件字段和禁用路径;当前依赖及构建密钥与README的“无分析SDK”表述不一致。
- 应确认0.4.7与0.4.15哪个对应所评审修订及已发布APK,并核验各安装渠道的签名、源码对应关系和更新路径。
- 工具批准界面不等同于服务器端强制隔离;连接拥有代码修改能力的服务器前,应验证真实opencode配置、权限策略以及拒绝和恢复行为。
- 局域网或Tailscale示例使用明文HTTP;不要经不可信网络直接暴露服务器,应采用认证、受控隧道和传输加密。
- 所给E2E工作流明确存在非阻塞流程和未断言的SSE回复路径;静态材料不能证明真实设备上的完整流式交互或故障恢复。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
What's Changed * docs: move repo docs to Notion, delete from repo (#221) by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/222 * docs: repoint dangling prose pointers to migrated docs (Notion) by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/225 * Fix dangling prose pointer in docs/playstore.md to migrated F-Droid doc (#224) by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/226 Full Changelog: https://github.com/dzianisv/opencode-mobile/compare/v0.4.16...v0.4.17在 GitHub 查看 ↗ -
发布说明摘录
What's Changed * tools(sentry): anchor the measurement windows on the gate's rollout instant by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/178 * docs(release): record v0.4.15 and make the versionCode bump non-optional by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/181 * fix(triage): never lose Play review feedback to a missing label by @louiscalata in https://github.com/dzianisv/opencode-mobile/pull/217 * fix: handle PermissionV2 events and keyboard avoidance on connection screens by @meramsey in https://github.com/dzianisv/opencode-mobile/pull/216 …在 GitHub 查看 ↗ -
发布说明摘录
What's Changed * fix(diagnostics): classify 401/403 as auth-failed so a wrong password stops the retry loop by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/170 * docs(playstore): record v0.4.14 production rollout (versionCode 151) by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/171 * tools(sentry): org-wide volume report + measure on submitted, not accepted by @dzianisv in https://github.com/dzianisv/opencode-mobile/pull/172 …在 GitHub 查看 ↗