DSH(DeepSeek Harness)内置的压缩机制是纯反应式的,它基于固定阈值触发,无法判断当前截断上下文是否处于安全点。例如,它可能刚好在读取文件后、编辑文件前触发压缩,导致模型丢失刚刚读取的关键信息。
Smart Compaction 将决策权交给模型,使其能主动判断并在安全点触发压缩。
是什么¶
这是 DeepSeek Harness 的一个插件,由 JoblessJoe 维护。它向模型提供了两个工具:compact_now 和 context_status。
compact_now:允许模型在安全点(如完成一个 todo 项后)主动压缩上下文。context_status:提供真实的 token 使用率数据,让模型了解当前上下文窗口的占用情况。
核心功能¶
compact_now¶
模型调用此工具时,会选取当前最大的可压缩历史片段,并调用 DSH 的 compactRegion() 方法。调用前会向聊天界面发送一条“Compacting now”的通知,避免用户误以为模型卡住。
如果历史记录不足以进行压缩,该工具会无害地无操作,不会发送通知。
context_status¶
这是一个只读工具,不会修改会话。它报告当前 token 使用量与模型实际上下文窗口大小的对比,例如显示“~42,300 / 77,824 tokens used (54.3%)”。数据来源是 DSH 的 ctx.sessionProjections.stateOf(),与 Web UI 的上下文计量器数据一致。
自动安全点压缩¶
插件会监听 todo_write 事件。当任务被标记为完成时,这是一个自然的截断点。如果此时上下文占用超过 safePointRatio(默认为 0.5),插件会在下一个步骤开始前自动触发压缩。DSH 原有的 80% 阈值触发器仍作为后备机制。
安装与启用¶
在 DSH 的 web 配置文件(或其他支持 live reload 的配置文件)中执行:
npx @deepseek-ai/dsh plugin --profile web add smart-compaction
安装后,插件会自动添加到 dsh.profile.bundles 中。Web 配置文件支持热重载,插件会立即生效。
对于基于 @deepseek-ai/dsh-web-app 的配置文件,还需要执行以下命令以将 compaction 服务挂载到隔离的 realm 中:
npx -p smart-compaction smart-compaction-mount-into-presets
配置¶
可以在 cordis.patch.yml 中调整安全点压缩的触发阈值。例如:
- id: tool-compact-now
config:
safePointRatio: 0.6 # 或设置为 false 以禁用
注意事项¶
- 依赖服务:
compact_now需要一个可访问的compaction服务(例如compaction-basic)。 - Token 计量:
context_status需要@deepseek-ai/dsh-token-meter提供上下文压力数据。 - 无侵入性:该插件仅使用 DSH 的公共 API,没有配置修改,也没有对核心代码的更改。
- Live Reload:为了看到配置变更或插件行为的变化,建议在 Web 配置文件下运行。