dsh-resume-budget:DeepSeek Harness 会话恢复前的输入预算控制

前言

恢复一个长会话时,需要把历史消息重新发送给模型。如果历史消息的 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 机制。
  • 按进程按会话判断:每个会话只判断一次,本进程内恢复的会话才触发,新建会话不触发。
  • 无存储、无后台工作:插件本身不保存任何状态,不进行异步任务。

安装与启用

  1. 确认工具链:
node --version    # 需要 v22 或更高
dsh --version
  1. 装进你要用的 profile(默认是 web):
dsh plugin --profile web add github:xingzoudefengye/dsh-resume-budget

这条命令把插件包装进 $DSH_HOME/profiles/web,并加进该 profile 的 dsh.profile.bundles。首次安装需要能访问 GitHub(pnpm 拉取 github: 依赖)。

  1. 重启宿主进程:
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 仓库。

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

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

小夜