dsh-compaction-guard:DeepSeek Harness 会话压缩约束完整性检查

前言

DeepSeek Harness(DSH)在长会话场景下会进行压缩,将早期消息合并为摘要,并在压缩时把约束(如“不要强制推送到 main”、“必须先跑测试”)一并带走。这导致代理在后续对话中可能忘记这些规则,而旧的记忆插件只负责召回,不负责审计丢失。dsh-compaction-guard 针对这一痛点,在压缩摘要事件中提取被覆盖的指令行,与摘要比对,报告所有约束丢失情况,并持久化到 JSONL 文件。

插件定位

dsh-compaction-guard 是一个 DSH 记忆类插件,由 zhengqiuyang 维护。它不参与记忆存储或检索,而是审计会话压缩后的约束完整性:将用户在压缩范围内设置的约束与摘要文本比对,报告哪些约束被带走了、哪些被“静默遗忘”,并在控制台与持久化日志中体现。整个验证路径不调用 LLM,保证确定性。

核心功能

1. 监听压缩摘要事件

插件监听 compaction/summary 事件,从事件中获取 shadowedSeqs(被压缩的消息序列),并逐条调用 session.eventAt(seq) 提取用户指令行。

2. 约束比对模式

在配置的覆盖率阈值(默认 0.6)下,将每条指令行与摘要文本进行比对:

  • 逐字匹配(whitespace-normalized):如果摘要中存在完全一致(忽略空白)的子串,视为保留。
  • 内容词覆盖比对:计算指令行与摘要中共同出现的内容词数量,覆盖度 ≥ 阈值则视为保留。
  • 未匹配则报告:以上两种方式均不匹配,则判定为丢失,插件会记录并报警。

3. 配置固定约束

通过配置 pinned 字段,可指定总是需要验证的约束(逐字匹配)。这些约束在每次压缩时都会被检查,确保关键规则不因压缩而丢失。

4. 持久化日志

所有丢失的约束会被写入 .dsh-compaction-guard/ledger.jsonl,每一行是一个 JSON 对象,包含约束原文、摘要片段、比对结果等,便于 CI 工具读取。

安装与启用

使用官方安装命令:

dsh plugin --profile default add github:zhengqiuyang/dsh-compaction-guard

插件自带预构建的 lib/ 目录,无需构建步骤,也不需要 allowBuilds。安装完成后,DSH 启动时会显示 [dsh-compaction-guard] active: …。

典型用法

配置示例

在 DSH 配置文件中添加插件配置:

- id: dsh-compaction-guard
  name: dsh-compaction-guard
  config:
    pinned: ["Never force-push to main"]   # 总是验证,逐字匹配
    coverage: 0.6
    ledgerPath: .dsh-compaction-guard/ledger.jsonl

工作流程

  1. DSH 在会话压缩时触发 compaction/summary 事件。
  2. 插件从事件中获取 shadowedSeqs,提取其中的用户指令行。
  3. 将每条指令行与摘要文本进行比对:
    - 逐字匹配(忽略空白)通过则视为保留。
    - 内容词覆盖 ≥ 0.6 则视为保留。
    - 未通过则判定为丢失。
  4. 对所有 pinned 约束进行逐字比对验证。
  5. 将所有丢失的约束输出到控制台,并写入 .dsh-compaction-guard/ledger.jsonl。

日志格式

.dsh-compaction-guard/ledger.jsonl 每行示例:

{"constraint":"Never force-push to main","summary":"...","status":"lost"}

适用场景与注意

  • 适用对象:在 DSH 中使用长会话、压缩功能的用户,需要确保约束不被压缩带走的场景。
  • 权限要求:插件在当前 DSH 进程权限下运行,安装前应检查源码与许可证(MIT)。
  • 局限性:当前版本以“保守方向”为主,即宁可误报也不漏报;词覆盖比对不涉及语义理解,同义词或改写会导致误判。

生态背景

DeepSeek Harness 采用“一切皆插件”的架构,社区有独立目录与维护者。此插件属于记忆类插件家族,与官方 DeepSeek 或幻方无从属关系。

结语

dsh-compaction-guard 通过在压缩摘要事件中提取指令行并比对,将约束丢失问题显性化,为零 LLM 调用的确定性审计提供了一种实现方式。适合需要在 DSH 中严格约束压缩行为的用户。项目目录与源码见:
- 技能中心目录页
- GitHub 仓库

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

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

Xiaoye