前言¶
DeepSeek Harness(DSH)桌面端每次啓動都會在本地 Chromium 網絡庫裏新增一條以 dsh-auth- 開頭的登錄 cookie,名字隨當次監聽的迴環端口變化,舊條目在有效期內不會被自動回收。條目一多,這些 cookie 會擠佔單個站點約 16 KB 的請求頭軟上限;社區裏常見說法是大約 72 條附近會出現啓動失敗或頁面白屏。手工刪庫風險高,也不適合長期靠記憶維護。dsh-cookie-guard 把「數條數、超閾值先備份再刪、用插件開關控制是否執行」做成 Windows 上的計劃任務,面向長期在桌面端用 DSH 的開發者。
這是什麼¶
dsh-cookie-guard 是維護者 mxw0808 發佈的 DSH 插件,分類爲 admin-security。一句話:它是 DSH 的 cookie 體檢員——只在 dsh-auth-* 數量超過閾值時才備份並清理,平時只記日誌;在應用裏停用插件時,周任務也不會刪任何 cookie。
它不聯網、不上傳、不改 DSH 配置、不動站點數據,也不碰 localStorage 或會話文件。
背景:cookie 爲什麼會堆¶
DSH 每次啓動監聽隨機迴環端口,登錄 cookie 名由主機與端口經 SHA256 等步驟生成,因此每次啓動往往多一條新名字的記錄,默認約 30 天有效。README 中給出 11 天、51 次啓動的實測:51 條 dsh-auth-*,約佔請求頭 11577 B / 16384 B(71%)。按類似節奏,條數會繼續上漲,早於「第 72 次打開必崩」這類經驗閾值就可能逼近上限。
插件盯的是 Windows 路徑下的 SQLite 庫:
%APPDATA%\@deepseek-ai\dsh-desktop\Network\Cookies
其中名字以 dsh-auth- 開頭的行;單條約 227 字節量級(README 實測單條最大 173 B)。默認閾值 40 條(約 9 KB,README 稱約佔請求頭上限的 55%),到線即清理,不必等到應用已經起不來。
核心功能¶
定時體檢與清理策略¶
- 何時執行:每週一 12:00,由 Windows 計劃任務
DSH Cookie Weekly Check觸發(插件加載時用schtasks /Create自行註冊,卸載時用schtasks /Delete刪除)。 - DSH 正在運行時:若週一 12:00 時 DSH 仍開着,腳本每 5 分鐘探測一次是否已關閉,最多等 3 小時;因 DSH 運行時會獨佔 Cookies 庫,無法在讀庫狀態下清理。
- 未超閾值:不刪數據,向
cookie-report.txt追加一行(時間、總數、條數、佔用字節)。 - 超過閾值:先將整個庫複製爲
Cookies.bak-<時間戳>,再刪除所有dsh-auth-*行,其它 cookie 不動。 - 失敗時:庫被佔用、找不到 Python、庫不存在等情況下只記日誌並返回非零退出碼,不會刪除任何 cookie,等下週再試。
插件開關即任務開關¶
開關讀的是 profile 的 dsh.profile.bundles:插件在啓用列表裏則周任務正常跑 guard;移出或停用則任務只寫一行 nothing to do 後退出,一條 cookie 都不刪。判據在周任務腳本里,即使插件 apply 未執行到,開關邏輯仍有效。
三個組成部分¶
| 文件 | 作用 |
|---|---|
lib/index.js + cordis.patch.yml |
插件本體;加載時註冊計劃任務,卸載時刪任務,並寫 last-load.json |
scripts/dsh_cookie_guard.py |
複製 Cookies 到臨時目錄後用 sqlite 統計;--block N 超閾值時備份並刪 dsh-auth-* |
scripts/dsh_cookie_weekly.ps1 |
計劃任務入口:檢查插件是否啓用,等待 DSH 關閉後調用 guard |
安裝與啓用¶
一條命令由插件自己註冊計劃任務,腳本從包內目錄運行,不需要把文件複製到 %USERPROFILE%,也不需要手工 schtasks。桌面端 desktop profile 若命令行寫不進去,可在應用內 設置 → 插件 安裝;裝完後完全退出 DSH 再打開。
有 git 時:
git clone https://github.com/mxw0808/dsh-cookie-guard.git
dsh plugin --profile desktop add ./dsh-cookie-guard
沒有 git:在 GitHub 倉庫頁 Code → Download ZIP,解壓後對解壓目錄執行:
dsh plugin --profile desktop add <解壓出來的目錄>
插件加載後會嘗試創建或覆蓋同名周任務(/F),以當前用戶身份運行,一般不需要管理員權限。若你曾用管理員身份手工建過同名任務,需先在「任務計劃程序」裏刪掉,否則插件可能只能啓用已有任務而無法改指向路徑。
重啓後可在插件目錄查看 lib/last-load.json:mode: created 表示任務由插件新建;enabled-existing / failed 等也在此記錄。
典型用法¶
手動跑一次體檢(可選)¶
不帶參數只統計、不清理:
python <插件目錄>\scripts\dsh_cookie_guard.py
超過 40 條才清理:
python <插件目錄>\scripts\dsh_cookie_guard.py --block 40
guard 需要 Python 3.8+;dsh_cookie_weekly.ps1 會優先用 DSH 自帶的 Python,找不到再退回系統 python。
驗證是否生效¶
%LOCALAPPDATA%\dsh-cookie-guard\cookie-weekly.log:周任務時間線<插件目錄>\scripts\cookie-report.txt:每次體檢數據<插件目錄>\lib\last-load.json:宿主加載插件時的 schtasks 結果
日誌裏 nothing to do 表示插件處於停用;attempt 1: DSH is closed, running guard 表示正在執行清理流程。
適用場景與注意¶
適合誰:僅在 Windows 上使用 DSH 桌面端(package.json 中 os 爲 win32),且長期頻繁啓動、希望自動控管 dsh-auth-* 數量的用戶。非 Windows 上插件會寫 skipped 後退出。
權限與安全:插件與計劃任務以安裝 DSH 的當前用戶權限運行;會讀寫 %APPDATA% 下 DSH 的 Cookies 庫並在同目錄生成備份文件。安裝前應閱讀 倉庫源碼 與 MIT 許可證,自行判斷是否滿足環境策略。
其它限制(來自 README):
- 計劃任務名固定爲
DSH Cookie Weekly Check;profile 名固定爲desktop,改用web需改lib/index.js與 ps1 兩處。 - 備份文件
Cookies.bak-<時間戳>可定期手工清理。 - 社區目錄 SkillHub 插件頁 與 GitHub 由社區維護,與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本插件是其中的運維向小工具。
結尾¶
dsh-cookie-guard 把「每週一數 cookie、超 40 條先備份再刪、應用內開關控制是否執行」接到 Windows 計劃任務上,針對 DSH 桌面端 login cookie 堆積導致請求頭過大、啓動白屏的問題,給出可復現的安裝路徑與日誌位置。
- 目錄頁:https://www.skillhub.cn/plugins/mxw0808/dsh-cookie-guard
- 源碼與說明:https://github.com/mxw0808/dsh-cookie-guard