dsh-live-compact: Compact on the Fly While Preserving Prefix Caching

前言

在 DeepSeek Harness(DSH)里跑长对话或长任务时,上下文会一路涨。DSH 默认在大约 80% 窗口用量时才触发一次「大压缩」:要再调模型、十几秒量级、还要计费;压完注意力容易飘,窗口很快又堆满,1M 上下文也扛不住反复压。社区插件 dsh-live-compact(维护者 MerkyorLynn,GitHub MerkyorLynn/dsh-live-compact)走另一条路:Live Compact,边做边压——在任务还在跑的时候就地切掉刚结束的一轮,不为此单独调模型,切点前面的原文不动,前缀缓存命中水平尽量保持原样,从而把上下文长期压在较低位置,官方大压缩能拖则拖。

这是什么

dsh-live-compact 是 DSH 社区目录中的「模型推理」类插件(SkillHub 目录页:merkyorlynn/dsh-live-compact)。一句话:In-place newest-turn compaction——对刚结束的一轮做就地压缩,任务进行中持续生效,并尽量保留前缀缓存。

与「等到 80% 再压」不同:超过约 2 万 token 就对刚结束的这一轮切一刀,不调用模型;切点之前的原文不动。官方配置里的 0.8 只管 DSH 自带的大压缩,不管这一刀;想改小切起点,只能在启动前设置环境变量 SPINE_MIN_TOKENS(README 未给出默认值以外的示例,以文档为准)。

核心功能

边做边压(Spine cut)

  • 上下文超过约 2 万 token 时触发小切,对象是刚结束的一轮,不调模型。
  • 日志里出现 spine cut …ms 表示这一刀生效。
  • 被切掉的原文写入本机 ~/.dsh/compaction-spine/shadow(仅本机可读,只增不删);备份目录超过 64MB 时这一刀不再切,旧文件不自动删,需自行清理。本机路径不发给模型。

摘要规则(1.0.3 / 1.0.4)

1.0.3 起:摘录只留正文;用户与助手句子按规则保留并标注说话者;思考与工具结果不进摘要(原文进本地备份并带来源)。去掉「已确认」;摘要开头说明是旧内容摘录,不是新指令或授权。若这一刀做不出合格摘要,整段留下、不调模型。

1.0.4 起:较短工具结果可留在摘要里,标为工具输出、不标已确认——不超过 12 行且不超过 512 字则整段留下;更长则只留一行说明字数与「正文已省略」,省略原文在 shadow 目录,文件名含短编号;需要时再读,不默认读回。思考仍不进摘要。

与预设压缩的关系

headless 可直接切。网页与 Desktop 安装对应版本后,四个预设在加载时会尝试把组里的原版压缩换成此包;换不上则落回原版,预设仍能启动(见 GitHub issue #5)。DSH-TUI 换不掉预设里的原版压缩,README 明确建议先不要装。

测评数据(README 原文,两场分开)

README 提供了两场测评,不混在一张表里;均为 1.0.2 之前测得,1.0.2 未重跑 150 题,也未在真实超过 2 万 token 的会话里切过一刀。

150 道编程短题(Aider polyglot-benchmark 7e0611e,Python / Go / JavaScript / Rust / Java 各 30 题,串在同一次对话):原版与 Live Compact 均 150/150 通过;Live Compact 费用约 \(1.15**(原版 **\)1.50),缓存命中 244.3M(原版 335.0M),上下文峰值 589K(原版 679K),压缩侧为 145 刀、2.2 秒(原版 1 次、12.8 秒)。国内镜像说明页:live-compact.html。

WebUniverse 长链路 20 题:插件侧 20 刀、74 毫秒,题末平均上下文比原版低约 40.8%,结束上下文低约 25.4%;采样命中率与原版同量级(README 表格与说明见仓库)。

以上数字均来自仓库 README,使用前请自行对照当前版本是否重测。

安装与启用

依赖:DSH >=0.2.0-rc.2 <0.3.0;Node ^22.19 || >=24(见 package.json)。当前 README 安装包版本为 1.0.4;1.0.0–1.0.3 旧包仍在原链接,1.0.4 使用新安装地址。

headless:

dsh plugin --profile headless add https://download.merkyorlynn.com/downloads/plugins/dsh-live-compact-1.0.4.tgz

网页(Desktop 用对应 profile,包地址相同):

dsh plugin --profile web add https://download.merkyorlynn.com/downloads/plugins/dsh-live-compact-1.0.4.tgz

也可先装到本机核对版本:

npm install -g --force "https://download.merkyorlynn.com/downloads/plugins/dsh-live-compact-1.0.4.tgz"
dsh-live-compact --version

装上后跑长任务,在日志中确认 spine cut …ms。插件通过 cordis.patch.yml 以 bundle patch 方式接入 DSH,与 @deepseek-ai/dsh-compaction 等 peer 包同版本线配合使用。

典型用法

README 未给出单独的业务配置 YAML 示例;典型路径是:按 profile 安装 1.0.4 包 → 用 headless / web / Desktop 跑长对话或长任务 → 观察日志中的 spine cut → 必要时用 shadow 目录找回被省略原文。若需调整小切起点,在启动 DSH 之前设置 SPINE_MIN_TOKENS。

适用场景与注意

适合:单次会话里 token 持续增长的开发或评测任务;希望减少对大压缩的依赖、压低上下文峰值与部分缓存/费用压力的场景(具体收益随任务而异,以 README 测评为参考而非保证)。

注意:

  • TUI 暂不支持替换预设压缩,勿装。
  • shadow 目录 64MB 上限后停止切刀,需自行清理。
  • 插件以当前 DSH 进程权限运行;安装前请阅读 GitHub 源码与 MIT 许可证,自行评估备份与摘要策略是否符合环境要求。
  • SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录与 GitHub 页面为准(README 抓取时 GitHub 23 stars)。

结尾

dsh-live-compact 把压缩从「窗口快满再调模型」改成「超阈值就地对刚结束一轮下刀」,前缀不动、大压缩往后拖。需要安装命令与版本说明时,以 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/MerkyorLynn/dsh-live-compact
  • GitHub:https://github.com/MerkyorLynn/dsh-live-compact
  • 说明与测评镜像:https://download.merkyorlynn.com/live-compact.html
羽毛球分组比赛记分
小程序二维码

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

Xiaoye