dsh-context-maid:DeepSeek Harness 自动上下文策展插件

前言

DeepSeek Harness(DSH)的对话越久,上下文里堆叠的内容越容易失控。工具输出(尤其是错误日志)和重复的中间结果往往会占据绝大部分 token,而真正关键的决策和正在进行的任务则被淹没其中。一旦触发压缩,这些关键信息可能连同垃圾一起被概括成模糊的摘要。

dsh-context-maid 旨在解决这一问题。它接管 DSH 的上下文压缩与瘦身流程,将“垃圾清理”与“重要内容保护”分离。它会在压缩前先将值得保留的内容归档,再对工具输出进行感知式瘦身,并确保高权威的“钉扎”事实不会被误删。

插件概况

  • 名称:dsh-context-maid
  • 定位:DeepSeek Harness 自动上下文策展插件
  • 核心价值:Tool 输出内容感知瘦身 + 无效日志清理 + 工作流/记忆钉扎保护 + 先归档后压缩 + 摘要模型可配
  • 维护者:Icstick
  • 分类:记忆
  • 开源协议:MIT License

核心功能

dsh-context-maid 通过继承并注册 DSH 的官方服务来实现功能覆盖:

  • 接管官方压缩:继承 BasicCompactionEngine 并注册为 ctx.compaction。官方的 pressure、overflow、manual 三路触发逻辑完全保留,但阈值通过映射机制由用户控制。
  • 压缩摘要增强:在折叠摘要前,会将高权威的 PIN(钉扎)事实注入摘要指令中。摘要模型可配置(支持便宜模型、本地模型或智能路由),若未配置则跟随对话模型。
  • Tool 输出瘦身:继承 ToolResultPruner 注册为 ctx.toolResultPruner。开启 eventSlim(默认开启)后,每次 step 前会对新增的超预算 tool 结果进行增量瘦身(保留头尾、错误留尾、JSON 留骨架)。
  • 垃圾清扫:基于确定性模型识别重复读取、失败后重试等无效事件,生成无 LLM 的 stub 节点进行清理。默认关闭,需在配置中开启。
  • 先归档后压缩:折叠摘要会先经过 ACP(Agent Composition Protocol)ledger 归档,标记为普通 observation,确保重要内容不随压缩消失。
  • 可观测性:插件提供审计日志,记录每一次压缩(fold)、瘦身(slim)和清扫(sweep)的操作。通过 /context-maid status 命令可查看引擎状态、阈值配置、PIN 校验分布及折叠深度。

安装与启用

通过 CLI 直接添加插件:

dsh plugin --profile <name> add github:Icstick/dsh-context-maid

安装完成后,必须在 cordis.patch.yml 中禁用官方的默认引擎,否则 maid 无法正常接管服务。

在 profile 的 cordis.patch.yml 中添加以下配置:

- id: compaction-basic
  disabled: true
- id: tool-result-pruner
  disabled: true
- id: context-maid
  name: dsh-context-maid
  config:
    auditDir: C:\path\to\context-maid
    trigger.userRatio: 0.4

注意:
* 在 Windows 环境下,pnpm install 前必须先停止 DSH 进程,否则会遇到 native DLL 锁的问题。
* 如果 status 显示 BasicCompactionEngine,说明官方引擎未被禁用,需检查第 3 步的配置。

配置项

配置键 默认值 说明
trigger.userRatio 0.4 上下文阈值(占模型窗口比例),映射官方 thresholdRatio。
trigger.eventSlim true 开启后,step 边界对新增超预算 tool 结果进行增量瘦身。
slim.thresholdChars 4000 触发内容感知瘦身的字符数阈值。
slim.headChars / slim.tailChars 800 / 800 瘦身时保留的头尾字符数。
sweep.enabled / sweep.aggressive false / false 是否开启垃圾清扫(默认关闭)。
fold.retainRatio 0.16 压缩后保留的尾段比例。
fold.verify.enabled true 是否开启折叠后约束校验(默认只告警,不阻塞)。
pin.enabled true 是否开启 PIN 事实的软保护。
archive.enabled true 是否开启先归档后压缩。
summarization.provider / summarization.model ’’ / ‘’ 自定义摘要模型(留空则使用对话模型)。
auditDir $DSH_HOME/context-maid 审计日志目录。

使用示例

在对话中输入 /context-maid status,应能看到以下输出内容:

engine: ctx.compaction = MaidCompactionEngine(maid 提供,阈值映射生效)

注意事项

  1. 依赖冲突:必须禁用官方的 compaction-basic 和 tool-result-pruner。DSH 的 cordis 服务同一 key 只能有一个提供者,禁用官方服务是 maid 接管的前提。
  2. 校验逻辑:折叠后的约束校验目前只比对摘要正文中的字面锚点,不读取折叠后的 session surface。这意味着它无法检测“约束虽然还在上下文中但不在摘要里”的情况。
  3. 默认行为:校验结论默认只告警,不阻塞折叠。将 fold.verify.enabled 设为 false 会关闭校验与留痕,但不改变折叠行为。
  4. 版本兼容:请确保使用兼容的 DSH 版本(peerDependencies 中要求的范围)。
羽毛球分组比赛记分
小程序二维码

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

小夜