dsh-mobile-access:局域網內用手機瀏覽器訪問 DSH

前言

DeepSeek Harness(DSH)的 Web 界面默認只監聽本機 127.0.0.1。上游出於安全考慮不允許把 Web 服務直接綁到 0.0.0.0,否則會把遠程代碼執行面暴露到局域網。若你希望在同一 Wi‑Fi 下用手機瀏覽器查看會話、改設置或跟進任務,常見做法是改端口轉發或自己搭反向代理,還要處理 DSH 0.1.5 起引入的瀏覽器會話認證,手機端很容易卡在 dsh web authentication required。

下面介紹社區插件 dsh-mobile-access(維護者 MacilyDots,分類:客戶端)。它在不修改 DSH 源碼的前提下,在 DSH 進程內啓動獨立 HTTPS 網關,用 PIN 與反向代理把訪問引到本機 Web 端口,並橋接 DSH 的瀏覽器會話握手,使手機掃碼即可使用。

這是什麼

dsh-mobile-access 是 DeepSeek Harness 的移動訪問插件:同一局域網內,用手機掃描設置頁上的二維碼(或手動輸入地址),在本機瀏覽器之外訪問正在運行的 DSH。

實現思路參考社區項目 dsh-mobile 的安全網關概念,但範圍收窄爲「局域網 + 手機瀏覽器」:不包含 Tailscale/cpolar/FRP 等遠程隧道,也沒有 Android 獨立客戶端;代碼在插件倉庫內可見、由你自行安裝與審計。

核心機制與安全邊界

插件不改動 DSH Web 服務器,DSH Web 始終留在 127.0.0.1。在 DSH 進程內它會:

  1. 啓動監聽 0.0.0.0:<port> 的 HTTPS 網關(自簽證書);
  2. 將請求 反向代理 到 127.0.0.1:<DSH webServer 端口>;
  3. 對網關側做 PIN 認證:手機瀏覽器首次打開須輸入 PIN,通過後網關設置 httpOnly 會話 cookie,後續請求(含 WebSocket)須已認證;
  4. 轉發時重寫 Host / Origin / sec-fetch-site,使 DSH 的瀏覽器信任邊界仍把 /api 與 SSE/WebSocket 視爲同源;
  5. 橋接 DSH ≥ 0.1.5 的瀏覽器會話認證:在服務端用進程內 startup token 調用 connection.authenticatedUrl(),經 GET /?token=… 換取 dsh-auth-<authority> cookie 並緩存、注入後續轉發;token 不下發到手機。會話失效(重啓、改端口、cookie 過期)時網關收到 401 會清緩存、重新交換並重試一次。

0.2.0 起網關 PIN 會話 token 會持久化,DSH 重啓後手機不必重複輸入 PIN;併發未認證請求對 DSH 會話 cookie 的交換會做單次合併。

安全邊界(README 原文強調):開啓後網關在局域網可見,僅靠 PIN 保護。僅建議在可信的家庭或辦公 LAN 使用,PIN 須足夠強;不能替代公網暴露時的完整安全方案。

依賴(運行時):selfsigned(自簽證書)、qrcode(訪問地址二維碼)、http-proxy(HTTP/SSE/WebSocket 透傳)。

安裝

安裝命令以倉庫 README 爲準。將 <profile> 換成你的 DSH profile 名稱:

# Install from GitHub (recommended)
dsh plugin --profile <profile> add github:MacilyDots/dsh-mobile-access

# Or install from a local clone
dsh plugin --profile <profile> add file:<absolute path to this repository>

dsh --profile <profile>

dsh plugin add 會通過 pnpm add 安裝,併爲聲明瞭 dsh.bundle 的插件寫入 profile 的 bundles 層。安裝後必須重啓 DSH,插件纔會加載。

插件以當前 DSH 進程權限運行;安裝前請自行閱讀 index.js、client.js 與 LICENSE,確認符合你的信任與合規要求。

典型用法

經過上面的安裝與重啓,按下列步驟啓用局域網訪問:

  1. 打開 DSH 設置頁,進入 Mobile access(移動訪問)卡片。
  2. 設置至少 4 位的 access PIN,點擊 Enable LAN access;端口默認 3443,可修改。
  3. 面板會顯示 access address(形如 https://<本機 LAN IPv4>:<port>)和 QR code。
  4. 手機接入 同一局域網,用系統瀏覽器掃碼或手動輸入地址。
  5. 首次訪問:瀏覽器會提示 信任自簽證書(需確認);隨後輸入 PIN 即可操作 DSH Web。
  6. 用完後在設置頁點擊 Disable mobile access 關閉網關。

說明:

  • 自簽證書首次啓用時生成,緩存在 $DSH_HOME/mobile-access/cert.pem 與 key.pem(2048 位 RSA,有效期 400 天)。手機瀏覽器上的「證書不受信任」屬預期;各瀏覽器「繼續訪問」入口位置不同(iOS 上多爲「顯示詳細信息 → 訪問此網站」)。
  • 若升級到 DSH ≥ 0.1.5 後手機仍出現 dsh web authentication required,應使用含會話橋接的 0.2.0 網關邏輯;手機端無需額外步驟。
  • 僅支持 IPv4 局域網地址;換網後通常需重新啓用(或 DSH 重啓後按持久化策略再開)。

本機瀏覽器還可通過 DSH 迴環 Web 服務器訪問控制接口(不經過對外網關):

  • GET /dsh-mobile-access/status — 狀態(含 QR 的 dataURL)
  • POST /dsh-mobile-access/enable — body:{ pin, port? }
  • POST /dsh-mobile-access/disable
  • POST /dsh-mobile-access/pin — body:{ pin }

運行時狀態與證書目錄:$DSH_HOME/mobile-access/。

適用場景與限制

適合:已在臺式機或筆記本上跑 DSH,希望在同一 Wi‑Fi 下用手機瀏覽器臨時查看或操作,且接受「PIN + 自籤 HTTPS + 可信 LAN」這一安全模型。

不適合或未實現:公網暴露、設備配對、遠程隧道、獨立 Android 應用——這些屬於 dsh-mobile 等更寬方案,本插件刻意不做。

限制(README 列舉):

  • 僅 IPv4 LAN;
  • 切換網絡後需再次啓用(或依賴重啓後的恢復行爲再確認);
  • 無 dsh-mobile 的設備配對與遠程隧道能力。

結尾

dsh-mobile-access 把「DSH 只監聽本機」與「手機要在局域網裏用瀏覽器訪問」之間的矛盾,用獨立 HTTPS 網關、PIN、反向代理和 DSH 0.1.5+ 會話橋接拆開處理,DSH Web 仍綁定在 127.0.0.1。若你的需求就是可信 LAN 內的掃碼訪問,可按官方命令安裝並在設置裏顯式開啓。

DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等目錄爲社區維護,與 DeepSeek / 幻方無官方從屬關係。選用第三方插件前請覈對源碼、許可證與自身安全策略。

羽毛球分组比赛记分
小程序二维码

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

小夜