Skip to content

小云手机助手实施计划 ​

小云继续使用云端 DSH 承担会话、模型编排、连接器和长任务,iOS 原生 App 承担设备工具、用户交互和执行反馈。首版不内嵌完整 DSH;先验证手机是否能在日常脱离电脑后可靠执行一个跨 App 任务。

运行方式 ​

层职责首轮范围
云端 DSH会话、模型、记忆、长任务沿用现有服务,不修改线上部署
小云 iOS真实设备状态、本机控制器配对、执行反馈新增原生手机能力页
iCTRL 运行器基于 XCUITest 执行跨 App 动作独立侧载,通过本机接口调用
手机本地 Agent直接调用模型和设备工具后续评估,不要求完整 Node/Linux 环境

本地运行 Agent 不等于本地模型推理,也不自动获得系统控制权限。完整 DSH 的 Linux/Node 兼容层会增加启动、内存和维护成本;只有需要离线工作区、手机端 shell 或大量现成 DSH 插件时,再单独验证其收益。

分阶段交付 ​

第一阶段 本机工具与跨 App 验证 ​

  • 在小云新增手机能力入口,展示实时电量、低电量模式、温度状态、存储和系统版本。
  • 检测本机 iCTRL,区分服务未启动、协议不兼容、未配对和已授权可调用。
  • 使用 X25519 配对和 iCTRL v1 加密协议,密钥只存本机 Keychain,不上传云端。
  • 只提供明确的只读设备查询和固定验收流程,不向云端开放任意 RPC。
  • 固定流程:读取运行器设备信息 → 启动 Chrome 并通过其 URL scheme 打开 example.com → 读取 Chrome 页面 → 回到小云 → 展示真实结果与耗时。需已安装 Chrome;页面读取仅在内存中展示。
  • 配对必须通过手机上的运行器通知批准。取消或超时不自动重放配对、启动应用等操作。

第二阶段 真实日用任务 ​

  • 先选择一个明确任务,例如从分享面板接收网页,提取日程并在确认后创建提醒事项。
  • 原生系统 API 和应用开放动作优先;没有接口的步骤才使用界面自动化。
  • 用至少二十次实际执行测量成功率、耗时、发热和恢复成本,记录失败类型。
  • 分别验证切后台、锁屏、Wi-Fi/蜂窝切换、重启后的恢复;不把 USB 联调成功视为脱机验收。

第三阶段 云端设备任务通道 ​

  • 扩展现有配对设备协议,增加有期限的设备任务、显式审批、执行收据、取消和结果未知状态。
  • 手机主动建立经过认证的通道;不将 iCTRL 端口直接暴露到公网。
  • 云端步骤可独立继续,设备离线时暂停手机步骤;恢复时先核对收据,避免重复发送或重复提交。
  • 手机上的会话访问凭据不能直接等价为跨 App 控制授权。

第四阶段 本地执行选项 ​

先验证原生轻量 Agent 是否能满足短任务和直连模型需求,再决定是否内嵌完整 DSH。保留统一工具语义,不要求首版同时维护两套完整编排引擎。

验收标准 ​

项目通过条件
设备状态数据来自当前设备,未知值明确为空,不模拟健康状态
授权未配对不能执行;拒绝、撤销、签名校验失败均停止调用
跨 App实机完成固定流程,展示所读取的真实页面和执行耗时
脱离电脑断开 USB、关闭电脑端启动会话后重新执行成功
重启记录重新挂载开发镜像和启动运行器所需步骤,不宣称自动恢复
生命周期取消不继续执行后续业务步骤;回前台重新检查状态
云端本轮不上传设备快照、页面内容或运行器密钥

技术依据与限制 ​

  • iCTRL:长驻 XCUITest 运行器、本机配对与加密 RPC。使用私有接口;系统版本、签名和运行器状态仍需实测。固定评估源码提交为 c1e4268859ba858d1579f7b846a56cb40641b7f6。
  • StikDebug 配对:支持设备侧开发服务准备;具体配对和安装方式取决于系统版本。
  • Apple 后台执行:普通 App 的后台工作受系统约束。运行器能够继续运行,也不代表小云的 Agent 循环可以永久驻留。
  • Chromium iOS URL scheme:googlechromes 明确选择 Chrome 打开 HTTPS 页面,避免把 HTTP 默认处理程序假定为 Safari。
  • dsh-ios:证明完整 DSH 可以通过兼容层在设备上运行;项目声明性能有限,不能据此承诺日用体验。

