dsh-compact:DeepSeek Harness 上下文压缩与溢出恢复插件

前言

DeepSeek Harness (DSH) 的运行过程依赖上下文窗口。当对话轮次增加或工具调用频繁时,历史消息容易填满上下文,导致请求失败或模型遗忘早期指令。dsh-compact 插件旨在解决这一问题,通过自动压缩历史内容、手动压缩入口以及溢出恢复机制,让长对话能够持续进行。

插件概况

  • 名称:dsh-compact
  • 核心价值:DeepSeek Harness 上下文自动压缩、手动压缩与溢出恢复插件
  • 维护者:zixin947
  • 开源协议:MIT

安装与启用

完全退出正在运行的 DSH 服务,执行以下命令安装插件:

dsh plugin --profile web add "github:zixin947/dsh-compact#main"

安装完成后,重新启动 DSH Web 服务。默认的挂载配置由 cordis.patch.yml 提供:

- id: compact
  name: 'dsh-compact'

配置项

插件提供以下配置项,允许你控制压缩的触发时机、保留比例以及溢出恢复策略。默认值如下:

配置项 默认值 说明
enabled true 是否启用自动压缩和溢出恢复
thresholdRatio 0.75 上下文占用达到窗口 75% 时触发自动压缩
retainRatio 0.20 压缩后保留最近约 20% 的上下文
recoverOnOverflow true 遇到上下文溢出错误时是否尝试恢复
maxOverflowRetries 1 溢出恢复的最大重试次数
modelPolicies [] 针对特定模型的覆盖策略

参数约束

  • thresholdRatio 范围为 0.50 到 0.95。
  • retainRatio 范围为 0.05 到 0.50。
  • retainRatio 必须小于 thresholdRatio。
  • modelPolicies 使用 provider 和 model 精确匹配。

配置示例

- id: compact
  name: 'dsh-compact'
  config:
    enabled: true
    thresholdRatio: 0.75
    retainRatio: 0.20
    recoverOnOverflow: true
    maxOverflowRetries: 1
    modelPolicies:
      - provider: youchu
        model: deepseek-v4-flash
        thresholdRatio: 0.80
        retainRatio: 0.20

使用方式

基础挂载

一般使用者只需挂载 dsh-compact,即可获得自动压缩和溢出恢复能力。

Agent 级别挂载

如果目标 Agent preset 需要独立的压缩入口(如 /compact 命令)或需要裁剪工具结果,可以在对应组合中挂载 dsh-compact/agent:

- id: compact-agent
  name: 'dsh-compact/agent'
  isolate:
    compaction: true
    toolResultPruner: true

该挂载点组合了压缩引擎、/compact 命令和工具结果裁剪器。

操作入口

  • 自动压缩:在普通请求开始前,根据上下文占用比例自动触发。
  • 手动压缩:通过 /compact 命令或设置页中的入口手动触发。

工作机制

自动压缩流程

每次 Agent 请求开始前,插件会检查当前上下文占用比例。达到 thresholdRatio 时:

  1. 选择较早的会话区间进行压缩。
  2. 使用当前会话的模型生成结构化检查点摘要。
  3. 将原区间替换为持久化摘要(保留最近一段上下文)。
  4. 继续执行原本的请求。

每次压力检查最多生成一个摘要,避免同一回合内重复压缩。

溢出恢复

当模型返回上下文窗口超限错误时,插件会尝试压缩当前会话并重试原请求。恢复次数受 maxOverflowRetries 限制,取消中的请求不会重试。

空摘要降级

如果摘要模型返回空文本,插件会移除 Agent system prompt 和工具定义,然后降级重试一次。其他网络或模型错误不会触发此降级逻辑。

注意事项

  1. 文件安全:插件仅处理 DSH 会话上下文,不会删除工作区文件。
  2. 摘要质量:压缩会用摘要替换较早的会话显示内容,摘要质量取决于当前使用的模型。
  3. 容错性:自动压缩失败时,插件会记录状态并继续用户请求,不会因摘要服务异常中断当前回合。
  4. 版本依赖:该版本面向 @deepseek-ai/dsh 0.1.0-rc.7 及相同插件 API 的版本。
  5. 仓库独立:独立仓库只包含插件本体;EAC 的 preset 迁移和桌面宿主集成仍由 EAC 主项目维护。

总结

dsh-compact 通过在上下文接近上限时自动生成摘要或在溢出时进行有界恢复,降低了长对话维护的复杂度。对于需要长时间运行或频繁调用工具的 Agent 场景,该插件是维持对话连贯性的实用工具。

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

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

小夜