dsh-compress-bench:在 DSH 里用镜像 A/B 量化上下文压缩

前言

DeepSeek Harness(DSH)里若启用了上下文压缩,常见疑问是:输入 token 确实少了,最终回答会不会丢事实、多绕轮次或工具失败变多?社区里已有面向生产会话的压缩策略与监控类插件,它们更擅长「怎么压」和「省了多少」的统计;若要在同一模型、同一场只读对话里,只切换「压缩关 / 压缩开」做对照,并把 token、轮数、工具成功率、事实覆盖和答案差异写进一份可复现报告,就需要专门的量具而不是再做一个压缩策略。

下面介绍维护者 dingchenhui0618-arch 发布的 dsh-compress-bench(分类:模型推理)。它在 DSH 会话顶部提供「跑分」页签,用固定 fixture 沙盒镜像跑两遍,输出 JSON 与 SVG 对比图;插件以当前 DSH 进程权限运行,安装前应自行查看源码与 MIT 许可证。

这是什么

dsh-compress-bench 是装在 DSH 里的本地镜像 A/B 基准工具:同一只读场景、同一模型、同一组可验证事实,压缩关闭跑一遍、压缩开启再跑一遍,汇总输入 token(本地估算)、轮数、工具调用成功率、事实覆盖、最终答案差异,并生成 JSON 报告与对比 SVG。

它不是又一个压缩插件,也不承诺固定节省比例;优先使用宿主暴露的 toolResultPruner.pruneContent(blocks),若无则回退内置 line-reducer。项目独立实现,未 fork drscrewdriver/dsh-context-compression-improved 的代码;插件骨架沿用作者自己的 dsh-warden 约定。

核心功能

镜像 A/B 与只读沙盒

两侧各自新建消息数组,system、task、工具 schema、模型、temperature: 0 完全相同,固定顺序先关后开,跑完即销毁。场景仅允许 list / read / grep,只读 $DSH_HOME/compress-bench/fixtures/ 下生成的 fixture;绝对路径、.. 与符号链接逃逸会被拒绝,不写真实工作区、不起子进程。

事实埋点与答案评测

large-read 在手册头、中、尾各埋一个可验证值;multi-file 需跨 12 个模块汇总 TODO 总数、最高版本和最长文件名。事实按不区分大小写的完整值匹配;最终答案再做归一化 bigram 相似度与逐行 diff。事实覆盖下降、工具成功率下降、轮数增加、输出 token 明显增加或答案只在一侧出现的行,会进入 verdict 或 warnings。

指标与预算

头条对比使用两侧同一把尺的本地估算输入 token(启发式:CJK ≈ 1 token/字,其余 ≈ 4 字符/token);provider 上报的 usage 仅作参考——同一轮可能出现 cache-miss 统计与本地估算不一致,不宜跨侧直接当「真实输入」比较。

每轮模型调用前检查累计输入 token、轮数、工具调用数、墙钟时间;超限将该侧标为 budget-stopped。默认预算(可由 host 配置覆盖):输入 token 60,000 / 轮数 6 / 工具调用 12 / 墙钟 180 s。

产物

运行结果写入 $DSH_HOME/compress-bench/runs/:

  • <id>.json:schema dsh-compress-bench/report@1
  • <id>.svg:880×560 自包含对比图

仓库内示例:docs/sample-report.json、docs/sample-chart.svg。

README 记载的单次本机实测(2026-10-28,large-read,chenyuzhiyun/deepseek-flash)为:本地估算输入 token 63,029 → 6,927(−89.0%),轮数 3→3,事实覆盖 3/3→3/3,最终答案相似度 1.00;该次压缩器为 line-reducer。这是单个场景、单次运行结果,不是通用结论。

安装与启用

环境要求(来自 package.json 与 README):

  • DSH:>=0.2.1-rc.2 <0.3.0
  • Node:24(CI 用 22 验证兼容)

若从源码目录安装,需先构建:

node scripts/build.mjs
node --test test/*.test.mjs

然后在 DSH 插件管理里安装本仓库(本地目录或 github:dingchenhui0618-arch/dsh-compress-bench),启用后打开任意会话,顶部页签会出现「跑分」。

桌面版 profile 由 Electron 托管时,CLI 的 dsh plugin --profile desktop 会拒绝管理插件;请走应用的插件管理界面。安装或启用后若页签未出现,重载插件或重启 DSH。

典型用法

  1. 打开任意 DSH 会话,点顶部「跑分」。
  2. 选择场景:单文件长上下文(large-read)或多文件中段聚合(multi-file)。
  3. 点「开始 A/B 跑分」。运行中可取消;同一时间只允许一个运行。
  4. 完成后查看结论条、五个指标、对比图、逐项账本、答案差异和 warnings。
  5. 在下方历史运行中打开旧报告,可下载 JSON / SVG。

适用场景与注意

适合:想在换模型、换压缩器或调 host 配置前后,用固定只读压力场景对比「省 token」与「事实 / 工具 / 答案」代价的 DSH 开发者;需要可归档的 JSON + SVG 证据而非口头估算时。

注意:

  • 场景为合成 fixture,主要代表长工具结果类压力,不代表日常短会话;单次运行、固定先关后开,无统计显著性保证。
  • 不同 reducer(toolResultPruner vs line-reducer)的数字不宜混比;JSON 中 runs.on.compression.reducer 会如实记录。
  • 插件不保存完整消息记录与绝对路径,仅保存 fixture 指纹与统计;报告不含凭据,详见仓库 SECURITY.md。
  • 社区目录 SkillHub 插件页 与 GitHub 仓库为独立分发与源码入口,与 DeepSeek 官方无隶属关系;DSH 生态理念是「一切皆插件」,安装前请核对版本与权限边界。

结尾

dsh-compress-bench 用「先量,再信」的方式回答:同一场对话里压缩打开后 token 是否下降,以及事实覆盖、工具成功率和答案是否随之变差。需要进一步了解实现与局限时,可阅读仓库 README 与 sample 报告。

  • 目录页:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-compress-bench
  • GitHub:https://github.com/dingchenhui0618-arch/dsh-compress-bench
羽毛球分组比赛记分
小程序二维码

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

小夜