dsh-remote-v2:爲 DeepSeek Harness 提供隔離式遠程訪問

前言

在本地跑 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 進程權限運行,配對成功後的遠端會話權限與本地瀏覽器相當。

典型用法

基本流程

  1. 打開 設置 → 遠程訪問。
  2. 選擇傳輸方式:
    - Quick Tunnel — 零配置;每次啓動 URL 會變。
    - Named Tunnel — 粘貼 Cloudflare Tunnel token 與已配置的公網 hostname。
    - Tailscale(tailscale serve) — 僅 tailnet 內訪問(見下節)。
  3. 點擊 開啓,等待狀態爲 ready 並出現公網 URL(或 tailnet HTTPS 地址)。
  4. 點擊 生成配對碼,用手機掃 QR(或輸入 8 位碼)。
  5. 在同一頁管理或吊銷已配對設備;用 關閉 停止遠程訪問。

Named Tunnel(穩定 URL)

需域名 DNS 指向 Cloudflare(免費計劃即可),且 Cloudflare Public Hostname 轉發目標與插件本地網關端口一致(示例中爲 http://127.0.0.1:26001)。

  1. Cloudflare 控制台 → Zero Trust → Networks → Tunnels → Create a tunnel → connector Cloudflared,命名保存。
  2. 從 connector 安裝頁複製 token(cloudflared service install 後一長串),或 CLI:cloudflared tunnel token <name>。
  3. 爲該 tunnel 添加 Public Hostname:例如子域 dsh、服務 HTTP、URL 127.0.0.1:26001(須等於插件本地網關端口)。
  4. 在 設置 → 遠程訪問 中:傳輸方式爲 Named Tunnel,填入 token、公網地址(如 https://dsh.example.com)、本地網關端口 26001,保存後 開啓。
  5. 可選:在 hostname 前加 Cloudflare Access;插件側配對仍生效。

Tailscale Serve

僅當電腦與手機在同一 Tailscale tailnet 時適用;不經公網暴露(若需公網 funnel 需另用 tailscale funnel)。

  1. 獲取本機 DNS 名(Windows 示例):
& 'C:\Program Files\Tailscale\tailscale.exe' status --json |
  ConvertFrom-Json | ForEach-Object { $_.Self.DNSName.TrimEnd('.') }
# e.g. cxqjt.tail7cbe8.ts.net
  1. 啓用 Serve(tailnet 所有者):
& 'C:\Program Files\Tailscale\tailscale.exe' serve --bg 26001
  1. 插件中:傳輸方式爲 Tailscale(tailscale serve),公網地址填 https://<dns-name>,本地網關端口與上一步端口一致,保存後 開啓。
  2. 手機須在 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
羽毛球分组比赛记分
小程序二维码

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

小夜