dsh-http-header-limit:抬升 Host 請求頭上限,避免 DSH 桌面版反覆重啓後啓動崩潰

前言

DeepSeek Harness(DSH)桌面版每次啓動會綁定隨機端口,會話 cookie 名稱隨端口變化,形如 dsh-auth-*。舊 cookie 不會被覆蓋,30 天內也不會自動清理。重啓次數一多,這些記錄會在 Chromium 側持續累積。當請求頭體積接近 Node 默認的 16 KB 上限時,本地 Host 會返回 HTTP 431,桌面殼則報 Error: desktop welcome: Web authentication failed,窗口往往一閃即退。這與「刪配置、重裝應用」無關,根因是請求頭溢出。社區插件 dsh-http-header-limit(維護者 divelife,分類:客戶端)在啓動階段把 Host 的 maxHeaderSize 提高到 256 KB,屬於針對上游討論的臨時繞過;不刪 cookie、不改安裝目錄裏的應用文件,升級 DSH 後插件仍可保留。

這是什麼

dsh-http-header-limit 是 DSH 客戶端側插件,通過 Cordis patch 調整本地 Host 的 HTTP 請求頭大小上限。README 說明:約 71 條 dsh-auth-* cookie(合計約 16.4 KB)即可觸達 Node 16 KB 默認限制;將上限設爲 256 KB 後,理論上可容納約 1148 條同類 cookie。上游背景見 deepseek-ai/deepseek-harness#9924。當前 release 包版本爲 1.0.0,許可證 MIT。

崩潰機制(簡要)

  1. DSH 桌面版每次啓動使用新端口,dsh-auth-<端口> 類 cookie 只增不減(30 天內不清理)。
  2. 啓動流程向本地 Host 發起的請求攜帶全部相關 cookie,請求頭體積超過 Node 默認 16 KB。
  3. Host 響應 431,認證失敗,表現爲 desktop welcome: Web authentication failed 與進程退出。

該插件不修改 cookie 存儲策略,只擴大 Host 側可接受的請求頭容量。

核心功能

  • 在 DSH 啓動加載插件時,通過 cordis.patch.yml 將 Host 的 maxHeaderSize 設爲 262144(256 KB)。
  • 安裝後無需日常配置,每次啓動自動生效。
  • 附帶 dsh-cookie-rescue 腳本(Windows PowerShell / macOS shell):在補丁尚未生效且已無法啓動時,可安全刪除 127.0.0.1 下以 dsh-auth- 開頭的 cookie 記錄(刪前備份);依賴 Node ≥ 22.5 的 node:sqlite,無需 Python。

安裝與啓用

在 DSH 內安裝,不要使用命令行 git clone,也勿憑插件名自行拼接 dsh plugin add。

  1. 從 Releases 下載 dsh-http-header-limit-1.0.0.tgz,不要解壓,記下完整路徑;或直接複製 release 頁中 .tgz 結尾的下載鏈接,可跳過本地下載步驟。
  2. 打開 DSH,側邊欄進入「插件」→「添加插件」。
  3. 在輸入框填入 tgz 的完整路徑或上述下載鏈接,例如:
   C:\Users\你\Downloads\dsh-http-header-limit-1.0.0.tgz
  1. 安裝完成後完全退出 DSH(含系統托盤)再啓動;插件在啓動階段加載。

插件以當前 DSH 進程權限運行;安裝前建議瀏覽 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的安全策略。

典型用法與驗證

裝好即可,無需額外開關。若要確認插件已生效,可查看標記文件:

cat ~/.dsh/http-header-limit.json
# {"at":"...","limit":262144,"status":"maxHeaderSize=262144 on 127.0.0.1:49677"}

status 中的端口應與當次 Host 監聽端口一致。文件不存在通常表示插件未在啓動鏈路上運行。

已崩潰時的急救腳本

補丁未裝上、且 DSH 已無法啓動時使用。必須先完全退出 DSH。

Windows:

powershell -ExecutionPolicy Bypass -File dsh-cookie-rescue.ps1 -DryRun   # 先預覽
powershell -ExecutionPolicy Bypass -File dsh-cookie-rescue.ps1           # 真刪

macOS:

chmod +x dsh-cookie-rescue.sh
./dsh-cookie-rescue.sh --dry-run
./dsh-cookie-rescue.sh

腳本會嘗試常見 Cookies 數據庫路徑(如 Windows 下 %APPDATA%\@deepseek-ai\dsh-desktop\Network\Cookies,macOS/Linux 下 ~/.dsh/electron-user-data/Network/Cookies 等)。若自動探測失敗,可指定環境變量:

$env:DSH_COOKIES_DB = "C:\完整\路徑\Cookies"
export DSH_COOKIES_DB="/full/path/Cookies"

適用場景與注意

適合: 長期使用 DSH 桌面版、頻繁完全退出再啓動,且尚未遇到或已經遇到 431 / Web authentication failed 閃退的開發者。

注意:

  • 這是臨時繞過,不是上游對 cookie 累積問題的根治方案。
  • 啓動失敗時不要點擊彈窗中的「Disable third-party plugins」。README 說明該操作會改名 cordis.patch.yml 並將 dsh.profile.bundles 裁到僅剩兩個官方包,無法修復本 bug,反而會丟失配置。
  • DSH 生態強調「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

若你的 DSH 桌面版因 dsh-auth-* cookie 撐爆請求頭而無法啓動,dsh-http-header-limit 用最小改動把 Host 頭上限抬到 256 KB,並可選 cookie 急救腳本應急。詳情與 release 包見 GitHub:divelife/dsh-http-header-limit;目錄介紹見 SkillHub。

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

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

小夜