dsh-remote-hub:用手機原生 App 遠程控制電腦上的 DSH

前言

DeepSeek Harness(DSH)平時跑在開發機上,會話、模型和權限都在本地進程裏。人離開電腦後,若仍想查看會話、發消息或中斷流式回覆,常見做法是 SSH 端口轉發、自建 Web 入口,或臨時開內網穿透再手抄地址和 Cookie。步驟多,且 DSH 對 Host 與 Cookie 的 authority 綁定較嚴,橋接寫錯 Host 容易 403。

下面介紹社區插件 dsh-remote-public(NPM 包名 dsh-remote-hub):電腦側由 DSH 插件起橋接、可選 ngrok / cloudflared 隧道、簽發 Cookie;手機側是 Kotlin/Compose 原生 Android App DSH Remote,直連 DSH 自帶的 HTTP API 與 WebSocket 網關,不是 WebView 套殼。維護者爲 liaoguogang-hub,在插件目錄中歸類爲客戶端。倉庫爲公共版:不含內置服務器地址與登錄憑據,連接方式支持局域網、ngrok 隧道與自定義;包名 com.dsh.remote.ngrok,可與作者自用版 com.dsh.remote 共存。

這是什麼

本倉庫同時包含兩樣東西:

  1. DSH 插件(Node,dsh-remote-hub):裝進 DSH 後由宿主負責橋接、隧道、籤 Cookie,並把狀態寫到 ~/.dsh/dsh-remote/。
  2. Android App(APK,不通過 npm 分發):與插件配合,在手機上填地址與憑據(或掃碼配對)後連接電腦上的 DSH。

一句話定位:DSH Remote — 通過局域網或隧道,在 Android 上控制 PC 上的 DeepSeek Harness;倉庫附帶一鍵連接腳本與 dsh-remote CLI。

核心功能

電腦側插件

裝完並重啓 dsh web(或桌面端)後,插件會自動:

  1. 在 0.0.0.0:6300 起橋接,把 Host 改寫成 127.0.0.1:1815(避免 Cookie 因端口變化失效);
  2. 自動發現 DSH 宿主端口(固定上游可在配置裏設 upstreamPort);
  3. 按策略開隧道:有 ngrok 則用 ngrok(可固定域名),否則嘗試 cloudflared 的 trycloudflare quick tunnel;
  4. 簽發 30 天 Cookie,寫入 status.json 與 connect.txt。

常用命令:

dsh-remote qr         # 打開配對頁,手機掃碼自動填地址與憑據
dsh-remote start --open   # 起橋接並打印地址/Cookie,同時打開二維碼頁
dsh-remote status     # 局域網地址、公網地址、Cookie、上游端口
dsh-remote connect    # 直接打印要抄進手機的兩行
dsh-remote doctor     # 自檢:憑據、ngrok、cloudflared、宿主端口
dsh-remote start      # 不開 DSH 也可單獨前臺跑

插件配置可在 profile 中覆蓋:

鍵 默認 作用
enabled true 關閉插件但不卸載
port 6300 橋接監聽端口
authority 127.0.0.1:1815 橋接呈現的 Host,Cookie 綁定它
tunnel auto auto / off / ngrok / cloudflared
upstreamPort 0 固定 DSH 宿主端口,0 爲自動發現

手機側 App

README 發佈頁提供 DSH Remote v4.21.3 APK(Android 8.0 / API 26 及以上)。安裝後應用名爲「DSH Remote」。

能力概覽(與 README 功能表一致):

  • 三種連接方式(局域網 / ngrok / 自定義),地址與憑證首次填寫後本地保存;
  • 會話列表:搜索、排序、歸檔篩選;默認顯示最近 10 條,可展開;
  • 長按會話:重命名、歸檔或取消歸檔;
  • 發消息、流式回覆、中斷;
  • 歷史分頁與本地緩存;
  • 模型選擇與分組目錄;
  • 權限模式僅可讀當前值(DSH 未開放遠程切換權限接口);
  • 自定義地址歷史。

