DSH Cookie Guard: DSH Desktop Login Cookie Leak Self-Check Popup

前言

DeepSeek Harness(DSH)桌面版每次启动都会在随机端口上拉起本地 Host,并在根请求里通过 Set-Cookie 写入一条 dsh-auth-* 登录 cookie;Chromium 持久化 jar 会收下这些条目且默认不会删除。反复启动会在 HTTP 请求头里累积占用,接近 Node 默认 maxHeaderSize(16384 字节)时,Host 可能返回 431,界面出现 desktop welcome: Web authentication failed,俗称「DSH 打不开」。事后清 cookie 库可以恢复,但缺少日常可见的「离上限还有多远」的指标。

下面介绍社区插件 dsh-cookie-guard(维护者 3150481853,分类 admin-security):在 DSH 窗口内提供只读浮窗,实时显示 dsh-auth-* 条数、请求头占用与剩余可启动次数,接近 16 KiB 上限时变色告警。插件以 MIT 许可发布,当前 package 版本为 1.0.1。

这是什么

Cookie 守护是 DSH 桌面版的小浮窗插件:不解析、不修改、不外发 cookie 内容,不发网络请求,也不自动清理;只做本地 Chromium Network/Cookies 库的只读探测与展示。

它解决的核心问题是:在爆掉第 72 次启动量级(README 按每条约 228 字节估算)之前,让用户随时看到曲线上的位置,而不是等到启动失败再排查。

背景:为什么会攒满

DSH 桌面 Host 使用 --port 0 随机端口;cookie 名为 dsh-auth-<sha256("127.0.0.1:<端口>")> 形式。README 给出的量级如下:

项目 数值
每条 cookie 在请求头里约占 228 字节
Node 默认 maxHeaderSize 16384 字节
约在第几次启动触顶 第 72 次

触顶后根请求在 Node 层被 431 Request Header Fields Too Large 拦截。插件相当于在这条增长曲线上装仪表盘。

核心功能

浮窗界面

  • 环形仪表:请求头占用百分比;低于 50% 为绿,50%~71 为黄,71 及以上为红。
  • 三格数字:cookie 条数、请求头字节、还能再启动几次。
  • 立即检测:强制重新读库(平时 60 秒内复用缓存,避免频繁扫描句柄表)。
  • 收起 / 拖动:可折叠为只显示百分比的胶囊;标题栏拖动,位置写入 localStorage。

数据每 10 分钟自检;每个本地日期保留一条快照,历史最多 90 条,状态文件路径为:

%USERPROFILE%\.dsh\cookie-guard\state.json

读库方式(Windows)

运行中 DSH 对 Network/Cookies 独占打开,直接打开 SQLite 会失败。插件在 Windows 上通过枚举 deepseek harness.exe 进程句柄、复制指向 \network\cookies 的句柄并读取字节流,用正则统计 dsh-auth-<43 位> 名字去重。单次约 240 ms,故外层有 60 秒缓存。实现依赖 DSH 桌面版自带的 koffi(3.1.1),插件用 createRequire 加载,无额外编译依赖。

说明:渲染进程请求头里只能看到当前启动注入的那一条,jar 里历史条目数必须从库侧读取。

本地 API 与隐私

服务端路由为 /dsh-cookie-guard/api,经宿主 connection.requestRejection 做同源 / loopback 校验。probe.js 只读字节流并按名字计数,状态文件仅含日期、条数、字节数。

独立桌面工具(可选)

仓库 desktop/ 提供不依赖 DSH 的同款读库 UI(Python 3.10 + tkinter)及清理菜单脚本 dsh-cookie-clean-menu.ps1。Release 提供 DSH-Cookie-Check-1.0.1.exe(8.2 MB)。清理操作需在管理员终端执行,且需先结束 DSH 进程再删库,否则 Chromium 锁文件会导致删除失败——细节见 README 与清理菜单说明。

安装与启用

在 DSH 内(推荐):设置 → 插件 → 安装,填写:

github:3150481853/dsh-cookie-guard

命令行安装(desktop profile):

dsh plugin --profile desktop add github:3150481853/dsh-cookie-guard

装好后 DSH 窗口右下角应出现浮窗;若未出现,刷新页面(客户端包懒加载)。开发时从同一命令安装后,Host 与 client.js 支持热更新,一般无需重启 DSH。

典型用法

  1. 安装插件后观察浮窗三格数字与环形百分比,日常无需操作。
  2. 怀疑计数滞后时,点 立即检测 刷新读数。
  3. 仪表变黄或变红时,按 README 使用 desktop/dsh-cookie-clean-menu.ps1 或 Release exe 中的清理流程(管理员、先关 DSH)备份并清理 cookie 库,再重新登录 DSH。
  4. 需要离线自查、未开 DSH 时,可单独运行 DSH-Cookie-Check-1.0.1.exe。

适用场景与注意

适合谁:长期使用 DSH 桌面版、频繁重启 Host 的 Windows 用户,希望在出现 Web authentication failed 之前做自查。

限制(来自 README):

  • 仅 Windows(句柄表方案为 Win32 API)。
  • 只读路径 %APPDATA%\@deepseek-ai\dsh-desktop\Network\Cookies;读失败时界面显示「读不到 cookie 库:<原因>」,不伪造数字。
  • 插件在当前 DSH 进程权限下运行;安装前应在 GitHub 查看源码与 MIT 许可证,自行评估是否满足环境策略。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文所述安装源以仓库 README 为准。

结尾

dsh-cookie-guard 用只读浮窗把 dsh-auth-* 累积与 16 KiB 请求头上限的关系可视化,并配合可选清理工具,降低「突然打不开」的排查成本。

  • 目录页:https://www.skillhub.cn/plugins/3150481853/dsh-cookie-guard
  • 源码与文档:https://github.com/3150481853/dsh-cookie-guard
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye