前言¶
在 DSH 的长会话中,上下文压力会随轮次增加。DSH 内置 compaction-basic,默认压力阈值是 80%;如果你只想针对当前会话设置更低或更高的压缩点,dsh-auto-compact 提供会话级阈值。超过阈值后自动执行 compact,摘要注入上下文后会话自然继续。
这是什么¶
dsh-auto-compact 是 DeepSeek Harness(DSH)的会话级自动上下文压缩插件,由 JohnathonYe 维护,许可证为 MIT。它监听当前会话的上下文用量,在超过会话阈值时自动执行 compact,不发送任何「继续」消息。
核心功能¶
- 会话级阈值:每个会话独立设置,按
sessionId持久化。 - 实时用量:显示当前会话上下文用量,与自带
ContextMeter同源,读取useProjection("contextPressure")。 - 阈值调节:支持
1%–90%,步进1%;未设置时默认50%。 - 自动检测:在回合中每步前与回合结束时检测,超阈值自动执行
compact。 - 会话继续:压缩摘要注入上下文后会话自然继续,不发送任何「继续」消息。
- 阈值持久化:保存在
settings.yaml的dsh-auto-compact命名空间,重启不丢。 - 与内置机制并存:DSH 内置
compaction-basic(默认80%压力阈值)保留,互不干扰。
安装与启用¶
先确认前置条件:已装好 DSH,dsh web 能正常运行;Node.js ≥ 20、pnpm ≥ 10。同时需要 DSH 的 compaction-basic(@deepseek-ai/dsh-compaction-basic)处于启用状态;默认预设 standard / code / cordis 均已内置,minimal 预设除外。
如果之前安装过旧包名 auto-compact,先卸载旧包,再安装新包名 dsh-auto-compact,避免双挂载:
npx -y --package @deepseek-ai/dsh dsh plugin --profile web remove auto-compact
推荐运行以下一键安装命令:
curl -fsSL https://raw.githubusercontent.com/JohnathonYe/auto-compact/main/scripts/install.sh | bash
安装或更新后,重启 DSH,并强刷浏览器:macOS 使用 Cmd+Shift+R,Windows / Linux 使用 Ctrl+Shift+R。更新时重跑一键安装命令,装完同样重启 DSH 并强刷浏览器。
卸载使用以下命令:
npx -y --package @deepseek-ai/dsh dsh plugin --profile web remove dsh-auto-compact
典型用法¶
1、点击输入区右侧的圆环,打开面板。
2、面板显示当前会话的实时上下文用量(百分比)。
3、拖动滑杆设置阈值(1%–90%,会话级独立;未拖动过的新会话默认 50%,仅当前会话生效)。
4、之后每当用量超过阈值(回合中某一步之前,或回合结束时),插件自动执行 compact 并继续。
实现细节与注意¶
- 检查点:所有检查都在
agent/pre-step(waterfall 中间件)与agent/turn-stopping(串行事件)中执行,全程try/catch,绝不抛出。 - 阈值存储:阈值保存在
settings.yaml的dsh-auto-compact命名空间。 - 设置通道:插件使用自定义 webServer 路由
/dsh-auto-compact/api,host 侧直写 settings 服务,绕过 DSHapi.settings的官方命名空间白名单。 - 权限与审计:插件以当前
dsh进程权限运行。安装前应检查源码、依赖与MIT许可证;如果预设不启用compaction-basic,插件无法满足自动compact前提。
结尾¶
dsh-auto-compact 把上下文压缩阈值从全局默认变成当前会话可调,适合需要精细控制上下文压力的 DSH 会话。
GitHub 仓库:
https://github.com/JohnathonYe/auto-compact