dsh-auto-compact:DSH 会话级自动上下文压缩插件

前言

在 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.yamldsh-auto-compact 命名空间,重启不丢。
  • 与内置机制并存:DSH 内置 compaction-basic(默认 80% 压力阈值)保留,互不干扰。

安装与启用

先确认前置条件:已装好 DSH,dsh web 能正常运行;Node.js ≥ 20pnpm ≥ 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.yamldsh-auto-compact 命名空间。
  • 设置通道:插件使用自定义 webServer 路由 /dsh-auto-compact/api,host 侧直写 settings 服务,绕过 DSH api.settings 的官方命名空间白名单。
  • 权限与审计:插件以当前 dsh 进程权限运行。安装前应检查源码、依赖与 MIT 许可证;如果预设不启用 compaction-basic,插件无法满足自动 compact 前提。

结尾

dsh-auto-compact 把上下文压缩阈值从全局默认变成当前会话可调,适合需要精细控制上下文压力的 DSH 会话。

GitHub 仓库:

https://github.com/JohnathonYe/auto-compact
羽毛球分组比赛记分
小程序二维码

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

Xiaoye