dsh-mobile-bridge: Use a Mobile Browser to Remotely Access DSH Desktop

前言

DSH Desktop 的 Web 界面默认只监听 127.0.0.1,手机在同一局域网外或需要离开工位时,无法直接打开桌面上的会话与工具审批。常见做法是另做一套移动端前端或依赖远程桌面,维护成本高,且容易和桌面能力不同步。下面介绍社区插件 dsh-mobile-bridge(维护者 msz-legend):在桌面与手机之间加一层边缘网关,手机仍加载桌面同一套 Web UI,流式输出、WebSocket、RPC 与工具审批与桌面一致。

这是什么

dsh-mobile-bridge 是 DeepSeek Harness(DSH)的客户端类插件,许可证 MIT,当前仓库版本 0.5.0,运行环境要求 Node >= 22。它解决「手机安全、完整地使用本机 DSH Desktop」:扫码配对获得长期设备令牌,经可选 cloudflared 临时隧道、Tailscale、局域网或 Cloudflare 命名隧道对外暴露入口,网关自动改写 Host / Origin 指向 loopback,无需改 DSH 源码。

插件目录与源码:GitHub — msz-legend/dsh-mobile-bridge;社区目录页:skillhub.cn/plugins/msz-legend/dsh-mobile-bridge。DSH 生态以「一切皆插件」为理念,社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

接入与配对

桌面在 设置 → 手机桥接 生成 6 位一次性配对码与二维码(默认 5 分钟有效);手机扫码后获得 HttpOnly Cookie 形式的长期设备令牌,之后打开同一地址即可使用。默认手机来源配对需在桌面点一次「允许」;配置 autoApprovePairing: true 可跳过桌面确认,配对码的时效与限次限制仍生效。默认最多绑定 5 台设备,每台独立令牌。

外网接入可多档切换:cloudflared quick 临时隧道(零 Cloudflare 账号)、Tailscale 私网、局域网 http://<LAN IP>:8787、Cloudflare 命名隧道 固定域名。开箱即用场景下,安装后插件可自动拉起临时隧道;固定公网域名需自备 Cloudflare 账号、域名与隧道 token(仅存本地 tunnel.json,权限 0600)。

会话与工具审批

手机端复用桌面 Web UI:会话列表、新建会话、发送与停止流式输出、模型与推理等级、插件、文件预览、终端等与桌面一致。Agent 发起工具审批时,手机弹出卡片,可选 仅本次 / 始终允许 / 拒绝;「始终允许」按工具名与参数指纹记忆。审批超时、远程会话下手机离线等场景按 fail-closed 处理,默认不执行工具。

窄屏侧栏改为浮层与遮罩、进入会话不自动聚焦输入框、触屏常显复制等控件,并支持浏览器「添加到主屏幕」全屏使用。

设备管理与稳定性

桌面 设置 → 手机桥接 → 设备管理 可查看在线状态、逐台或全部撤销绑定;撤销后令牌作废、已连接手机立即断开。本机 loopback 还提供 devices.json 等 HTTP 端点供脚本调用(经 edge 从手机访问这些管理接口会返回 403)。

插件含隧道健康探测、Tailscale / Cloudflare 固定地址向导,以及可选将 cloudflared 注册为系统服务,以便重启后地址稳定、旧二维码长期可用(quick 隧道地址每次重启会变,旧链接易出现 Cloudflare 1033/530 类错误)。

安装与启用

插件以本地 bundle 形式安装,官方 README 给出的方式为将仓库目录装进 DSH Desktop:

plugin_manager action=install_bundle target=<本目录绝对路径>

也可在 profile 的 dependencies 中写 link:<本目录> 并加入 dsh.profile.bundles,然后重启 Desktop。依赖 npm 包 qrcode(缺失时配对页降级为文本地址 + 配对码)。

安装后重启 Desktop;若启用 tunnelEnabled: true 且 tunnelMode: 'quick',可自动得到临时公网地址。典型最小配置片段如下(完整字段见仓库 README):

- id: dsh-mobile-bridge
  name: 'dsh-mobile-bridge'
  config:
    enabled: true
    edgeHost: '127.0.0.1'
    edgePort: 8787
    tunnelEnabled: true
    tunnelMode: 'quick'
    autoApprovePairing: false
    maxDevices: 5

publicBase 留空时按显式配置、tunnel.json、cloudflared quick、Tailscale、LAN、loopback 的优先级自动探测。

典型用法

  1. 完成 bundle 安装并重启 Desktop,按需安装 cloudflared(Windows 示例:winget install Cloudflare.cloudflared)或登录 Tailscale。
  2. 桌面打开 设置 → 手机桥接,点「生成配对码」,用手机扫二维码或输入 6 位码;若未开免确认,在桌面点「允许」。
  3. 配对成功后手机进入与桌面相同的 Web UI;之后收藏该 URL 或添加到主屏幕即可。Agent 需授权时在手机上完成审批卡片操作。
  4. 需要撤销某台手机时,在桌面设备管理中撤销,或在本机执行(<端口> 为 DSH 监听端口):
curl http://127.0.0.1:<端口>/plugins/dsh-mobile-bridge/devices.json
curl -X POST -H 'content-type: application/json' -d '{"deviceId":"dev_xxx"}' \
  http://127.0.0.1:<端口>/plugins/dsh-mobile-bridge/devices/revoke

适用场景与注意

适合:需要在通勤、会议或离席时用浏览器继续 DSH 会话、看流式输出、在手机上批准工具调用,且希望 UI 与桌面一致、不必维护第二套前端的开发者。

务必注意:经设备令牌访问的浏览器与桌面同属 owner 级权限;将入口暴露到公网相当于开放 owner 级远程能力,只应配对自己的设备。插件在本机 DSH 进程权限下运行,安装前应阅读源码与 MIT 许可证,自行评估隧道与 token 存放方式;敏感 tunnelToken 勿提交 git。

Tailscale 私网档链路在 tailnet 内加密、不依赖公网暴露,README 将其列为较稳妥选项;局域网 HTTP 档 Cookie 在传输层不加密,README 建议配合 HTTPS 或仅可信网络使用。

结尾

dsh-mobile-bridge 用边缘网关把「只监听 loopback 的 DSH Desktop Web UI」延伸到手机浏览器:扫码配对、流式回显与工具审批与桌面同源,并支持多种隧道与固定入口配置。进一步了解实现与截图说明见 GitHub 仓库 README,社区索引见 SkillHub 插件页。

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

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

Xiaoye