前言¶
在 DeepSeek Harness(DSH)里做长会话时,宿主会把早期对话压成一条摘要。压一两次往往还能接着干;多压几轮之后,「当初为什么否决方案 A」「参数定的是 0.75 还是 0.8」「测试到底有没有跑过」这类细节会从上下文里消失,模型还可能推翻刚才已经确认过的结论。单靠对话历史,很难在多次压缩后保持同一条任务线的连续性。
下面介绍社区插件 dsh-cairn(维护者 Saretheya,GitHub:Saretheya/dsh-cairn)。它在里程碑处让模型写入检查点,存进插件自有目录,并在每次压缩后把检查点重新注入系统提示词——利用 DSH 系统提示首节点不参与压缩这一机制,把「压缩碰不到的地方」当作权威副本。检查点不会写入你的工作区。
这是什么¶
dsh-cairn 的定位是:在上下文被 DSH 有损压缩之后,仍保留当前目标、已定结论、否决方案、待办与证据。README 用登山路标(cairn)作比喻:沿途堆几块石头,后人循石而行。
插件分类在 SkillHub 目录中归为「记忆」;npm 包 dsh-cairn 当前版本为 1.0.1(以 package.json 为准),许可 MIT,目标 DSH 版本 0.2.x(README 写明 0.2.1-rc.5 实测)。它不修改你的 cordis.patch.yml,也不写 settings.yaml;卸载后数据随插件目录一起消失。
核心功能¶
检查点与重注入¶
模型通过工具 checkpoint_write 写下或更新检查点;旧代自动归档,保留最近 20 代。插件在 systemPrompt.section 中注入内容,因此可跨越任意多次压缩。
注入不是每轮全文塞满,而是按检查点与会话关系分四档(README 中的「四档注入策略」):
| 情形 | 注入内容 | README 实测体积参考 |
|---|---|---|
| 同一会话 | 全文(≤12000 字符) | 起约 240 字符 |
| 跨会话、7 天内、主题相关 | 摘要卡片(≤900 字符) | 约 175 字符 |
| 跨会话、过期或主题不相关 | 一行指针 | 约 95 字符 |
| 尚无检查点 | 不注入 | 0 字符 |
跨会话时「主题相关」依赖检查点里的 topic 和 keywords;README 强调这两个字段务必填写,否则跨会话往往只会得到一行提示。
工具一览¶
| 工具 | 作用 |
|---|---|
checkpoint_write |
写入/更新检查点 |
checkpoint_read |
读回全文,或按关键词过滤行 |
context_status |
查看 token 占用、窗口,以及检查点为何被注入或未注入 |
context_compact |
在支持压缩服务的环境里预约主动压缩;若宿主压缩服务不在插件所在平面,则只落盘并如实告知 |
另随包提供 context-checkpoint 技能,声明里程碑、压缩后对账、上下文压力等触发条件;并在压缩完成后注入唤醒消息,提示模型直接接着做、勿重述已完成工作。
主动提醒(非全靠模型自觉)¶
插件在上下文占用跨越档位时会向会话注入提醒(同一档位只提醒一次):
| 档位 | 阈值 | 提醒要点 |
|---|---|---|
warm |
≥ 窗口 50% | 先 checkpoint_write,再 context_compact |
near |
≥ 80% | 立刻更新检查点 |
over |
≥ 90% | 立即更新检查点 |
本会话已有检查点时,系统提示词还会常驻一段规则:上下文紧张时先落盘再压缩;与项目 repo 冲突时以 repo 为准。
数据存放位置¶
全部在插件目录,工作区不增文件:
<DSH_HOME>/plugins/dsh-cairn/data/
├── checkpoints/<工作区标识>/
│ ├── current.md
│ ├── current.meta.json
│ └── gen-NNN.md
├── active-variant.lock
├── tmp/
└── logs/
单份写入上限 60000 字符(超出拒绝);注入上限 12000 字符(超出截断并提示,全文仍可用 checkpoint_read)。跨会话卡片有效期 7 天;context_compact 要求落盘新鲜度在 10 分钟内。
安装与启用¶
DSH 生态里能力以插件形式扩展;社区目录页见 SkillHub:Saretheya/dsh-cairn,与 DeepSeek / 幻方无官方从属关系,安装前建议自行查看源码与许可证。
官方 README 给出的安装命令如下:
dsh plugin --profile desktop add dsh-cairn
安装后重启 DSH。需要 DSH 0.2.x;Node 引擎要求见 package.json(^22.19.0 || >=24.0.0)。插件以当前 DSH 进程权限运行,安装前应确认你信任维护者与代码内容。
典型用法¶
README 没有单独的长篇「教程脚本」,用法围绕工具与纪律展开,可按下面顺序理解。
-
在里程碑写检查点
根因确定、方案拍板、模块改完、测试通过、用户确认决策等时机,调用checkpoint_write,内容应包含目标、结论、否决方案及原因、待办与证据(Evidence);并填写topic、keywords以便日后跨会话召回。 -
上下文变紧时
收到插件的warm/near/over提醒时,先更新检查点,再视环境调用context_compact。压缩发生后,依赖系统提示中的检查点与唤醒消息继续任务,可用checkpoint_read查全文或过滤行。 -
排查注入行为
调用context_status查看当前窗口占用以及本工作区检查点为何注入摘要、全文或仅一行指针。 -
纯增量、长期不压缩的场景
README 指出:若任务从不到 50% 且从不压缩,上述档位提醒可能不会触发。可在项目AGENTS.md里写里程碑纪律(例如「每个模块改完调用一次checkpoint_write」),把落盘变成固定动作。
写入检查点示例结构以 README 语义为准(字段名以工具/schema 为准):目标、已定结论、已否决方案、待办、Evidence 要点,以及 topic / keywords。
适用场景与注意¶
适合谁:长时间在同一 DSH 会话里做复杂任务(调试、多轮方案比较、测试证据追踪),或希望在 7 天内用新会话接着同一主题且控制 token 的人。
已知限制(来自 README):
- 插件不会自动总结对话;写什么由模型(及你在
AGENTS.md中的纪律)决定。 - 跨会话相关性是关键词级,不是语义 embedding;策略偏保守,可能只给一行指针。
- 主动压缩是否可用取决于 DSH 装配;核心落盘与重注入不依赖该能力。
- 同一
data/目录只允许一个实例生效;多实例指向同一插件目录时,后到的会休眠。
安全与信任:插件读写仅限 <DSH_HOME>/plugins/dsh-cairn/data/,不写入工作区;仍建议在安装前阅读 仓库源码 与 MIT 许可证条款。
结尾¶
dsh-cairn 不改动 DSH 压缩本身,而是把检查点放在系统提示中压缩无法触及的位置,并在压缩后重新注入,减轻「摘要把细节冲掉、模型否认刚才结论」的问题。数据留在插件目录,不污染项目仓库。
- 目录页:https://www.skillhub.cn/plugins/Saretheya/dsh-cairn
- GitHub:https://github.com/Saretheya/dsh-cairn