前言¶
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