dsh-uriauth:爲 DSH Web UI 提供可配置的固定 URI 入口

前言

跑 dsh web 時,瀏覽器要能進控制台,通常得先拿到日誌裏的一次性 launch token,再帶着 ?token=… 訪問根路徑,服務端纔會下發長期 cookie。換瀏覽器、清 cookie、換端口或換訪問地址、另一臺機器首次訪問,以及 cookie 約 30 天過期後,都得回到終端日誌裏找新 token。DSH 本身沒有「關閉 Web 鑑權」的開關,這些場景裏反覆翻日誌很煩。

下面介紹社區插件 dsh-uriauth(維護者 hsushjk),它在服務端進程內完成「當前 launch token → 會話 cookie」的交換,讓你通過一條固定路徑進 Web UI,而不必每次從地址欄拼 token。裝好插件後默認關閉,需要在設置裏手動開啓並確認警告——因爲這條入口等價於把本機 DSH 進程的使用權交給拿到鏈接的人。

這是什麼

dsh-uriauth 是 DeepSeek Harness(DSH)的宿主 + 客戶端插件:在 Web 側註冊可配置的單段路徑(默認 /trustme),訪問該路徑時用當前進程的 launch token 完成鑑權並寫入 cookie。服務重啓後會生成新 token,入口仍讀進程內最新 token,不必再改書籤裏的 query。插件歸屬社區倉庫 hsushjk/dsh-uriauth,在 SkillHub 插件目錄 中分類爲客戶端相關能力(含 Web 設置頁)。

DSH Web 鑑權在做什麼(背景)

dsh web 的鑑權流程大致是:

  1. 每次啓動生成隨機 launch token,只在日誌裏打印:dsh web: http://<host>:<port>/?token=<隨機串>
  2. 帶 token 訪問一次 /,服務端返回 303 並 Set-Cookie: dsh-auth-<id>=…(HttpOnly、SameSite=Strict,約 30 天)
  3. 之後靠 cookie 通行;cookie 與訪問的 authority 綁定

本插件不取消上述模型,而是多一條「固定 URI → 自動完成第 2 步」的通道。

核心功能

  • 可配置入口路徑:默認路徑名爲 trustme(即 /trustme),可在設置或配置文件中修改;保留名(如 api、plugins 等)不可用。
  • 兩種模式:exchange(推薦)不在瀏覽器地址欄暴露 token;redirect 用 302 跳到帶 token 的 URL,兼容舊習慣,但 token 可能留在訪問記錄裏。
  • 總開關默認關:enabled 爲 false 時不註冊入口路由,對應路徑返回 404;開啓前需在設置頁閱讀警告並確認。
  • 設置頁集成:路徑爲「設置 → URI 入口 → 開啓入口 → 讀警告 → 確認開啓」;修改會寫回 <DSH_HOME>/uri-auth.json。
  • 跨站導航:可選 allowCrossSiteNavigation,控制是否允許被瀏覽器視爲跨站或 PWA 啓動的導航走入口。

插件依賴 Host 的 webServer 與 connection 服務,使用 requestRejection、authenticatedUrl、authorizeIndex 等既有 API;開發與驗證環境爲 @deepseek-ai/dsh 0.2.1-rc.5、Node 22+(package 要求 Node >=22.13.0)。

安裝與啓用

插件裝在 DSH 的 profile 裏(以下以 web profile 爲例)。

  1. 克隆到本地插件目錄:
git clone https://github.com/hsushjk/dsh-uriauth.git ~/plugins/dsh-uriauth
  1. 以 file 依賴裝進 profile:
cd ~/.dsh/profiles/web
pnpm add file:~/plugins/dsh-uriauth
  1. 在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中追加包名 dsh-uriauth,例如:
{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-web-app",
        "dsh-uriauth"
      ]
    }
  }
}
  1. 重啓 DSH。

經過上面的步驟,插件已加載但入口仍關閉。要到 Web UI 裏按下一節開啓,入口才會生效。

典型用法

在 DSH Web UI 中:

設置 → URI 入口 → 開啓入口 → 讀警告 → 確認開啓

之後在可信網絡內訪問形如 http://<host>:<port>/<entry> 的地址(默認 entry 爲 trustme),即可完成 cookie 交換並正常使用界面,無需手動複製日誌裏的 ?token=…。

若需直接改配置,可編輯 <DSH_HOME>/uri-auth.json:

字段 默認值 說明
enabled false 入口總開關;改爲 true 時除設置頁確認外,API 需帶 "confirm": true
entry trustme 單段路徑名,1–64 字符,僅字母數字及 . _ ~ -
mode exchange exchange 或 redirect
allowCrossSiteNavigation false 是否允許跨站/PWA 類導航使用入口

刪除 uri-auth.json 會恢復上述默認值(包括關閉開關)。

適用場景與注意

適合:內網或本機長期開 dsh web、經常換瀏覽器或設備、希望書籤固定爲一條 URI 而不是每次改 token 的開發者。

不適合:需要用戶名密碼賬號體系的場景——README 建議改用認證網關類插件;本插件不提供賬號體系。

安全:入口鏈接持有者與 DSH 進程權限等價。只在可信網絡使用;若暴露到公網,應在前面加反代 Basic Auth、VPN、Cloudflare Access 等真正認證。安裝前請自行查看 源碼與 MIT 許可證,確認與您的 threat model 一致。

DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等社區目錄獨立於 DeepSeek / 幻方,並非官方應用商店。

結尾

dsh-uriauth 把「翻日誌找 token」換成「固定 URI + 設置裏一次性開啓」,並默認關閉以降低誤暴露風險。更多說明見 GitHub README 與 SkillHub 目錄頁。

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

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

小夜