本轮结果 ​

2026-11-07 已实现手机能力页、本机 v1 加密配对、设备信息读取和固定浏览器往返流程。验收绑定 Chrome,不依赖默认浏览器或前台应用自动识别。返回结果必须同时包含 Example Domain 和正文中的 documentation,不能只匹配浏览器标签标题或工具提示。

真机发现 iOS 27 的运行器可能返回空的前台应用标识。先调用 launch_app 登记 Chrome,再通过 Chromium 官方支持的 googlechromes://example.com 打开固定页面,并以明确的 bundle ID 读取界面。正文不在界面树中时,可使用 Chrome 应用范围截图和手机端 Vision OCR;全屏回退、其他应用范围、锁屏状态均拒绝。截图和识别内容不上传云端。

已完成:

  • Swift 核心测试 24 项(3 项 XCTest 与 21 项 Swift Testing),含独立 Python 协议向量、响应篡改拒绝、配对拒绝、取消边界、前台标识为空时的读取边界和正文校验。前台标识为空的回归测试先失败,再随修复通过。
  • macOS 共享包回归 1 项,全仓 pnpm typecheck、Apple 文案一致性及本轮文案定向 lint 通过。全仓 lint 本轮被并行新增的 DSH 手动会话文件阻塞,未修改这些文件或缩小全仓检查范围。
  • iOS 模拟器和真机开发签名构建通过;模拟器已检查原生页面、未知电量和运行器不可达状态。
  • 小云新版与独立 iCTRL 宿主、运行器已安装到 iPhone。运行器日志确认以本机模式启动,未开启远程访问。
  • 用户通过运行器通知批准 Yun · iPhone,小云完成加密配对;覆盖安装和终止重开后继续使用原授权。
  • iPhone 15 Pro 两次完成「读取设备 → 启动 Chrome → 打开示例页面 → 读取正文 → 返回小云」,耗时分别约 6.71 秒、6.86 秒。回执均为 paired=true、sample_found=true、error=null。
  • 本轮连接为无线开发连接,没有 USB 或电脑端端口转发参与设备工具执行;流程调用均由手机上的小云发往本机运行器。两次正文读取通过界面树完成,没有触发 OCR 回退。

待完成:完全关闭电脑后从手机手动冷启动、重启后的设备侧开发镜像准备、蜂窝网络切换、长任务和取消恢复,以及 OCR 回退的真机执行。当前验证证明本机跨 App 闭环可行,不代表全天后台驻留或重启自动恢复。

Debug 构建支持 --show-device-tools、--pair-device-controller、--device-smoke。配对仍要求手机手动批准,参数不能绕过授权;验收回执只在 App 私有缓存记录操作、授权状态、错误、耗时和样例文本是否匹配,不含密钥、设备快照或页面内容。页面结果只在内存中展示,可手动清除。

云端设备通道验收 ​

2026-11-07 已接通远端 DSH 与本机 iCTRL。进入内嵌 DSH Web 后点击「开启手机控制」,原生层用既有配对授权创建十分钟的专用会话;网页模型通过 phone_open_app 请求打开 Chrome、Safari 或设置。手机主动领取任务,独立通道凭据不交给网页,iCTRL 密钥仍只在本机 Keychain。单个命令二十秒到期,领取后不重放;执行结果可以幂等回传,不能确认的动作标记为 unknown。

03:58 在 iPhone 15 Pro 上完成「内嵌网页输入 → 云端模型调用 → 手机领取 → iCTRL 打开 Chrome → 返回小云 → 网页显示成功结果」。专用会话仅调用一次手机工具,收据三个字段均通过,最终会话正常结束;网页显示用时 9 秒。验收没有上传设备截图或页面内容,没有发送 QQ 消息。测试期间的旧会话恢复竞态和 DSH 多份工具模块标识问题均已修复并补充回归。

手机仍需解锁、iCTRL 运行且小云在前台接收任务;仅借用有限后台时间完成一次切 App 与回执提交。普通重新启动不会恢复上一次的手机控制授权,需要再次开启。本轮不证明永久后台在线、锁屏执行或手机重启后的自动恢复。协议、部署和详细验收见 iOS 开发说明。

AGPL-3.0 Licensed