dsh-mobile:让手机通过局域网连接 DeepSeek Harness

前言

DeepSeek Harness(DSH)的日常操作通常发生在桌面端:浏览器里的 web GUI,或者桌面壳的窗口。人离开工位时,想在手机上查看某个 workspace 的会话历史、补发一条 prompt,一般没有现成入口。

dsh-mobile 解决的就是这个问题。它在局域网内搭一条手机连接桥:桌面端出示二维码,手机扫码配对,桌面批准后,手机直接打开一个为移动端优化的 DSH 客户端。下面介绍这个插件的定位、功能、安装与用法。

这是什么

dsh-mobile 是面向 DeepSeek Harness 本体的插件,由 s17179XTY 维护,许可证为 MIT,当前版本 1.0.1。一句话概括:局域网手机连接桥(二维码配对 + 桌面端批准 + 移动端 DSH 客户端),并在 Web GUI 设置行提供手机入口与连接状态点。

DSH 的理念是「一切皆插件」。这个插件只面向 DSH 本体,不绑定任何特定壳应用:只要部署运行着 DSH web profile——命令行 dsh web、Bigfish、类 DSH Desktop 的桌面壳或任何封装——都可以安装使用。包内不含 Bigfish 或 DSH Desktop 专用代码。

核心功能

二维码配对与桌面端批准

手机扫描二维码完成配对,token 每 30 分钟轮换,比较使用 timing-safe 方式;桌面端确认后,手机获得 HttpOnly 会话 cookie。

移动端 DSH 客户端

手机端可以使用 workspaces、会话列表、聊天历史,可以发送 prompt、停止生成。客户端由桥提供服务,局域网内完整可用。

设置行手机入口

手机图标位于 Web GUI 设置行右端。有手机配对时显示绿色连接点。点击图标打开配对/管理对话框,包含二维码、复制、倒计时、批准/拒绝、断开等操作。

三段式结构

插件由三部分组成:

  • LAN 桥(lan-bridge.mjs):独立 Node HTTP 服务器,绑定 0.0.0.0 随机端口,负责配对、移动客户端、RPC 转发,以及 /desktop* JSON/QR 端点(含 CORS)。
  • 宿主插件(lib/index.js):生成并监控桥(自动重启、有次数上限),暴露 /phone-connect/bridge/phone-connect/config
  • 客户端插件(lib/client.js):__ModuleLoader__ bundle,提供设置行手机入口(绿点)、配对对话框、复制/倒计时/批准 UI。

安装与启用

插件需要 DeepSeek Harness web profile,任何运行 web profile 的部署均可安装。先执行安装命令:

dsh plugin --profile web add https://github.com/s17179XTY/dsh-mobile

也可以通过 DSH 插件市场 / dshmarket UI 安装。

安装后重启 harness(或重启 profile),让 cordis.patch.yml 中的对应行挂载。包依赖 qrcode(^1.5.4),由 profile 的包管理器自动安装。

典型用法

1、打开 web GUI,在设置行(左下侧栏)右端找到手机图标。

2、点击图标打开配对对话框。二维码有效期 30 分钟,到期自动刷新,URL 旁有 Copy 按钮。

3、手机保持与桌面同一可信 Wi-Fi,用相机扫码,或打开复制的 URL。

4、对话框显示待配对手机,点击「允许 / Allow」。

5、手机打开移动端 DSH 客户端。连接在后台保持活动,图标显示绿点;重开对话框可以断开连接或刷新二维码。

配对 URL 在其完整生命周期内跨对话框会话有效,仅过期 token 才会被轮换。

壳侧整合

插件与壳的整合分两个层面。

纯浏览器部署无需额外工作:设置行手机入口与配对对话框由客户端插件提供,随插件自动出现在 web GUI 中。

原生桌面壳(例如类 DSH Desktop 的 Electron 应用)则要注意:插件无法向壳的原生菜单栏注入菜单项,这部分属于壳自己的代码。作为替代,插件提供 desktopUrl 钩子。宿主插件在 GET /phone-connect/bridge 暴露桥的快照,其中 desktopUrl 指向:

http://127.0.0.1:<port>/desktop

该页面仅限 loopback 访问,内容是完整的配对/管理界面(二维码、自动刷新、批准/拒绝、断开)。壳可以用一次同源 HTTP 调用发现这个 URL,然后在自己的「连接手机」菜单或托盘项里打开一个小窗口,不需要额外配置或凭据。

安全设计

插件的默认配置以安全为先:

  • 桥绑定 0.0.0.0 随机端口,拒绝非私网客户端(10/8172.16/12192.168/16、ULA 与链路本地 IPv6)。
  • /desktop* 端点仅限 loopback;CORS 仅授予 harness GUI 来源。
  • 配对 token 为 32 随机字节,timing-safe 比较,30 分钟 TTL。
  • 手机会话使用 HttpOnly、SameSite=Strict cookie。
  • 移动客户端只能调用白名单内的 RPC 方法:workspace.listsession.listsession.historysession.createsession.promptsession.cancel
  • 客户端启用严格 CSP 头。

请只在可信网络中使用。不需要手机访问时,从 cordis.patch.yml 移除 dsh-mobile 行,或直接卸载插件。

注意事项

  • 插件以当前 dsh 进程的权限运行。安装前建议先检查仓库源码与许可证(MIT,仓库内附 LICENSE)。
  • 桥崩溃时,宿主会自动重启,最多 5 次,间隔 3 秒;/phone-connect/bridgeerror 字段携带最后一次退出原因。
  • 移动端能执行的操作受 RPC 白名单限制,即上面列出的六类方法。

小结

dsh-mobile 把 DSH 的使用范围从桌面扩展到了同一局域网内的手机:扫码配对、桌面批准、移动客户端,三步完成,安全配置默认生效。对经常在工位之外还需要跟进会话的开发者,这是一个值得装上的补充。

  • 目录页:https://www.skillhub.cn/plugins/s17179XTY/dsh-mobile
  • GitHub:https://github.com/s17179XTY/dsh-mobile

需要说明的是,skillhub.cn 是社区维护的插件目录站点,独立运营,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye