dsh-http-header-limit:抬升 Host 请求头上限,避免 DSH 桌面版反复重启后启动崩溃

前言

DeepSeek Harness(DSH)桌面版每次启动会绑定随机端口,会话 cookie 名称随端口变化,形如 dsh-auth-*。旧 cookie 不会被覆盖,30 天内也不会自动清理。重启次数一多,这些记录会在 Chromium 侧持续累积。当请求头体积接近 Node 默认的 16 KB 上限时,本地 Host 会返回 HTTP 431,桌面壳则报 Error: desktop welcome: Web authentication failed,窗口往往一闪即退。这与「删配置、重装应用」无关,根因是请求头溢出。社区插件 dsh-http-header-limit(维护者 divelife,分类:客户端)在启动阶段把 Host 的 maxHeaderSize 提高到 256 KB,属于针对上游讨论的临时绕过;不删 cookie、不改安装目录里的应用文件,升级 DSH 后插件仍可保留。

这是什么

dsh-http-header-limit 是 DSH 客户端侧插件,通过 Cordis patch 调整本地 Host 的 HTTP 请求头大小上限。README 说明:约 71 条 dsh-auth-* cookie(合计约 16.4 KB)即可触达 Node 16 KB 默认限制;将上限设为 256 KB 后,理论上可容纳约 1148 条同类 cookie。上游背景见 deepseek-ai/deepseek-harness#9924。当前 release 包版本为 1.0.0,许可证 MIT。

崩溃机制(简要)

  1. DSH 桌面版每次启动使用新端口,dsh-auth-<端口> 类 cookie 只增不减(30 天内不清理)。
  2. 启动流程向本地 Host 发起的请求携带全部相关 cookie,请求头体积超过 Node 默认 16 KB。
  3. Host 响应 431,认证失败,表现为 desktop welcome: Web authentication failed 与进程退出。

该插件不修改 cookie 存储策略,只扩大 Host 侧可接受的请求头容量。

核心功能

  • 在 DSH 启动加载插件时,通过 cordis.patch.yml 将 Host 的 maxHeaderSize 设为 262144(256 KB)。
  • 安装后无需日常配置,每次启动自动生效。
  • 附带 dsh-cookie-rescue 脚本(Windows PowerShell / macOS shell):在补丁尚未生效且已无法启动时,可安全删除 127.0.0.1 下以 dsh-auth- 开头的 cookie 记录(删前备份);依赖 Node ≥ 22.5 的 node:sqlite,无需 Python。

安装与启用

在 DSH 内安装,不要使用命令行 git clone,也勿凭插件名自行拼接 dsh plugin add。

  1. 从 Releases 下载 dsh-http-header-limit-1.0.0.tgz,不要解压,记下完整路径;或直接复制 release 页中 .tgz 结尾的下载链接,可跳过本地下载步骤。
  2. 打开 DSH,侧边栏进入「插件」→「添加插件」。
  3. 在输入框填入 tgz 的完整路径或上述下载链接,例如:
   C:\Users\你\Downloads\dsh-http-header-limit-1.0.0.tgz
  1. 安装完成后完全退出 DSH(含系统托盘)再启动;插件在启动阶段加载。

插件以当前 DSH 进程权限运行;安装前建议浏览 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全策略。

典型用法与验证

装好即可,无需额外开关。若要确认插件已生效,可查看标记文件:

cat ~/.dsh/http-header-limit.json
# {"at":"...","limit":262144,"status":"maxHeaderSize=262144 on 127.0.0.1:49677"}

status 中的端口应与当次 Host 监听端口一致。文件不存在通常表示插件未在启动链路上运行。

已崩溃时的急救脚本

补丁未装上、且 DSH 已无法启动时使用。必须先完全退出 DSH。

Windows:

powershell -ExecutionPolicy Bypass -File dsh-cookie-rescue.ps1 -DryRun   # 先预览
powershell -ExecutionPolicy Bypass -File dsh-cookie-rescue.ps1           # 真删

macOS:

chmod +x dsh-cookie-rescue.sh
./dsh-cookie-rescue.sh --dry-run
./dsh-cookie-rescue.sh

脚本会尝试常见 Cookies 数据库路径(如 Windows 下 %APPDATA%\@deepseek-ai\dsh-desktop\Network\Cookies,macOS/Linux 下 ~/.dsh/electron-user-data/Network/Cookies 等)。若自动探测失败,可指定环境变量:

$env:DSH_COOKIES_DB = "C:\完整\路径\Cookies"
export DSH_COOKIES_DB="/full/path/Cookies"

适用场景与注意

适合: 长期使用 DSH 桌面版、频繁完全退出再启动,且尚未遇到或已经遇到 431 / Web authentication failed 闪退的开发者。

注意:

  • 这是临时绕过,不是上游对 cookie 累积问题的根治方案。
  • 启动失败时不要点击弹窗中的「Disable third-party plugins」。README 说明该操作会改名 cordis.patch.yml 并将 dsh.profile.bundles 裁到仅剩两个官方包,无法修复本 bug,反而会丢失配置。
  • DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

若你的 DSH 桌面版因 dsh-auth-* cookie 撑爆请求头而无法启动,dsh-http-header-limit 用最小改动把 Host 头上限抬到 256 KB,并可选 cookie 急救脚本应急。详情与 release 包见 GitHub:divelife/dsh-http-header-limit;目录介绍见 SkillHub。

羽毛球分组比赛记分
小程序二维码

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

小夜