掃碼配對:電腦上執行 dsh-remote qr 打開配對頁,手機在「設置 → 掃碼配對」掃描。二維碼不含 Cookie,只含 10 分鐘有效、單次使用的配對碼;也可手動輸入地址與配對碼。

安裝與啓用

安裝 DSH 插件

資料給出的推薦命令(須帶版本號與官方 npm 源,避免 profile 默認 minimumReleaseAge 或鏡像延遲導致裝到舊版):

dsh plugin --profile desktop add dsh-remote-hub@0.4.6 --registry=https://registry.npmjs.org

Web profile 同樣可用:

dsh plugin --profile web add dsh-remote-hub@0.4.6 --registry=https://registry.npmjs.org

裝完後用 dsh-remote status 確認;若版本不對,重跑上述命令。插件依賴 Node ^22.19.0 || >=24.0.0,許可證 MIT。

安裝 Android App

從 GitHub Releases 下載 APK,例如:

https://github.com/liaoguogang-hub/dsh-remote-public/releases/download/v4.21.3/DSH-Remote-v4.21.3.apk

配合關係:

電腦:dsh plugin … add dsh-remote-hub@0.4.6 → 起橋接 / 開隧道 / 籤 Cookie
手機:安裝 APK → 填地址與 Cookie(或掃碼)→ 連接

典型用法

推薦:插件 + 掃碼

  1. 在電腦上安裝插件並確保 DSH 在跑,執行 dsh-remote qr 或 dsh-remote start --open。
  2. 手機打開 DSH Remote,用掃碼配對或把 dsh-remote connect / status 輸出的地址與 Cookie 填入。
  3. 連接後會話列表與聊天與本地 DSH 能力對齊;電腦側橋接進程需保持運行,關掉即斷開手機。

Windows 用戶還可使用與 App 一併發佈的 connect.cmd:雙擊後起橋接、籤 30 天 Cookie、儘量開公網隧道並打印結果(邏輯與 dsh-remote start --open 同源),結果也會寫入同目錄 connect-info.txt。

公網與 ngrok(可選)

腳本或插件會優先嚐試 PATH 中的 ngrok,否則在條件允許時用 cloudflared 開免註冊 quick tunnel;都不可用時僅提供局域網地址。若需要固定公網域名,可按 README 註冊 ngrok、配置 Authtoken,並將 ngrok 放到 tools\ngrok.exe 或 PATH;注意隧道須使用 --host-header=127.0.0.1:1815,且不要對隧道再加 Basic Auth(會與 DSH Cookie 衝突)。

手工控制時,README 給出橋接、隧道與籤 Cookie 的示例:

node lan-proxy.mjs 6300 127.0.0.1:1815
ngrok http 6300 --host-header=127.0.0.1:1815
node mint.mjs "127.0.0.1:1815" 30

適用場景與注意

適合誰:已在 PC 上日常使用 DSH,希望在同一 WiFi 或外出時用手機查看會話、發消息、換模型,又不想維護一套獨立 Web 殼的用戶。

安全與運行環境:

  • 插件以當前 DSH 進程權限運行;安裝前應閱讀源碼與 MIT 許可證,自行評估風險。
  • 公共版倉庫不含任何內置地址、Token 或 Cookie;Cookie 由本機 ~/.dsh/.credentials.yaml 密鑰簽發,勿提交到倉庫。
  • 局域網橋接爲明文 HTTP,僅在可信網絡使用;跨網優先 TLS 隧道。
  • App 允許明文與用戶證書,地址來源需自行把關。

DeepSeek Harness 生態強調「一切皆插件」;社區目錄(如 dsh-plugin.org、skillhub.cn)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-remote-hub 把「橋接 + 隧道 + Cookie + 配對頁」收進 DSH 插件,再用原生 Android 客戶端對接官方 API,減少手抄 Host 和憑據的摩擦。目錄與源碼:

  • 插件目錄:https://www.skillhub.cn/plugins/liaoguogang-hub/dsh-remote-public
  • GitHub:https://github.com/liaoguogang-hub/dsh-remote-public
羽毛球分组比赛记分
小程序二维码

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

小夜