前言¶
用 dsh web 暴露 Connection 服務時,啓動日誌裏會打印帶 ?token=... 的配對鏈接。官方 @deepseek-ai/dsh-client-connection 每次進程啓動都會用 randomBytes(32) 生成新的 launch token,該值同時校驗 /connect 與 GET /?token=。要把鏈接寫進書籤、腳本或內部文檔,就得每次重啓後去日誌裏抄新 token。下面介紹社區插件 dsh-fixed-launch-token(維護者 starskyzheng,分類 admin-security):在顯式配置的前提下,把運行中的 browserAuth.launchToken 改爲你指定的固定值,啓動橫幅與訪問路徑統一使用該 token;默認不配置則不改動官方隨機行爲。
這是什麼¶
dsh-fixed-launch-token 是 DeepSeek Harness(DSH)生態下的 Cordis 插件,通過 cordis.patch.yml 注入 connection 服務,在隨機 token 生成之後把 service.browserAuth.launchToken 覆蓋爲配置項 fixedLaunchToken。它不替換官方 Connection 提供方,也不跳過 BrowserAuth;與 @iasiv5/dsh-skip-browser-auth 不同,校驗邏輯與 Host/Origin 信任柵欄保持不變,錯誤 token 仍返回 401,僞造 Host 仍 403。
核心功能¶
- 固定啓動與訪問 token:配置生效後,
dsh web橫幅、/connect?token=...、/?token=...均使用同一固定值。 - 默認惰性:未設置
fixedLaunchToken時插件不修改行爲,官方每進程隨機 token 照舊;日誌會說明插件已加載但未啓用。 - 配置校驗:token 長度 16–256,禁止空白字符及
?、#;過短或非法值會拋錯,避免誤以爲已固定實則仍隨機。 - 兼容性門禁:
package.json頂層engines.dsh聲明爲0.2.1-rc.2 || 0.2.2-rc.1,未驗證的 DSH 版本會跳過該 bundle 並給出明確原因。
安裝¶
本地目錄安裝(README 原文命令):
dsh plugin --profile <你的 profile> add /path/to/dsh-fixed-launch-token
也可在 GUI 插件管理中安裝該目錄。安裝後若不寫配置,行爲與未裝插件時一致。
卸載:
dsh plugin --profile <你的 profile> remove dsh-fixed-launch-token
配置與啓用¶
在你自己的 profile 裏按插件 id 覆蓋 config(用戶 patch 優先級最高),路徑示例:
~/.dsh/profiles/<你的 profile>/cordis.patch.yml
- id: fixed-launch-token
config:
fixedLaunchToken: "在這裏填你的固定值"
可用下列命令生成約 43 字符的 base64url 強隨機值(32 字節熵):
head -c 32 /dev/urandom | base64 | tr '+/' '-_' | tr -d '=\n'
修改後重啓 dsh web 生效;該值在插件 apply 時讀取一次。空串、省略 config、純空白、null 或非字符串類型均視爲不啓用;僅非空且合法字符串纔會固定 token。
典型用法與場景¶
適用場景:GUI 配對鏈接需要長期不變——存書籤、嵌入自動化腳本、寫入團隊文檔,無需每次重啓翻日誌。
訪問方式仍爲官方語義,例如日誌中的:
dsh web: https://<public-url>/?token=<你的固定值>
注意:固定 token 成爲長期憑據,泄露後有效期直到你改配置;不像隨機 token 那樣隨重啓作廢。插件以當前 dsh 進程權限運行,安裝與啓用前應自行查看 GitHub 倉庫 源碼與 MIT 許可證。
工作原理(簡述)¶
官方 processLaunchToken 將 token 存在未導出的模塊私有結構中;本插件在 ctx.inject(['connection'], ...) 回調裏改寫 browserAuth.launchToken,使 authorizeConnect、authorizeIndex、authenticatedUrl 讀取同一字段。若官方將來改變該字段形狀,插件設計爲拋錯而非靜默回退。僅在存在 connection 服務的 dsh web 場景有意義;無 webServer 的 profile 中該行保持 dormant。
測試與版本¶
倉庫內測試:
node --test tests/plugin.test.mjs
請直接傳入測試文件;node --test tests/ 傳目錄可能因 MODULE_NOT_FOUND 失敗。
當前包版本 1.0.0,實測兼容 DSH 0.2.1-rc.2 與 0.2.2-rc.1;其他版本可能被兼容性門禁跳過,而非靜默降級。
結尾¶
dsh-fixed-launch-token 在保留官方 BrowserAuth 的前提下,把 launch token 從「每啓隨機」改爲「配置固定」,默認不配置則零影響。目錄與源碼:
- 社區目錄:https://www.skillhub.cn/plugins/starskyzheng/dsh-fixed-launch-token
- GitHub:https://github.com/starskyzheng/dsh-fixed-launch-token
DSH 社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;選用插件時請按自身安全要求評估固定憑據的風險。