手机本地 AI 工具链:分层、切换与限次验收

简体中文 · English

本实验把六个仓库组合成一条可复核的链路,而不是复制各仓安装命令。

责任边界

负责仓库 成功标准
Android、Termux、Kali PRoot pocket-pentest 基础环境能启动,权限边界写清楚
OpenCode、Claude Code、Happy 本地栈与 Mobile Lab Control android-ai-stack CLI/TUI/Web、本地 server/daemon、三个原生微件分层通过
用户可见助手与行动层 xiaohei-phone-agent 主动入口、短命令、风险策略、动作、全局停止和回滚有独立状态与证据
真机交互证据 android-device-test 以文本断言为主,必要时才取一张截图
可选远端 Happy relay happy-relay-deploy 只有明确远程需求时才加入
总结与跨仓复盘 本 Hub 事实、推断、未知与版本日期可追踪

手机默认是自洽控制面:Happy App 连接 127.0.0.1 的手机本地 server, daemon 和 Claude Code 也在手机上。模型推理仍可通过 URL/token 访问云 API 或私有中转。远端 Happy relay 不是先决条件。

最小实验顺序

  1. 记录设备、Android、Termux、Kali 和工具版本,不记录序列号和凭据。
  2. 使用 android-ai-stackquicktuiweb-start,模型调用数为 0。
  3. 只在上述通过后,分别执行一次 OpenCode 和 Claude 精确回声检查。
  4. Happy App 只做一次完整消息往返;“显示已连接”不算端到端成功。
  5. 用小黑主动入口执行一次确定性低风险动作;只有需要规划时才选择模型 profile,并验证模型切换没有联动服务启停。
  6. 首次失败立即停在该层,保留最多 60 行脱敏日志;改变一个原因后才允许再试一次。

手机控制面

模型配置与服务生命周期必须解耦。ai-model use PROFILE 只切配置;Happy 与 llama.cpp 分别显式启停。原生 Mobile Lab Control 提供三个可分别添加到桌面的 状态微件:Happyllama.cppModel profiles。前两个只管理各自服务, 模型微件只切配置;Happy 已运行时切换 profile 应显示 STALE,由操作者决定 何时重启,避免一次模型选择暗中改变多个进程。

App 只申请 Termux 命令权限,不申请联网权限;固定槽位通过手机本地、权限为 0600 的映射文件显示可读名称,不把 Token、URL 或 CC Switch 数据库交给 App。公开仓库 包含双语 UI、完整源码、白名单桥接脚本、部署/验收 Skill、CI 构建和 正式签名 APK。 手机上的 0.3.0 已完成三微件真机操作验收;公开 0.4.0 在此基础上完成通用配置、 中英本地化和独立状态域改造,并通过仓库测试、APK 构建、权限与签名检查。首次从 debug 签名迁移到正式签名时需要卸载旧版并重新添加微件。

可选 llama.cpp

本次实测兜底为 Qwen3 0.6B Q8 + llama.cpp:context 8192、单请求 slot、 4 CPU threads。它通过了 OpenCode 无工具 local-lite 短任务,但没有通过 默认 build agent 的预算,所以不替代云端编码模型。服务仅监听 loopback、 使用随机 token、不常驻;精确版本、性能和内存以 android-ai-stack 案例为准。

输出

实验记录至少写明:时间、版本、活动 profile 名称、各层 PASS/FAIL/BLOCKED/NOT TESTED、模型调用次数、失败后的单一改动,以及仍未 验证的部分。不要把“已经安装”写成“已经可用”。

小黑是这条链路的产品行动层,不是第六套 Runtime:它复用模型 profile 与真机证据, 但自己负责唤起、短会话、风险政策、用户确认和动作回滚。基础模式不依赖 root、 pocket-pentest 或远端 Happy relay。