前言¶
用 DeepSeek Harness(DSH)做长会话时,官方上下文压缩(compaction)会在上下文接近上限时,把一大段历史压成摘要。会话里只留下摘要,被折掉的用户消息、模型回复以及当时的推理脉络,默认情况下无法再从 Harness 里找回。
若你需要事后对照「压缩前到底说了什么」、做审计或复盘,单靠摘要往往不够。社区插件 dafiyu-fold(维护者 cazhaniyyah603-ui)针对的就是这一点:不替换官方压缩引擎,只在官方调用 summarize() 之前,把本次要折叠的原文整段写到本地 Markdown。摘要仍由官方流程生成,会话表现与未装插件时一致,多出来的是磁盘上的存档。
这是什么¶
dafiyu-fold 在 SkillHub 分类为「记忆」,当前 GitHub 约 3 stars,版本 v1.0.0,许可证 MIT。README 用一句话概括能力:在 DSH compaction 用摘要替换原文之前归档原始上下文,通过包裹官方 summarize() 实现,不改动引擎本身。
插件不联网、不上传数据,也不修改会话文件;折叠仍由官方完成,它只在旁边抄一份。
核心功能¶
每一轮折叠触发前,插件会生成一份 Markdown,路径形如:
~/.dsh/fold-archive/折叠-插件-2026-10-18T06-19-18.md
文件内按角色保留消息条目,内容与传入 summarize() 的输入一致。官方摘要照常生成并出现在会话中。
实现方式是对 compaction 服务做注入:在 ctx.inject(['compaction']) 回调里取得引擎原型,仅覆盖 summarize(),先存档再调用原方法。提示词、阈值(如 thresholdRatio、retainTokens)等均由官方 @deepseek-ai/dsh-compaction-basic 配置,插件不碰。
明确不做的包括:替换压缩引擎、改提示词或阈值、自动清理存档目录。
安装与启用¶
下面介绍从 GitHub 一键安装(README 注明 DSH 0.2.0 实测可用,约 8 秒装完 v1.0.0):
dsh plugin --profile desktop add github:cazhaniyyah603-ui/dafiyu-fold
装完后还需两步,缺一插件不会工作:
- 在所用 profile 的
package.json里,把dafiyu-fold加入dsh.profile.bundles数组; - 在
cordis.patch.yml中,将- id: dafiyu-fold写在 compaction 分组内的config下,与compaction-basic同级。
也可手动安装:把仓库目录放到插件目录,并在 profile 的 package.json 的 dependencies 中写 "dafiyu-fold": "link:/绝对路径/到/dafiyu-fold"。
必须放进 compaction 分组¶
DSH 把折叠服务放在带 isolate.compaction: true 的分组里,该分组外的插件无法 inject(['compaction'])。若把 dafiyu-fold 写在 profile 最外层,会出现 cannot get property "compaction" without inject 一类错误。
正确写法示例(节选):
- id: compaction
name: cordis:group
group: true
isolate:
compaction: true
toolResultPruner: true
config:
- id: compaction-basic
name: '@deepseek-ai/dsh-compaction-basic'
config:
thresholdRatio: 0.22
retainTokens: 40000
- id: dafiyu-fold
name: dafiyu-fold
验证与配置¶
安装并改好 patch 后,可用日志确认是否生效:
tail -f ~/.dsh/dafiyu-fold.log
README 给出的正常日志应包含 apply 进来了、inject('compaction') 的回调进来了,以及「以后每次折叠都会先把原文落盘」一类说明。此后每次折叠会在存档目录多一个 折叠-插件-*.md。
可选环境变量:
| 环境变量 | 默认值 | 作用 |
|---|---|---|
DAFIYU_FOLD_DIR |
~/.dsh/fold-archive |
原文存档目录 |
DAFIYU_FOLD_LOG |
~/.dsh/dafiyu-fold.log |
日志路径 |
适用场景与注意¶
适合:长会话、频繁触发 compaction 的桌面 profile 用户,需要在摘要之外保留可检索的原文;对合规或复盘有「折叠前快照」需求的场景。
注意:
- 插件依赖对官方引擎内部
summarize钩子的包裹,DSH 大版本升级后可能失效;日志出现「没有 summarize」时可移除cordis.patch.yml中对应行,一般不影响启动。 - 每次
summarize调用落一份文件;若官方一次折叠多轮调用,会得到多份存档,属预期行为。 - 存档目录会持续增长,插件不自动删除,需自行清理。
- 插件以当前 dsh 进程权限 运行,安装前建议阅读仓库源码与 MIT 许可证,确认路径与数据留在本机。
DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dafiyu-fold 的价值很集中:在官方动手折叠之前,把即将被摘要替换的原文抄到 ~/.dsh/fold-archive/,不改压缩策略。配置时务必把插件放进 compaction 的 isolate 分组。更多信息见 GitHub 仓库 与 SkillHub 插件页。