前言¶
跑 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 的鑑權流程大致是:
- 每次啓動生成隨機 launch token,只在日誌裏打印:
dsh web: http://<host>:<port>/?token=<隨機串> - 帶 token 訪問一次
/,服務端返回303並Set-Cookie: dsh-auth-<id>=…(HttpOnly、SameSite=Strict,約 30 天) - 之後靠 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 爲例)。
- 克隆到本地插件目錄:
git clone https://github.com/hsushjk/dsh-uriauth.git ~/plugins/dsh-uriauth
- 以 file 依賴裝進 profile:
cd ~/.dsh/profiles/web
pnpm add file:~/plugins/dsh-uriauth
- 在
~/.dsh/profiles/web/package.json的dsh.profile.bundles中追加包名dsh-uriauth,例如:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-web-app",
"dsh-uriauth"
]
}
}
}
- 重啓 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 目錄頁。