dsh-compaction-cache:让 DSH 压缩摘要命中 Provider 前缀缓存

前言

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 变为六位数。

注意事项

  1. 临时补丁:这是绕过官方缺陷(上游 discussion #1944)的临时方案,官方修复后应卸载。
  2. 仅 GitHub:包未发布 npm,不可通过常规包管理器安装。
  3. 异常吞掉:插件内部异常被捕获并忽略,不会影响主流程。
  4. 事件值差异:compaction/summary 事件里记录的 maxTokens 是 spec 值而非实际信封值,判断生效与否需看 usage 中的 inputTokens / cacheReadTokens。

链接

GitHub 仓库 | 目录页

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

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

小夜