前言¶
恢复一个长会话时,需要把历史消息重新发送给模型。如果历史消息的 token 数量超过某个阈值,直接发送会消耗大量资源,甚至触发上下文溢出。DeepSeek Harness(DSH)本身提供 dsh-compaction 机制,但默认只在运行过程中处理,恢复会话时并不会自动压缩。dsh-resume-budget 插件在会话恢复的第一个请求发出前,对预计输入进行估算;若超过阈值,就先通过 harness 的官方压缩路径压缩历史,再发请求。
这是什么¶
dsh-resume-budget 是一个 DeepSeek Harness 插件,由 xingzoudefengye 维护。它的职责是在会话恢复时,根据配置的 thresholdTokens 阈值,决定是否在发送第一个请求前先压缩历史。它不存储任何数据,不进行后台工作,也不调用模型接口,只做一次决策和一次压缩动作。插件使用 MIT 许可证,要求 Node.js >= 22。
核心功能¶
- 会话恢复前检查:在恢复会话的第一个请求发出前,检查预计输入是否超过阈值。
- 配置化阈值:通过
thresholdTokens控制,默认为 100000。 - 使用官方压缩路径:触发压缩时调用
ctx.compaction.compactIfNeeded(),复用 harness 的 compaction 机制。 - 按进程按会话判断:每个会话只判断一次,本进程内恢复的会话才触发,新建会话不触发。
- 无存储、无后台工作:插件本身不保存任何状态,不进行异步任务。
安装与启用¶
- 确认工具链:
node --version # 需要 v22 或更高
dsh --version
- 装进你要用的 profile(默认是
web):
dsh plugin --profile web add github:xingzoudefengye/dsh-resume-budget
这条命令把插件包装进 $DSH_HOME/profiles/web,并加进该 profile 的 dsh.profile.bundles。首次安装需要能访问 GitHub(pnpm 拉取 github: 依赖)。
- 重启宿主进程:
dsh web
插件是在宿主启动时被 import 的,装完不会热加载。
配置与验证¶
插件只有一个配置键 thresholdTokens,类型为整数,最小 0,默认 100000。若预计输入达到或超过该值,就会触发压缩;若为 0 则关闭检查。
修改阈值¶
在 profile 的 cordis.patch.yml 里按 id 覆盖:
# $DSH_HOME/profiles/web/cordis.patch.yml
- id: resume-budget
config:
thresholdTokens: 150000
id 必须是 resume-budget,写错了宿主启动时会打印 patch: entry "..." not found,组合树里仍是默认值。
验证安装¶
在仓库 checkout 里运行:
node scripts/check.mjs
或在已安装的 profile 里运行:
# PowerShell
node "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-resume-budget\scripts\check.mjs"
# zsh
node ~/.dsh/profiles/web/node_modules/dsh-resume-budget/scripts/check.mjs
正常输出应为:
ok: resume-budget is in the composed tree
ok: thresholdTokens is 100000
若在 patch 里改了阈值,把期望值作为第二个参数传进去:
node scripts/check.mjs web 150000
典型用法¶
恢复一个历史很长的会话,插件会在第一个请求前自动检查并压缩。如果压缩成功,会话里会多出压缩后的检查点(<compacted-summary> 块)。如果历史太短,后端返回 null,则什么也不会发生。
可以临时把 thresholdTokens 设成 1 并重启,恢复一个旧会话。看到检查点就说明“闸门开了”。
适用场景与注意¶
- 适合谁:需要频繁恢复长会话的开发者,希望避免一次性发送大量历史导致上下文溢出或资源浪费。
- 权限说明:插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证。
- 兼容性:插件依赖 DSH 提供的
agent/pre-step事件、ctx.tokenMeter.measure()和ctx.compaction.compactIfNeeded()。若宿主缺少compaction或tokenMeter服务,插件会挂载不上,不会报错。 - 版本要求:Node.js >= 22;DSH 版本建议 0.2.x(实测 0.2.1-rc.2)。
短结尾¶
dsh-resume-budget 通过在会话恢复前控制输入预算,减少一次性发送大量历史的资源消耗。它不依赖第三方库,只使用 Node.js 内置模块,与 DSH 的 compaction 机制紧密集成,适合需要稳定处理长会话的开发者。更多细节可在目录页查看,或直接访问 GitHub 仓库。