DeepSeek Harness Hub
← 返回列表

手机连接桥s17179XTY/dsh-mobile

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

扫码配对手机,在局域网内远程操控会话

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/17 · 已提供中文文档

dsh-mobile — 用於 DeepSeek Harness 的手机連接

综合分
28.5
GitHub 分
28.5
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add s17179XTY/dsh-mobile
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-mobile — 面向 DeepSeek Harness 的手机连接

dsh-mobile 是一个 DeepSeek Harness (DSH) 插件,将官方的手机连接体验带到任何 DSH web profile:一个局域网配对桥接、一个为手机优化的 DSH 移动客户端,以及 web GUI 设置行中的手机入口。它是 dsh-desktop 手机连接功能的忠实移植。

本插件是为 DeepSeek Harness 构建的,而非为任何特定的壳应用构建。 它适用于每一个运行 DSH web profile 的部署——命令行中的纯 dsh web、Bigfish、类 DSH Desktop 的桌面壳,或任何其他封装。它不包含任何 Bigfish 或 DSH Desktop 专有代码。

dsh-mobile 是面向 DeepSeek Harness 本体 的插件:任何运行 DSH web profile
的部署(命令行 dsh web、Bigfish、类 DSH Desktop 的桌面壳、或任何封装)都可以
安装使用,不绑定任何特定应用。

功能特性

- 带桌面端批准的二维码配对 — 你的手机扫描二维码(30 分钟轮换令牌,时序安全),桌面端确认,手机获得一个 HttpOnly 会话 cookie。
- 移动端 DSH 客户端 — 工作区、会话列表、聊天历史、发送提示词、停止生成;由桥接服务提供,可通过局域网完全使用。
- 设置行手机入口 — 设置行右端有一个手机图标;当有手机配对时,它会显示一个绿色连接圆点,并打开配对/管理对话框(二维码 + 复制 + 倒计时 + 批准/拒绝 + 断开连接)。
- 默认安全 — 仅监听私有网络、随机端口,仅回环的桌面端点,RPC 允许列表(workspace.list、session.list、session.history、session.create、session.prompt、session.cancel),严格的 CSP 头。

架构

Phone ──HTTP──▶ lan-bridge.mjs (LAN, random port)
│  QR pairing / mobile client / allowlisted RPC
│  (RPC forwarded to the harness /api with the
│   client-request envelope)
▼
Harness web UI ──▶ /phone-connect/bridge  (host plugin, same-origin)
│  bridge snapshot: port/status/connected/desktopUrl
▼
/desktop* loopback endpoints (CORS for the GUI origin)

| 组件 | 文件 | 作用 |
| --- | --- | --- |
| 桥接 | lan-bridge.mjs | 运行在 0.0.0.0(随机端口)上的独立 Node HTTP 服务器:配对、移动客户端、RPC 转发、带 CORS 的 /desktop JSON/二维码端点。 |
| 页面 | pages.mjs | dsh-desktop 移动客户端和配对页面的逐字移植(品牌名称参数化)。 |
| 宿主插件 | lib/index.js | 启动/监控桥接(自动重启,有上限),暴露 /phone-connect/bridge + /phone-connect/config。 |
| 客户端插件 | lib/client.js | __ModuleLoader__ 打包:设置行手机入口(绿色圆点)、配对对话框、复制/倒计时/批准 UI。 |

安装 (安装)

需要一个 DeepSeek Harness web profile(任何部署——profile
机制是 DSH 核心,因此这在纯 dsh web、Bigfish、桌面端上均可工作
挂载 Web 配置等的壳)。

dsh plugin --profile web add https://github.com/s17179XTY/dsh-mobile
或通过 DSH 插件市场 / dshmarket UI

然后重启 harness(或重新启动该配置),以便 cordis.patch.yml
行挂载。该包依赖 qrcode,由该配置的包管理器自动安装。

壳侧整合(Shell integration)

这里的“壳”(Shell)指的是在 Web 配置周围承载 harness 的应用。该
插件在两个层面与壳集成:

1. Web GUI 壳——内置(无需额外工作)

该插件的浏览器部分注册到 Web 配置自身的插槽系统中:
设置行的手机入口(带连接状态圆点)以及
配对对话框会自动出现在任何 DSH Web GUI 中。仅浏览器
部署无需其他任何东西。

2. 原生桌面壳——由插件提供集成钩子

对于拥有自身界面外壳的桌面壳(例如 DSH Desktop 风格的 Electron
应用),壳可以添加一个原生入口——一个“连接手机…”菜单项或
托盘操作——用于打开桥接的桌面配对页面:

