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