dsh-mobile-connector

中文文档
0.1.18发布于 2026/11/03PolyForm-Noncommercial-1.0.0TypeScriptES Module构建来源已验证

DSH 插件:手机端远程通道的电脑侧桥接

中文使用文档
文档目录9 节
  1. 要求
  2. 安装
  3. 配置
  4. 面板能做什么
  5. 它怎么工作
  6. 排错
  7. 开发与门禁
  8. 链接
  9. License

dsh-mobile-connector

npm npm downloads ci license

DSH 插件:手机端远程通道的电脑侧网关。 装进 DeepSeek Harness 之后, 手机扫码就能连到这台电脑 —— 对话、轨迹、改动卡、审批与提问、子智能体与后台任务,都在手机上。

DSH 侧边栏「手机」面板

装好之后,DSH 侧边栏多一个「手机」入口:总览 · 连接 · 通道与地址 · 已配对设备 · 配对码 · 版本


要求

项版本
DSH>=0.2.1-rc.5 <0.2.2
Node^22.19.0 || >=24.0.0
对端手机 App(Release 里的 APK)

安装

两条通道,装哪个都行(版本号可能不一致,见下):

# ① npm(DSH 插件面板里按包名装 = 走这条)
dsh plugin --profile <profile> add dsh-mobile-connector

# ② GitHub Release 的 tgz(面板「安装」里也能直接粘这个 URL)
dsh plugin --profile <profile> add \
  https://github.com/Imzl-zl/deepseek-harness-mobile/releases/download/v0.2.3/dsh-mobile-connector-0.1.9.tgz

装完要重启一次 DSH:插件热重载会让旧 fiber 先拆、新 fiber 再挂, 那一拍存储后端正在关,管理面可能挂不上(症状:面板 404、手机离线)。 新版已经对这一拍做了退避重试,但当次已经失败的那次挂载不会自己回来。

配置

三种写法等价,改哪个都生效(面板改的是 profile 的设置,不用重启):

A. 面板(推荐) —— DSH 侧边栏「手机」→「连接」卡:

  • 中转:内置中转(开箱即用)/ 自定义(填自己的中转根地址)
  • 令牌:粘贴中转的连接器令牌(只写不读,界面上不显示值);令牌行可点「去注册 / 登录」打开中转。
  • 直连:8790(局域网点对点用;0 = 不开)

B. profile 的 cordis.patch.yml:

- id: dsh-mobile-connector
  config:
    relayUrl: wss://relay.example.com/ws/connector   # 连接器拨的地址,带 /ws/connector
    relayTokenRef: relay-connector                   # 可选;不写就用默认格 relay-connector
    listenPort: 8790                                 # 局域直连端口,0 = 不开
    listenHost: 0.0.0.0

C. 环境 / 凭据面:令牌本体走 DSH 的 ctx.credentials,配置里只放引用名(relayTokenRef)。

地址形状容易搞错:电脑侧这条是连接器拨的,带 /ws/connector; 手机侧拿到的是根地址,它自己拼 /ws-ticket 与 /ws/device?ticket=。

面板能做什么

区块能做的事
总览中转状态 · 在线台数 · 直连端口,一眼判断"这台电脑现在通不通"
连接选中转(内置 / 自定义)、写令牌、开/关直连端口,卡头直接保存
通道与地址逐条启停(中转拨号 / 直连监听)· 删除不再上报的网卡地址(可恢复)· 追加一条不在枚举里的地址(Tailscale 这类)
已配对设备停用 / 启用 · 接管(换掉正在服务的那台)· 删除(在用的也行:先停用拿终态,再抹记录)
配对新手机出二维码(5 分钟有效,同一台手机重扫替换旧记录)
版本当前插件版本 ·「检查更新」(电脑代查 npm 的 latest;查不到会说原因,不冒充"已是最新")

停 ≠ 卸载:停传输不清凭据、不动身份,再启动不用重扫。断开 ≠ 解绑:删设备才需要重新配对。

它怎么工作

  • 两条链路:一条控制连接接收路由与名册通知;每台设备再拨一条独立数据连接。
  • 端到端加密:每条连接现场协商密钥(X25519 + AEAD),手机只信任二维码里带出的电脑公钥;中转只转发密文与路由元数据。
  • 方法白名单:只暴露列出的方法;审批 / 提问 / 任务走同一条通道,不另开端口。
  • 独占 1:1:同一时刻只服务一台设备,被拒的那台会收到占用者的名字(面板里可以「接管」)。

排错

症状多半是
面板整块红、出码报 HTTP 404: not found管理面没挂上(装插件后的热重载那一拍)。重启一次 DSH
手机显示"端点点拨不通"电脑不在线 / 换了网络。局域网直连要 listenPort 开着且同网段
中转一直是"连接中"relayUrl 少了 /ws/connector、或令牌不对(中转会 401)
手机上「检查更新」有新版但装不上手机装的是 debug 签名包,与 Release 的正式签名不同 —— 只能卸载重装

开发与门禁

cd connector
pnpm exec tsc --noEmit     # 类型
pnpm build                 # 产出 lib/(插件入口)
pnpm test                  # 825 项
node --check client.js     # 浏览器半侧是手写 JS,没有类型检查

协议与设计文档:docs/subsystems/connector-and-relay.md、docs/subsystems/remote-channel.md(在仓库里)。

链接

仓库 · 连接器与中转 · 通道协议 · 自建中转

License

PolyForm Noncommercial 1.0.0 —— 可自由使用、修改、分发,不可商用。

版本与发布记录

dsh-mobile-connector 共发布 18 个版本,首次发布于 2026/10/30;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.18latest2026/11/03今天
0.1.172026/11/03今天
0.1.162026/11/03今天
0.1.152026/11/03今天
0.1.142026/11/03今天
0.1.132026/11/03今天

关于 dsh-mobile-connector 的常见问题

dsh-mobile-connector 是什么?

DSH 插件:手机端远程通道的电脑侧桥接

如何安装 dsh-mobile-connector?

在项目目录运行 npm install dsh-mobile-connector,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deepseek-ai/cordis(4.0.5)、@deepseek-ai/schemastery(3.18.5)、@deepseek-ai/dsh-typert-protocol(0.2.1-rc.5)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

dsh-mobile-connector 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

dsh-mobile-connector 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

dsh-mobile-connector 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.19.0 || >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

dsh-mobile-connector 可以商用吗?

dsh-mobile-connector 使用 PolyForm-Noncommercial-1.0.0 许可。声明的许可为 PolyForm-Noncommercial-1.0.0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

dsh-mobile-connector 还在维护吗?

最新版本 0.1.18 发布于 2026/11/03(今天);至今共发布 18 个版本,其中过去 12 个月发布了 18 个;首次发布于 2026/10/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。