前言¶
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。