dafiyu-fold:在 DSH 上下文折叠前把原文落盘

前言

用 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

装完后还需两步,缺一插件不会工作:

  1. 在所用 profile 的 package.json 里,把 dafiyu-fold 加入 dsh.profile.bundles 数组;
  2. 在 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 插件页。

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

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

小夜