前言¶
在 DeepSeek Harness(DSH)里跑长会话时,上下文会逼近模型窗口上限。官方默认通过 dsh-compaction-basic 做压缩:在 shadow 事务里把较早对话归档,并用 LLM 生成摘要帧顶替被归档内容。摘要本身要再调一次模型,有延迟、有成本,且摘要质量会随模型波动。
dsh-compaction-codex 走另一条路:继承官方压缩引擎的骨架,只换掉 summarize(),用 Codex 式的「换窗」指针模板生成摘要,全程零 LLM 调用。下面介绍它是什么、怎么装、以及和官方方案相比要注意什么。
这是什么¶
dsh-compaction-codex 是社区维护的 DSH 插件(作者 r-ayin,仓库 r-ayin/dsh-compaction-codex),分类属于模型推理相关能力。一句话定位:Codex-style window-swap compaction engine——用确定性指针模板摘要替换默认的 LLM-summary compaction。
插件在 package.json 中声明对 @deepseek-ai/dsh-compaction-basic 的 peer 依赖,实现方式是子类替换,而不是从零重写整套 CompactionEngine。
核心机制¶
相对官方 basic 改了什么¶
- 继承官方
BasicCompactionEngine,仅覆写官方文档承诺的子类钩子summarize()。 - 摘要改为纯确定性指针模板,不发起 LLM 请求。模板内容包括:归档声明、恢复通道指引(
history_search/history_read/ notes read)、最近 model 检查点笔记全文(只读~/.dsh/context-budget/notes/<sid>.jsonl)、被归档区首尾消息的截断锚点。 SummaryResult走官方契约的模板分支(无llmStreamCall字段)。转录里compaction/summary事件会显示provider: template, model: codex-rollover。
原样继承的能力¶
shadow 事务、replay 定价、工具配对平衡、并发锁、阈值自动触发(默认约 0.8×窗口;router-standard 预设为 0.55)、context-overflow 恢复、/compact(compactNow)等逻辑仍由官方 basic 引擎承担,本插件不重复实现。
装配与启用¶
已抓取资料未给出 dsh plugin add 一类的一行安装命令;仓库 README 描述的是从源码装配进本地 DSH profile。若你采用同一套流程,可按下面步骤核对路径与构建。
- 源码目录:
~/.dsh/plugins-src/dsh-compaction-codex/(即克隆或解压后的本仓库根目录)。 - 构建:在源码目录执行官方脚本,链接
dsh-install类型依赖并编译 TypeScript。
bash scripts/build.sh
- profile 链:在
~/.dsh/profiles/web/node_modules/dsh-compaction-codex建立软链,并在对应package.json里用 link 依赖挂上(避免pnpm install剪掉链接)。 - 预设替换:六个用户预设(
code/code-guarded/code-lean/dshagent/designharness/router-standard)的 compaction 组里,将原先的compaction-basic条目换成compaction-codex。README 记载 2026-09-29 已替换,各预设文件旁留有.bak-20260929备份。
生效范围:预设热扫描;仅新开的会话会用到新装配,已在跑的会话仍保持旧代 compaction。
运行环境:package.json 要求 Node >=20;许可证 MIT(版本号在资料中为 0.0.1)。
典型用法与可观察行为¶
长会话接近窗口阈值时,压缩仍由 DSH 自动或手动触发(例如 /compact),但摘要不再经过 LLM。你可以在转录中确认 compaction/summary 的 provider: template, model: codex-rollover。
需要找回被归档内容时,按摘要里的指引使用 history_search、history_read 或读取 notes;检查点段落来自 ~/.dsh/context-budget/notes/<sid>.jsonl(只读)。若该文件缺失或损坏,插件会省略检查点段并继续完成压缩事务,不阻塞 shadow 流程。
约束、回滚与适用场景¶
官方契约与边缘情况¶
官方 summarizeCompaction 要求摘要帧 token 数小于被 shadow 内容的 token 数。本模板上限约 5K 字符(约 1.5K tokens),对数千 tokens 以上的压缩区通常安全;若压缩区极小,会按官方逻辑抛错并写入日志,不会静默失败。
回滚到 LLM 摘要¶
在预设 yml 里把 compaction 条目的 name 改回 @deepseek-ai/dsh-compaction-basic,或恢复 .bak-20260929 备份,即可回到官方 LLM 摘要;对新会话热生效。
适合谁、安装前注意什么¶
适合希望在长会话压缩环节完全去掉摘要 LLM 调用、并接受「指针 + 截断锚点」式恢复指引的 DSH 用户。决策记录(2026-09-29)明确采用方案 A:子类替换 + 纯 Codex 式,无混合开关;若你需要可调的 LLM 摘要策略,应继续用官方 basic 或自行改预设。
插件以当前 DSH 进程的权限运行,会读取用户目录下的 notes 与上下文相关路径。安装或替换预设前,应自行审阅 GitHub 源码 与 MIT 许可证,确认与本地安全策略一致。社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,仅作发现入口。
结尾¶
dsh-compaction-codex 在保留官方压缩事务与触发逻辑的前提下,把摘要换成确定性模板,把长会话压缩从「再调一次模型」改成「归档 + 可检索指针」。若要对比说明或提 issue,可看目录页 skillhub.cn/plugins/r-ayin/dsh-compaction-codex 与仓库 github.com/r-ayin/dsh-compaction-codex。