前言¶
DeepSeek Harness (DSH) 的 dsh-compaction-basic 插件在執行壓縮摘要時,默認只從會話已固化的路由頭裏提取 provider 和 model,導致 reasoningEffort 和 maxTokens 等關鍵參數在壓縮請求中丟失。這使得壓縮調用的信封與上一輪完全不同,導致 provider 的前綴緩存無法命中,壓縮操作被迫按全價重算整段歷史,而非僅計算指令本身。dsh-compaction-cache 插件通過注入缺失參數,使壓縮調用的信封與上一輪保持一致,從而複用 provider 的前綴緩存。
核心功能¶
插件掛載在 llm/stream 瀑布流上,僅對標記爲 purpose: 'compaction' 的請求生效。它通過以下規則補齊摘要信封參數:
1. 參數鏡像:將路由頭裏的 reasoningEffort 和 temperature 注入摘要調用(僅在未顯式設置且非適配器默認時生效)。
2. MaxTokens 對齊:無條件將 maxTokens 覆蓋爲路由值,因爲摘要器總是強制設置該值。
3. 邊界處理:不修改消息列表,不觸碰普通請求,任何異常被吞掉並照常調用 next(),確保插件失效時不會阻斷調用。
本插件爲零依賴、零工具、零 UI、免構建的臨時補丁,僅從 GitHub 分發。
安裝¶
本包未發佈至 npm,僅通過 GitHub 分發。
方式一:通過 pnpm 添加依賴
// <DSH_HOME>/profiles/<profile>/package.json
"dependencies": { "dsh-compaction-cache": "github:deepseekv41flash/dsh-compaction-cache" },
"dsh": { "profile": { "bundles": ["…", "dsh-compaction-cache"] } }
執行命令:pnpm add github:deepseekv41flash/dsh-compaction-cache
方式二:本地 Clone + Link
git clone https://github.com/deepseekv41flash/dsh-compaction-cache
在 profile 中使用 link: 規格引用,並在 bundles 中包含。
配置¶
所有配置均爲可選,默認啓用。
| 鍵 | 默認值 | 說明 |
|---|---|---|
enabled |
true |
總開關 |
log |
true |
記錄對齊日誌 |
mirror |
['reasoningEffort','temperature'] |
需鏡像的路由參數名 |
alignMaxTokens |
true |
是否強制對齊 maxTokens |
驗證¶
生效後,宿主日誌會輸出對齊信息:
compaction-cache: aligned summarization envelope (reasoningEffort=max maxTokens=256000 (was 65536)) session=...
判據:對比修前,compaction/summary.usage 中的 inputTokens 應大幅下降(從 13 萬級降至幾百),cacheReadTokens 變爲六位數。
注意事項¶
- 臨時補丁:這是繞過官方缺陷(上游 discussion #1944)的臨時方案,官方修復後應卸載。
- 僅 GitHub:包未發佈 npm,不可通過常規包管理器安裝。
- 異常吞掉:插件內部異常被捕獲並忽略,不會影響主流程。
- 事件值差異:
compaction/summary事件裏記錄的maxTokens是 spec 值而非實際信封值,判斷生效與否需看usage中的inputTokens/cacheReadTokens。