前言¶
Windows 上的 DeepSeek Harness 桌面端用一段時間後,可能在某次啓動時突然打不開,報 Web authentication failed。排查方向往往先想到登錄態失效、Host 端口衝突,但實際原因是 Cookie 庫被登錄 Cookie 撐太大了:每次啓動都會多沉積一條 dsh-auth-*,從不清理,攢到約 70 條時 Cookie 請求頭超過 Node 默認的 16 KB 上限,本地 Host 直接回 431。
下面介紹的 m0yun/dsh-cookie-guard 就是針對這個問題的插件。它不做快捷方式加殼、不改啓動方式,而是在 DSH 啓動時掛一個後臺清理器,等 DSH 退出後刪掉上一輪及更早的 dsh-auth-*,下一次啓動就是乾淨的。
這是什麼¶
dsh-cookie-guard 由 M0Yun 維護,分類 admin-security,目錄頁星標爲 1。定位很單一:後臺清理 DSH 桌面端殘留的 dsh-auth-* 登錄 Cookie,解決由 Cookie 堆積引起的 431 打不開問題。許可證爲 MIT。
問題根因在 @deepseek-ai/dsh-client-connection:Cookie 名由 authority 哈希得到,
const COOKIE_PREFIX = "dsh-auth-";
function cookieName(authority) {
return COOKIE_PREFIX + encodeBase64Url(createHash("sha256").update(authority).digest());
}
// authority = "127.0.0.1:<隨機端口>"
Host 每次啓動都換隨機端口,因此每次啓動的 Cookie 名都不一樣;Max-Age 又是幾十天,Chromium 不會主動清,DSH 裏也沒有刪除舊 Cookie 的代碼。沉積量隨啓動次數線性增長:
| 啓動次數 | 沉積的 dsh-auth-* |
Cookie 請求頭 |
|---|---|---|
| 1 | 1 條 | ~0.2 KB |
| 30 | 30 條 | ~6 KB |
| 70 | 70 條 | > 16 KB → 431 |
核心功能¶
清理器的工作方式分三步:
- 插件加載時(Host 啓動)
detach一個獨立清理進程lib/cleaner.mjs,父進程退出它也不受影響。 - 清理器每 15 秒探測一次 Cookies 庫能否獨佔打開。打不開說明 DSH 還在跑(Chromium 獨佔該文件),繼續等;打得開說明 DSH 已退出,立刻執行
delete from cookies where name like 'dsh-auth-%'加VACUUM,然後自己退出。 - 下次啓動時庫裏只剩本次要寫的那一條,請求頭穩定在幾百字節。
清理只用 node:sqlite(Node 22.5+ 內置),沒有第三方依賴,也不需要 Python 或 PowerShell。插件目錄結構如下:
lib/index.js cordis 插件:註冊 cookie_guard 工具 + 啓動清理器
lib/cleaner.mjs 後臺清理器:等鎖釋放 → 刪 dsh-auth-* → 退出
cordis.patch.yml bundle 註冊行
安裝與啓用¶
安裝命令來自 README 原文,從倉庫直接裝:
# 直接從倉庫裝(推薦)
dsh plugin add github:M0Yun/dsh-cookie-guard
# 或者裝本地目錄
dsh plugin add D:\path\to\dsh-cookie-guard
需要注意一點:npm 上的 dsh-cookie-guard 不是這個倉庫,那是別人的同名包(0.1.1),不要用 dsh plugin add dsh-cookie-guard。
安裝後重啓 Harness,插件開始工作。之後正常開關 DSH 即可,不用改任何使用習慣。回滾命令:
dsh plugin remove dsh-cookie-guard
插件只會在 %APPDATA%\@deepseek-ai\dsh-desktop\Network\ 下寫 Cookies.guard.pid 和 Network.guard.log,卸載時刪掉即可。
典型用法¶
agent 側暴露了一個工具 cookie_guard,有兩個 action:
| action | 作用 |
|---|---|
status |
Cookie 庫體積、dsh-auth-* 條數(庫未被佔用時)、清理器是否在跑、上次清理記錄 |
clean |
庫已被佔用則把清理排到 DSH 退出後;庫空着則立刻清一次 |
狀態日誌寫在 %APPDATA%\@deepseek-ai\dsh-desktop\Network.guard.log,一行一次清理,形如:
2026-11-04T16:17:24.467Z pruned 60 cookie(s); 62 -> 2
可以按這個格式確認清理是否真的發生過,而不用猜插件有沒有生效。
適用場景與注意¶
適合 Windows 桌面端、啓動次數較多、出現過 431 或 Web authentication failed 的 DSH 用戶。使用前留意以下幾點:
- 只清
dsh-auth-*,其他 Cookie(包括平臺登錄)一條不動。 - 清理發生在 DSH 退出後:當前這一輪啓動期間,庫裏仍然是上一輪積累的量;第一次裝完後要退出一次 DSH 纔會初見效果。
- 如果 DSH 長時間不退出,清理器就一直等,默認最多 24 小時,可用
config.maxHours調整。 - 只支持 Windows 桌面端,Web/headless 不受影響。
- 插件以當前 dsh 進程的權限運行,會讀寫 DSH 的 Cookie 庫和
%APPDATA%下的日誌文件。安裝前應先檢查源碼與許可證(MIT © M0Yun),確認與自己的使用環境相符。
結尾¶
dsh-cookie-guard 的價值在於把一個很難手動排查的問題(啓動失敗、登錄態異常)收斂成一次退出後自動完成的清理,且改動範圍限定在 dsh-auth-*,不影響其他 Cookie。目錄頁:https://www.skillhub.cn/plugins/M0Yun/dsh-cookie-guard ;倉庫:https://github.com/M0Yun/dsh-cookie-guard 。該目錄站是社區站點,與 DeepSeek / 幻方無官方從屬關係。