前言¶
DeepSeek Harness(DSH)桌面端每次啓動時,Desktop Host 會以 --port 0 隨機監聽端口。連接服務 @deepseek-ai/dsh-client-connection 會按 host:port 的 SHA256 爲每個端口寫入名爲 dsh-auth-* 的會話 Cookie,默認保留 30 天且不會自動清理。歡迎頁通過 Chromium net.fetch 發起請求時,會把歷史上所有 dsh-auth-* 一併塞進 Cookie 頭;Node 默認 maxHeaderSize 爲 16 KB,大約 90 條 Cookie 就會觸發 HTTP 431,Electron 側表現爲 desktop welcome: Web authentication failed,應用無法啓動。Web 模式端口固定,不受此問題影響。下面介紹社區插件 dsh-cookie-guard 如何用聲明式 bundle 補丁把 Cookie 最長壽命從 30 天壓到 7 天,並在已「卡死」的機器上提供獨立清理腳本。
這是什麼¶
dsh-cookie-guard 由維護者 kevindawn11-hash 發佈,分類爲客戶端插件,託管於 GitHub,社區目錄頁見 SkillHub。它不修改已安裝的 Electron 主進程、不寫運行時邏輯,只在 desktop profile 裏通過 bundle patch 覆蓋 connection 節點的 cookieMaxAgeDays,從而限制 Cookie 累積速度;補丁隨 profile 存在,應用更新後仍有效。
症狀與根因(便於對號入座)¶
啓動失敗時界面常見:
DeepSeek Harness is unavailable
The application could not start or stopped unexpectedly.
診斷日誌(Windows 下 %APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-*-host.log)裏可能出現 desktop welcome: Web authentication failed,或 Host 側 HTTP 431(Request Header Fields Too Large)。README 記載:約 13 天內累積 71 條 Cookie(約 12 KB)即可復現;若每天啓動 3~5 次,長期使用桌面端的用戶往往在一個月內會遇到。這與賬號、網絡或第三方插件無關,是 Cookie 無界增長導致的請求頭過大。
核心功能¶
- 聲明式 bundle 補丁:將
cookieMaxAgeDays設爲 7(相對默認 30 天),使 7 天內啓動次數對應的 Cookie 數量遠低於 16 KB 上限。 - 不侵入安裝包:補丁在 profile 中生效,不改動
app.asar,無 Electron main 進程 hack。 - 獨立清理工具:包內
tools/prune-cookies.mjs可在不安裝插件、且 DSH 完全關閉時,備份並刪除 ChromiumNetwork\Cookies中所有dsh-auth-*行,供已無法啓動的環境救急。
補丁內容在資料中給出爲:
- id: connection
config:
cookieMaxAgeDays: 7
DSH 在 @deepseek-ai/dsh-web-app 之後應用 bundle patch,因此會覆蓋 connection 節點配置。若你每天重啓、希望更緊的上限,可將天數改爲 1;若常開一週以上會話,可適當增大。
安裝與啓用¶
需要 Node.js >= 22,以及自帶 desktop profile 的 DSH 構建(資料寫明 0.2.1-rc.3 及之後)。插件以當前 DSH Host 進程權限運行;安裝前建議閱讀倉庫源碼與 MIT 許可證。
推薦:一條命令¶
與社區插件市場(如 dsh-plugin.org、dsh-market)相同的安裝路徑:
dsh plugin --profile desktop add dsh-cookie-guard
安裝後重啓 DeepSeek Harness。
從 GitHub 添加¶
dsh plugin --profile desktop add github:kevindawn11-hash/dsh-cookie-guard
手動寫入 desktop profile¶
在 PowerShell 中:
cd $env:USERPROFILE\.dsh\profiles\desktop
pnpm add dsh-cookie-guard
在同一目錄的 package.json 裏,把 "dsh-cookie-guard" 追加到 dsh.profile.bundles,再重啓 DSH。
僅清理、不裝插件¶
DSH 完全退出後:
node tools/prune-cookies.mjs
腳本會備份 Network\Cookies,再刪除所有 dsh-auth-*;下次啓動會重新簽發 Cookie。
驗證¶
重啓後,可用 README 中的方式查詢 Cookie 名稱與過期時間(Windows,APPDATA 指向用戶 AppData):
node -e "const{DatabaseSync}=require('node:sqlite');const db=new DatabaseSync(process.env.APPDATA+'\\@deepseek-ai\\dsh-desktop\\Network\\Cookies');console.log(db.prepare(\"select name,expires_utc from cookies where name like 'dsh-auth-%'\").all())"
Chromium 時間戳爲自 1601 年以來的微秒數。
適用場景與限制¶
適合:長期使用 DSH 桌面打包版(Windows/macOS)、頻繁重啓導致大量 dsh-auth-* 堆積的用戶;在 upstream 修復前作爲緩解措施。
限制:插件運行在 Host 進程內,無法在運行時讀寫 Electron 主進程的 Chromium Cookie 庫(運行時被獨佔鎖定),因此只能限制增量,不能替歷史 Cookie 做自動清掃。徹底修復需上游改動(資料指向 docs/upstream-issue.md:例如在 host.start() 前清理過期 Cookie,或按 host 哈希命名 Cookie 以便覆蓋而非新增)。
兼容性(來自 README 表格):0.2.1-rc.3、0.2.1-rc.5 均可復現問題且補丁有效。CLI / dsh web 不受影響。
npm 包當前版本爲 0.1.1。
結尾¶
dsh-cookie-guard 用最小 patch 把桌面會話 Cookie 壽命 capped 到 7 天,降低 HTTP 431 與認證失敗導致的啓動崩潰概率;已中招時可用 prune-cookies.mjs 救場。DSH 生態強調「一切皆插件」,社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
- 目錄頁:https://www.skillhub.cn/plugins/kevindawn11-hash/dsh-cookie-guard
- GitHub:https://github.com/kevindawn11-hash/dsh-cookie-guard