前言¶
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 时:
- 选择较早的会话区间进行压缩。
- 使用当前会话的模型生成结构化检查点摘要。
- 将原区间替换为持久化摘要(保留最近一段上下文)。
- 继续执行原本的请求。
每次压力检查最多生成一个摘要,避免同一回合内重复压缩。
溢出恢复¶
当模型返回上下文窗口超限错误时,插件会尝试压缩当前会话并重试原请求。恢复次数受 maxOverflowRetries 限制,取消中的请求不会重试。
空摘要降级¶
如果摘要模型返回空文本,插件会移除 Agent system prompt 和工具定义,然后降级重试一次。其他网络或模型错误不会触发此降级逻辑。
注意事项¶
- 文件安全:插件仅处理 DSH 会话上下文,不会删除工作区文件。
- 摘要质量:压缩会用摘要替换较早的会话显示内容,摘要质量取决于当前使用的模型。
- 容错性:自动压缩失败时,插件会记录状态并继续用户请求,不会因摘要服务异常中断当前回合。
- 版本依赖:该版本面向
@deepseek-ai/dsh 0.1.0-rc.7及相同插件 API 的版本。 - 仓库独立:独立仓库只包含插件本体;EAC 的 preset 迁移和桌面宿主集成仍由 EAC 主项目维护。
总结¶
dsh-compact 通过在上下文接近上限时自动生成摘要或在溢出时进行有界恢复,降低了长对话维护的复杂度。对于需要长时间运行或频繁调用工具的 Agent 场景,该插件是维持对话连贯性的实用工具。