MobileVC:把 DSH 会话搬到手机上的 PWA 界面

前言

跑 DeepSeek Harness(DSH)时,Agent 会话、工具调用和审批往往绑在桌面 Web 或本机终端上。人离开工位,长命令只能前台干等;手机想「看一眼进度、回一条消息、点一次允许」,要么 SSH,要么另做一套客户端和 relay,会话状态和队列容易和 DSH 本体脱节。

MobileVC 是 JayCRL 维护的 DSH Host 插件,附带静态 PWA 前端:连上正在运行的 DSH Web,用同一套 sessionController 读写会话,而不是再开一个 Agent 或第二套 relay。下面介绍它做什么、怎么装、日常怎么用,以及部署时要注意的安全边界。

这是什么

MobileVC 给 DSH 增加手机端界面:查看会话列表与历史、实时跟流、发消息、打断、审批、传图/文件、浏览工作区、管理插件与后台任务。英文简介概括为:把手机变成电脑上 AI 编程助手 CLI 会话(Claude 或 Codex 等,经 DSH 运行时)的控制台。

架构上,手机 PWA 经 HTTPS/SSE 访问 Host 插件;插件调用 ctx.sessionController、ctx.fileUploads、审批 answerer、ctx.pluginManager 等,与 DSH 会话日志和附件存储同源。一套会话,一套运行时——DSH 管 runtime,MobileVC 管 surface。

核心功能

以下能力均来自仓库 README 的功能与架构说明。

会话与流

  • 读取 DSH 会话列表、历史、工具调用。
  • sessionController.follow() + assistantStream,逐 token 展示思考与正文。
  • 执行中显示「正在思考」,结束后可折叠为「深度思考 · N 字」。
  • 工具卡默认折叠,展示工具名、参数、状态,可展开完整输出。

交互与附件

  • + 发送图片或文件:图片作为 image part;文件经 fileUploads.uploadStream() 换 receipt 再发送。
  • read_image 从 DSH attachment store 读原图,支持缩略图与全屏。
  • 运行中红色停止按钮可打断当前 turn;运行中发消息进入插话队列,可修改、删除或立即插话(/mobilevc/api/queue 对接 resolveAgent().inbox)。

审批与 presence

  • 手机端 presence 优先处理审批;断流或切后台仍可接住;另一端已处理时点击自动失效。
  • 审批卡支持拒绝或允许一次。

执行迹、文件、插件

  • 迹:用户 → 思考 → 工具 → 回复 → 压缩的 timeline;默认简洁模式,可切「完整」。
  • 文件:真实工作区,面包屑逐级浏览。
  • 插件:真实 pluginManager 列表与开关。
  • Memory:读写真实 AGENTS.md。

运维向能力

  • 底部显示账号余额;余额不足时自动打开 DeepSeek 官方充值页。
  • 后台任务:展示 DSH jobs,查看输出、停止。
  • Web Push:任务完成/失败、等待审批、后台任务结束等;iPhone 需 iOS 16.4+ 且添加到主屏幕后从图标启动(Safari 标签页不支持)。
  • SSE 断开自动重连 + durable 轮询兜底;额度/模型失败以错误卡展示,不静默。

PWA

  • 可安装到主屏幕、standalone、safe-area、竖屏锁定;横屏时提示竖屏,不切桌面横向布局。

旧版 Flutter 客户端 + Go relay + E2EE 保留在仓库 legacy/,默认部署不再使用;新安装应走 DSH 插件方式。

安装与启用

需要一台已经能跑 DSH Web 的机器。README 推荐以 DSH bundle 安装:

dsh plugin --profile web add "github:JayCRL/MobileVC"
systemctl restart dsh-web

若使用本地目录(README 亦给出 clone 后 add 的路径方式,此处不展开 clone 步骤),等价命令为对插件目录执行 dsh plugin --profile web add ./mobilevc 后同样重启 dsh-web。

浏览器打开:

http://127.0.0.1:8898/mobilevc/

健康检查:

curl http://127.0.0.1:8898/mobilevc/api/health
# {"ok":true,"plugin":"mobilevc","interactive":true}

可选边缘部署:仓库 edge/ 提供 Caddy + 可选 cloudflared 的 compose,用于反代、登录与 Cloudflare Tunnel;只封装入口,不包含 DSH 或 Agent runtime。完整步骤见仓库 edge/README.md 与 INSTALL.md。

远程访问:浏览器无法直接连 NAT 后的 DSH。可自行用 Cloudflare Tunnel 或 Tailscale 暴露本机 8898;产品化方案涉及中心 Relay + mobilevc-connect 插件,当前仓库仅 Host plugin 与 UI,不内置 Relay。

典型用法

安装并打开 /mobilevc/ 后,常用操作如下(摘自 README「使用」):

  1. Enter 发送消息,Shift+Enter 换行。
  2. 用 + 选图片或文件;点 read_image 缩略图可全屏。
  3. 运行中点停止打断;若继续输入,消息进入插话队列,面板里可改、删或立即插话。
  4. 底部或导航进入 迹、插件、Memory;工具卡点开看输出。
  5. 出现审批卡时选拒绝或允许一次。
  6. 设置 → 通知 → 开启 启用 Web Push,可用 测试 发一条试通知。

API 与页同源,主要路由包括:/mobilevc/api/follow(跟流)、/mobilevc/api/prompt(发消息)、/mobilevc/api/approval、/mobilevc/api/queue、/mobilevc/api/plugins 等,均委托 DSH 对应能力,无需单独配 CORS。

适用场景与注意

适合谁

  • 已在服务器或本机跑 DSH Web,希望用手机跟进同一会话、审批工具、传附件、管插件和长任务的人。
  • 需要 PWA 安装与 Web Push,在离开桌面后继续收到完成/审批提醒的场景(按平台限制配置 Push)。

安全与权限

README 明确:/mobilevc/ 由 Host 插件注册,不走 DSH /api 的 browser-trust fence。持有登录态的用户通过该界面可以:读所有会话、日志、工作区文件;发消息、停止、审批;写 AGENTS.md;上传附件;启用/禁用插件。所有登录用户共享同一 DSH 身份,无多租户隔离。

因此:

  • 公网必须使用 认证 + HTTPS 反向代理;不要把 8898 裸露到公网。
  • /mobilevc/ 没有独立登录页,应放在已认证的 HTTPS 反代之后。
  • 安装前请自行审阅源码与 MIT 许可证;插件以当前 DSH 进程权限运行,与 DSH「一切皆插件」生态一致——社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

MobileVC 不重写 Agent loop,也不在插件里再塞一套 relay;它把 DSH 已有的 session、follow、审批和插件系统接到手机 PWA 上,减少「桌面一套、手机另一套」的同步成本。若你要在 DSH 上补一层移动端控制台,可从目录页与 GitHub 拉取 bundle,按 README 安装后在受保护的 HTTPS 入口使用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye