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
羽毛球分组比赛记分
小程序二维码

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

小夜