- 宿主插件在 GET /phone-connect/bridge 发布桥接快照,
其中包括 desktopUrl(http://127.0.0.1:/desktop,仅限回环)。
- 该页面是完整的配对/管理 UI(二维码、自动刷新、批准/拒绝、
断开连接)——正是 dsh-desktop 在其自身 Electron 窗口中显示的内容。
- 因此,壳可以通过一次同源 HTTP 调用发现该 URL,并在一个小窗口中
打开它——无需配置,无需凭据。

Shell (native chrome) ──GET /phone-connect/bridge──▶ desktopUrl
│                                              │
└──── open http://127.0.0.1:/desktop ◀───┘   (loopback-only page)

DeepSeek Harness 能做到吗?/ DeepSeek Harness 能做到吗?

能。 该插件所需的每一个运行时组件都是核心 DeepSeek Harness
能力,任何配置都可用:配置插件机制
(cordis.patch.yml + dsh plugin add)、webServer 路由注册、
subprocess 服务、独立的局域网桥接,以及浏览器侧
插槽系统。该插件中没有任何内容依赖特定的壳应用。

插件在 harness 内部唯一无法做到的事情,是向桌面壳自身的菜单栏
注入原生菜单项——那个界面外壳属于壳的代码(这正是 dsh-desktop
原生提供其“Harness → 连接手机…”项的方式)。对于这种情况,插件提供了
上述 desktopUrl 钩子,壳将一个菜单/托盘项连接到它。

用法

1. 打开 Web GUI,在设置行(左下侧边栏)的最右端找到手机图标。
2. 点击它 → 配对对话框打开,显示一个二维码(有效期 30 分钟;
过期时自动刷新;URL 旁边有复制按钮)。
3. 在你的手机上,保持其连接到同一可信 Wi-Fi,用相机扫描二维码
(或打开复制的 URL)。
4. 对话框显示待配对的手机——点击允许 / Allow。
5. 手机打开移动端 DSH 客户端。连接会在后台保持活跃;连接期间图标显示绿点。重新打开对话框以断开连接或刷新二维码。

配对 URL 在其整个生命周期内跨对话框会话保持有效——
只有过期的令牌才会被轮换。

安全

- 桥接绑定 0.0.0.0 上的随机端口,并拒绝非私有
客户端(10/8、172.16/12、192.168/16、ULA/链路本地 IPv6)。
- /desktop 端点仅限回环;CORS 仅授予
harness GUI 源。
- 配对令牌:32 个随机字节,时序安全比较,30 分钟 TTL。
- 手机会话:HttpOnly、SameSite=Strict cookie。
- 移动客户端只能调用允许列表中的 RPC 方法。
- 请仅在您信任的网络上使用。 当您不需要手机访问时,从
cordis.patch.yml 中移除 dsh-mobile 行(或卸载)。

故障排除

- 对话框卡在“桥已停止,正在自动重试…”(bridge stopped, retrying)。
请先刷新页面。如果问题仍然存在,请验证桥接确实已启动:
harness 源上的 GET /phone-connect/bridge 应返回
{"status":"running", ..., "port": };桥接自身的
http://127.0.0.1:/desktop/snapshot 应返回
{"running": true, ...}。对话框接受这两个存活字段。
- 浏览器标签页不再显示该插件。 Web shell 在每次启动时会选择
一个随机端口,因此手动打开的标签页会一直指向一个已失效的
端口。请重新打开当前的 harness URL(桌面 shell 会自动重新打开自己的
窗口)。
- 配对 URL 显示“invalid or expired”。 令牌有效期为 30 分钟,并且
仅在实际过期时才会轮换——复制的 URL 在其整个生命周期内保持可用。来自较旧轮换(或在插件更新
重启桥接之前)的 URL 会被有意置为失效;请打开对话框获取
一个新的。
- 桥接不断重启。 主机最多会自动重启崩溃的桥接 5 次(间隔 3 秒);
/phone-connect/bridge 的 error 字段包含
最后一次退出原因和 stderr 尾部。

配置

- --locale zh|en 和 --app-name 由主机传递给桥接;
Web UI 会自动将其 locale 提交到 /phone-connect/config。
- harness URL 派生自 webServer.port,因此更改 GUI 端口
无需配置。

开发

npm install        # dev deps (qrcode etc.)
npm run check      # node --check on all sources
npm test           # end-to-end bridge test (HARNESS_URL overrides the target)

桥接也可以独立运行:

node lan-bridge.mjs --harness-url http://127.0.0.1:6730 \
--gui-origin http://127.0.0.1:6730 \
--locale zh --port 0

许可证

MIT——参见 LICENSE。手机/移动端页面是移植自
dataelement/dsh-desktop
(MIT)的代码。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群