dsh-quilt-compact:DeepSeek Harness 上下文压缩插件

前言

DeepSeek Harness (DSH) 默认使用 compaction-basic 进行上下文压缩。如果你希望使用指定的模型(尤其是低价或免费小模型)来压缩对话,以节省 Token 成本,或者处理上下文窗口较短无法容纳完整对话的场景,dsh-quilt-compact 是一个可行的替代方案。它接管了默认的 ctx.compaction 后端。

是什么

由 bvbhu 维护的插件,基于 MIT 协议。它的核心逻辑是用指定的模型池对对话进行“分块摘要再归并”的压缩,最终产出一个小而全的检查点。

工作流程

压缩过程按以下顺序进行:

  1. Stage 0 预处理:对要压缩的区域进行预处理,包括合并相邻重复行、压缩连续空行、清除终端噪音(ANSI 转义、光标标记等)、保留文件/图片附件名称;可选代码骨架化与日志精简。
  2. 选模型与切块:每轮选定一个可用模型,按该模型的上下文容量切分上下文。每块同时带上摘要长度上限,保证最终归并不超出限制。
  3. 摘要:每个分块经模型池调用摘要成一个小 digest。
  4. 归并:所有 digest 一次调用整合成最终检查点。
  5. Checkpoint:最终 digest 替换原区域,写入会话。

安装与启用

直接从 GitHub 仓库安装:

dsh plugin --profile <name> add github:bvbhu/dsh-quilt-compact

安装命令会自动激活随包层并禁用 compaction-basic(本插件成为 ctx.compaction)。建议用 #<sha> 后缀钉住提交,避免裸仓库跟随默认分支:

dsh plugin --profile <name> add github:bvbhu/dsh-quilt-compact#<sha>

配置

配置通过 Web UI 的设置页或直接编辑 profile 的 cordis.patch.yml 进行。

模型池

配置多档模型(tiers),按容量自动选用与降级。

- id: dsh-quilt-compact
  config:
    tiers:
      - name: primary
        models:
          - provider: openrouter
            model: openrouter/free
            maxConcurrent: 1
            cooldownHours: 1
  • cooldownHours:失败后冷却的小时数(正数,默认 1 小时)。
  • maxConcurrent:默认为 1。

归并窗口

控制归并前最多保留多少上下文(token 数),默认 128k。

    mergeMaxContextTokens: 64000   # 归并前最多保留多少上下文(归并窗口),默认 128000

分块

控制分块比例与重叠比例。

    chunkRatio: 0.8        # 分块占用模型可用输入的比例
    chunkOverlapRatio: 0.1 # 相邻分块重叠占分块预算的比例

预处理

启用 Stage 0 的预处理选项。

    preprocessing:
      dedup: true                              # 合并相邻重复行
      purgeErrors: true                        # 清除终端噪音
      astSkeleton: { enabled: false, maxDepth: 2 }  # 代码骨架化(需显式开启)
      logCondense: { mode: balanced, maxLines: 200 }  # 超长日志冷凝

运行记录

可选的质量评估/诊断记录,默认关闭。

    runRecord:
      enabled: false      # 关闭时不产生任何运行记录
      maxEntries: 200     # 文件最多保留多少条
      snapshotChars: 0    # >0 时每条嵌入一段截断的对话原文(默认 0 = 不存原文)
      path: ''            # 固定文件位置;留空用 DSH storage 根目录

启用后,每次压缩会追加一行 JSON 到 <DSH home>/storages/dsh_quilt_compact_runs.jsonl。
* ref:指向会话事件日志里的被压缩区间。
* chunks:每块模型归属信息。
* cooldowns:每次进入冷却的报错详情。
* snapshotChars:需显式设为正数才会嵌入截断的对话原文副本。

适用场景与注意

  • 版本依赖:需 DSH 版本 >=0.1.7-alpha.2 <0.2.0-0 || >=0.2.0-rc.1 <0.3.0-0。
  • 隐私:默认不保存对话原文,只记录引用。开启 runRecord 后默认仍不保存原文,需设置 snapshotChars > 0。
  • 兜底机制:模型池失败或归并时无足够模型,会由会话模型兜底压缩。
羽毛球分组比赛记分
小程序二维码

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

小夜