dsh-flashback: Using Checkpoints to Let Task State Survive Context Compression

前言

在 DeepSeek Harness(DSH)里做长会话时,宿主会把较早的对话压成摘要以腾出上下文窗口。压缩是有损的:压过几次之后,当初否决过的方案、定下来的参数、测试是否跑过这类细节会从摘要里消失,模型有时还会推翻刚确认过的结论。社区插件 dsh-flashback 的做法是:让模型在里程碑处写入检查点,插件把副本放在系统提示词里并在每次压缩后重新注入,检查点只落在插件自有目录,不往工作区写文件。

这是什么

dsh-flashback 由维护者 Saretheya 发布,在 SkillHub 等社区目录中归类为「记忆」类插件(npm 包名 dsh-flashback,当前版本 1.0.1,MIT 许可)。它面向 DSH 0.2.x,目标是在上下文被多次压缩后仍保留任务的目标、已定结论、否决方案、待办与证据摘要。

与「把笔记写进 repo」不同:数据全部在 <DSH_HOME>/plugins/dsh-flashback/data/ 下,按工作区标识分目录存放 current.md、元数据与最多 20 代历史代际;卸载插件时随插件目录消失,不修改 cordis.patch.yml 或工作区里的 settings.yaml。

核心功能

检查点与重注入

模型通过工具 checkpoint_write 写入或更新检查点;旧代自动归档。checkpoint_read 可读全文或按关键词过滤行。插件把活跃检查点挂到 DSH 系统提示词的首段(该段不参与压缩),因此可以在任意多次压缩之后仍被注入。

四档注入策略

插件不会每轮都把整份检查点塞进上下文,而是按检查点与会话的关系选择体量:

情形 注入内容 说明
同一会话 全文(单份注入上限 12000 字符) 与会话绑定的权威副本
跨会话、7 天内且主题相关 摘要卡片(≤900 字符) 依赖检查点里的 topic 与 keywords
跨会话、过期或主题不相关 一行指针 约 95 字符量级
尚无检查点 不注入 0 字符

跨会话时若未写 topic 和 keywords,相关判断会偏保守,往往只给一行提示;需要全文时用 checkpoint_read 自行读取。

工具与上下文状态

除上述读写工具外,还提供 context_status:查看真实 token 占用、窗口,以及当前检查点为何被注入或未注入。context_compact 在宿主提供压缩服务时可预约一次主动压缩;若压缩服务不在插件所在平面,则只落盘并如实告知,核心落盘与重注入能力不受影响。

单份写入上限 60000 字符(超出拒绝);注入超限会截断并提示,全文仍可通过 checkpoint_read 获取。

何时写检查点

插件不依赖模型「自觉」,会在多种渠道施加纪律:

  1. 上下文档位提醒:按占用比例在 warm(≥50%)、near(≥80%)、over(≥90%)档位各注入一次提醒,建议先 checkpoint_write 再 context_compact(在 near/over 档位强调立刻更新)。
  2. 常驻系统提示词段:本会话已有检查点时,每轮说明该段为会话权威副本(与项目 repo 冲突时以 repo 为准),以及上下文紧张时的先后顺序。
  3. 随包 skill context-checkpoint:声明里程碑、压缩后对账、压力信号、溢出类报错等触发写检查点的情形。
  4. 压缩后唤醒消息:压缩完成后提示检查点已就绪、历史已压缩,要求直接续做而非重述已完成工作。

若任务长期不到 50% 占用且从不压缩,上述自动提醒可能不会出现;可在 AGENTS.md 里约定里程碑纪律(例如每个模块改完调用一次 checkpoint_write)。

安装与启用

需要 DSH 0.2.x(README 记载在 0.2.1-rc.5 上实测)。安装命令如下:

dsh plugin --profile desktop add dsh-flashback

装好重启 DSH 即可使用。插件零外部依赖(仅 node:* 与包内模块),peer 依赖为 @deepseek-ai/cordis >=4.0.1 <5,Node 引擎要求 ^22.19.0 || >=24.0.0。

典型用法

长任务推进中,在根因明确、方案敲定、模块改完、测试通过或用户确认决策等节点,调用 checkpoint_write,并在元数据里填写 topic 与 keywords,以便日后跨会话仍能收到摘要卡片而非仅一行指针。检查点正文宜包含:当前目标、已定结论、已否决方案及原因、待办、关键证据(如测试输出要点)。

上下文占用升高时,按插件注入的提醒先更新检查点,再视环境调用 context_compact。压缩后若模型行为像「从零开始」,可结合 context_status 确认注入档位,并用 checkpoint_read 核对全文。

用 context_status 排查「为什么没注入全文」或 token 占用是否符合预期,是调试时的常规步骤。

适用场景与注意

适合:单次会话内多次压缩仍要保持决策一致;隔几天在同一工作区继续同一主题;需要本地工作状态但不希望检查点进 Git 的场景。

注意:

  • 插件不会自动总结对话;写什么由模型(或你在 AGENTS.md 里的纪律)决定。
  • 跨会话相关性是关键词级判断,不是语义 embedding;误判时保守地少占 token。
  • 同一份 data/ 目录只允许一个插件实例生效;多 DSH 实例共享同一插件目录时,后到者会休眠。
  • DSH 生态是「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
  • 插件以当前 DSH 进程权限运行,安装前宜自行查看 GitHub 仓库 源码与 MIT 许可证。

结尾

dsh-flashback 把「压缩碰不到的系统提示词段」当作检查点载体,在合适的时机提醒落盘,并按会话关系控制注入体量,用来缓解长会话里结论被摘要冲掉的问题。更多信息见社区目录页 Saretheya/dsh-flashback 与仓库 https://github.com/Saretheya/dsh-flashback。

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

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

Xiaoye