前言¶
DeepSeek Harness 桌面端每次启动都会在本地随机回环端口上跑 webserver,并通过 GET / 做一次启动令牌交换。交换过程会写入名字形如 dsh-auth-* 的会话 cookie,有效期 30 天。Cookie 按主机存储、不区分端口,因此多次启动后,同一主机(例如 127.0.0.1)下的 jar 里会不断累积这些 cookie。
桌面欢迎握手使用 credentials: "include" 发起请求,会把整个 jar 一并带上。累计启动次数足够多后,Cookie 请求头可能超过 Node.js 默认约 16 KiB 的上限,服务器返回 HTTP 431 Request Header Fields Too Large,界面表现为 desktop welcome: Web authentication failed,应用无法正常进入。
下面介绍社区插件 dsh-cookie-fix(维护者 qiongqi-empty):在 Host 侧自动把 dsh-auth-* 控制在 3 条以内,从机制上避免再顶到请求头上限。它是 Host-only 的 DSH bundle,不依赖 pnpm 包、没有构建步骤,通过官方插件管理器安装即可。
这是什么¶
dsh-cookie-fix 是仅运行在 DSH Host 上的插件 bundle(包名 dsh-cookie-fix,界面显示为 Cookie 清理器 / Cookie Fix)。它不修改 app.asar、不注入客户端脚本、不注册后台进程,只在桌面端 webserver 上对特定响应做 cookie 清理。
仓库地址:https://github.com/qiongqi-empty/dsh-cookie-fix。当前 package 版本为 1.0.0,许可证 MIT。插件在 DeepSeek Harness Desktop 0.2.1-rc.5(nightly,Electron 44)上开发并验证;未在 engines.dsh 中写死版本号,实现只依赖 webServer 服务与 Node 标准库。
核心功能¶
插件在 DSH Host 的 webserver 上注册请求监听器,只处理每次启动时的 GET /(启动令牌交换):
- 解析请求里已有的
dsh-auth-*cookie; - 保留「当前 authority 对应的一条(本次响应会重新签发)+ 最新 2 条旧 cookie」;
- 在同一 HTTP 响应里追加
Set-Cookie,对其余旧 cookie 设置Max-Age=0等删除指令。
Electron session 与 Chromium 会执行这些删除指令,因此每次启动后 jar 里最多剩 3 条 dsh-auth-*,请求头体积不会无限增长。新签发的 auth cookie 仍排在第一个 Set-Cookie,不改变桌面端读取 cookie 的既有逻辑。
行为边界(来自 README):
- 仅在
GET /且请求中确实带有 3 条以上dsh-auth-*时才改响应头;平时不改动任何响应。 - 不联网,不读取、不上报 cookie 值;只根据 cookie 名称与签名 payload 中的
issuedAt排序并删除已随请求发送的旧项。 - 卸载 bundle 后监听器随 plugin fiber 释放,桌面端恢复官方行为;残留的少量 cookie 会在 30 天内自然过期。
安装与启用¶
图形界面(官方 Plugins 页面)¶
- 打开 DeepSeek Harness 的 插件 / Plugins 页面。
- 点 添加插件。
- 粘贴下面地址(不要带末尾斜杠):
https://github.com/qiongqi-empty/dsh-cookie-fix
- 点 安装。列表中出现 Cookie 清理器 / Cookie Fix(
dsh-cookie-fix)且为启用状态即可。 - 若页面提示需重启才能加载新插件,重启一次 DeepSeek Harness。
装好后每次启动都会自动清理多余的 dsh-auth-*,无需额外配置或手动操作。若从 GitHub 安装超时,可在对话框里切换 安装源 → 中国大陆镜像,或改用命令行安装。
命令行(等价)¶
dsh plugin --profile desktop add https://github.com/qiongqi-empty/dsh-cookie-fix
卸载¶
- 图形界面:插件页面 → 已安装 →
dsh-cookie-fix/ Cookie 清理器 → 卸载。 - 命令行:
dsh plugin --profile desktop remove dsh-cookie-fix
典型用法¶
正常使用下没有单独「调用 API」的步骤:安装并启用后,插件随桌面端启动生效。
若已出现 431、应用完全打不开,需要先让 Harness 能再次启动。插件必须在应用能跑起来之后才能安装。README 给出的恢复步骤如下:
- 完全退出 DeepSeek Harness(含托盘图标)。
- 删除 Chromium 的 cookie 数据库(仅重置本地网页 cookie,不影响
~/.dsh里的账号凭据)。Windows 路径示例:
%APPDATA%\@deepseek-ai\dsh-desktop\Network\Cookies
- 重新启动 DeepSeek Harness,再按上文步骤安装插件。
开发者可在不启动 DSH 的情况下跑仓库自带自测:
node test.mjs
README 说明该脚本验证:10 条 cookie 时恰好追加 7 条删除、新 auth cookie 仍排第一、cookie 少时不改响应、其它路径不受影响。
适用场景与注意¶
适合谁:长期使用 DeepSeek Harness 桌面端、频繁重启或升级、曾遇到或想预防 HTTP 431 / Web authentication failed 的开发者。
权限与安全:插件以当前 DSH 进程权限运行,逻辑集中在单文件 index.mjs,安装前建议自行阅读源码与 MIT 许可证。社区插件目录(如 SkillHub 上的条目页)是独立生态站点,与 DeepSeek / 幻方无官方从属关系;安装来源以你信任的 GitHub 仓库为准。
不适用或需知:纯 CLI / 非 desktop profile 若不存在相同 cookie 累积问题,则不必安装;若未来 DSH 移除 webServer 服务,插件会安全地不生效,不会阻止 Harness 启动。
结尾¶
dsh-cookie-fix 用 Host 侧、可逆的方式把随机端口带来的 dsh-auth-* 堆积限制在 3 条以内,针对 Node 16 KiB 请求头上限导致的桌面启动失败给出固定解法。需要时可从 Plugins 页面或 CLI 安装,不需要时卸载 bundle 即可恢复官方行为。