前言¶
在本地跑 DeepSeek Harness(DSH)时,开发者常常需要在另一台设备上查看或操作同一套 Web 界面:出差用手机、在另一房间用平板,或临时把会话交给协作者。把 DSH 直接暴露在公网,或把隧道与主进程绑在一起,一旦隧道重启或崩溃,往往会拖垮整个应用。
下面介绍的 dsh-remote-v2(维护者 juntaoqian)把隧道与认证网关放在独立 sidecar 进程里,通过一次性配对与设备会话控制访问路径,属于 DSH 社区目录中的 admin-security 类插件。本文依据仓库 README 与 package.json 整理安装与用法,版本状态为 v0.1.0。
这是什么¶
dsh-remote-v2 是面向 DeepSeek Harness 的远程访问插件:侧车进程承载隧道与认证网关,DSH 主程序通过薄适配层调用本机 loopback 控制 API;手机浏览器或 PWA 经 HTTPS 进入传输层,再经网关反向代理到本机 DSH Web Server(127.0.0.1)。
设计重点包括:
- 隧道或网关进程异常时,不连带拖垮 DSH 主进程。
- 支持可插拔传输:Cloudflare Quick Tunnel(零配置)、Named Tunnel(固定域名)、Tailscale Serve(仅 tailnet)。
- 一次性配对(256 位 QR 密钥 + 8 位手动码)、设备会话(7 天滑动窗口、可单独或全部吊销)。
- 网关仅绑定 loopback,对管理面前缀做解码安全的拒绝,并在转发前剥离 hop-by-hop / 边缘相关头。
- 纯 ESM JavaScript,无构建步骤、运行时无 npm 依赖(QR 生成器为 vendored)。
架构与依赖¶
请求路径可概括为:手机浏览器 → 传输层(Quick / Named / Tailscale)→ Remote Core(独立 Node 进程:隧道管理、认证网关、配对与设备会话、loopback 控制 API)→ DSH 插件适配层 → DSH Web Server。
运行要求(摘自 README):
- DSH Desktop / Web >= 0.2.1-rc.2(需 bundled
connection+webServer服务)。 - Windows x64(MVP):首次启动可自动下载固定版本并校验 SHA-256 的
cloudflared;macOS / Linux 支持计划中。 - 不额外安装 Node:sidecar 由 DSH 自带的 Electron-as-Node 运行时启动。
package.json 中 engines 约定 Node >= 22.19.0、dsh >= 0.2.1-rc.2。许可证为 MIT。
网络说明:Quick Tunnel 使用 *.trycloudflare.com。README 指出,在部分网络(尤其大陆部分地区)该域名可能无法解析,公网 URL 会不可达,即使 cloudflared 显示 ready。稳定或生产环境更宜使用 Named Tunnel 配自有域名,或在可用代理后使用 Quick Tunnel;本机 loopback 上的网关、配对与代理路径不受影响。
安全模型(摘要)¶
- 在隧道报告已校验的 origin 之前,公网入口保持关闭(503);关闭远程访问时会先清除 origin 再结束隧道。
- 经代理的 HTTP / WebSocket 请求需通过设备会话 cookie 认证;管理前缀
/dsh-remote-v2对公网拒绝(含百分号解码安全处理)。 - 配对页仅允许一次性 secret / code 领取,cookie 为
HttpOnly; SameSite=Lax,并带严格 CSP。 - 持久化仅存设备 token 的 SHA-256 哈希,不以明文长期保存配对码(与 v1 对比)。
- 网关将
Host/Origin改写为 loopback DSH 服务地址,转发前剥离authorization、cf-*、x-forwarded-*、forwarded及设备 cookie。
README 明确:已配对设备在能力上等同于本地浏览器使用 DSH(含工具执行)。配对码应保密,不再使用的设备应及时吊销。
安装与启用¶
安装命令须从仓库脚本执行,而非凭插件名拼接 dsh plugin add:
# from this repository
node scripts/install.mjs --profile desktop
# then fully quit and reopen DeepSeek Harness
完全退出并重新打开 DeepSeek Harness 后,在 设置 → 远程访问(仅 loopback)中配置。插件状态目录中的配置示例路径为 ~/.dsh/plugins/dsh-remote-v2/config.json(Named Tunnel token 等敏感项以 mode 0600 存储,README 要求按密码级凭证保管)。
安装前宜自行审阅 源码 与 MIT 许可证;插件与 sidecar 以当前 DSH 进程权限运行,配对成功后的远端会话权限与本地浏览器相当。
典型用法¶
基本流程¶
- 打开 设置 → 远程访问。
- 选择传输方式:
- Quick Tunnel — 零配置;每次启动 URL 会变。
- Named Tunnel — 粘贴 Cloudflare Tunnel token 与已配置的公网 hostname。
- Tailscale(tailscale serve) — 仅 tailnet 内访问(见下节)。 - 点击 开启,等待状态为 ready 并出现公网 URL(或 tailnet HTTPS 地址)。
- 点击 生成配对码,用手机扫 QR(或输入 8 位码)。
- 在同一页管理或吊销已配对设备;用 关闭 停止远程访问。
Named Tunnel(稳定 URL)¶
需域名 DNS 指向 Cloudflare(免费计划即可),且 Cloudflare Public Hostname 转发目标与插件本地网关端口一致(示例中为 http://127.0.0.1:26001)。
- Cloudflare 控制台 → Zero Trust → Networks → Tunnels → Create a tunnel → connector Cloudflared,命名保存。
- 从 connector 安装页复制 token(
cloudflared service install后一长串),或 CLI:cloudflared tunnel token <name>。 - 为该 tunnel 添加 Public Hostname:例如子域
dsh、服务 HTTP、URL127.0.0.1:26001(须等于插件本地网关端口)。 - 在 设置 → 远程访问 中:传输方式为 Named Tunnel,填入 token、公网地址(如
https://dsh.example.com)、本地网关端口26001,保存后 开启。 - 可选:在 hostname 前加 Cloudflare Access;插件侧配对仍生效。
Tailscale Serve¶
仅当电脑与手机在同一 Tailscale tailnet 时适用;不经公网暴露(若需公网 funnel 需另用 tailscale funnel)。
- 获取本机 DNS 名(Windows 示例):
& 'C:\Program Files\Tailscale\tailscale.exe' status --json |
ConvertFrom-Json | ForEach-Object { $_.Self.DNSName.TrimEnd('.') }
# e.g. cxqjt.tail7cbe8.ts.net
- 启用 Serve(tailnet 所有者):
& 'C:\Program Files\Tailscale\tailscale.exe' serve --bg 26001
- 插件中:传输方式为 Tailscale(tailscale serve),公网地址填
https://<dns-name>,本地网关端口与上一步端口一致,保存后 开启。 - 手机须在 tailnet 内:扫配对 QR,或打开
https://<dns-name>/pair输入 8 位码。
停止时:在插件中关闭远程访问,并执行 tailscale serve reset。
更细的步骤与常见问题见仓库内 docs/USAGE.zh-CN.md。
适用场景与注意¶
适合已在本地稳定运行 DSH、需要从手机或其他设备安全接入同一实例的开发者。Quick Tunnel 适合快速验证;固定域名或国内网络可达性要求高时,优先 Named Tunnel 或 Tailscale。
当前 v0.1.0 已实现 Quick / Named / Tailscale 传输、配对、设备管理、设置 UI 与诊断(README 状态说明)。问题反馈见 GitHub Issues;模块与 API 契约见 docs/contracts.md。
DSH 社区插件目录为独立站点(如 SkillHub 上的 juntaoqian/dsh-remote-v2),与 DeepSeek / 幻方无官方从属关系;安装与启用前请核对版本与源码。
结尾¶
dsh-remote-v2 用隔离 sidecar、认证网关与一次性配对,把 DSH 远程访问从主进程拆开,并支持多种传输方式。若你正在使用 DSH >= 0.2.1-rc.2,可按仓库安装脚本部署,在 设置 → 远程访问 中完成配对与设备管理。
- 目录页:https://www.skillhub.cn/plugins/juntaoqian/dsh-remote-v2
- 源码与 README:https://github.com/juntaoqian/dsh-remote-v2