dsh-compact-threshold:在 Composer 输入框旁实时调节上下文压缩阈值

前言

DeepSeek Harness(DSH)在上下文接近窗口上限时会通过 BasicCompactionEngine 自动压缩会话。默认阈值来自 profile 里的 compaction-basic 配置,构造引擎时会被解析成冻结对象;改 profile 通常要重启或重新加载,长任务里想「这次先压早一点、下次再松一点」并不顺手。

dsh-compact-threshold 由社区维护者 xlcg10086 发布,分类为模型推理相关插件。它在 Composer 输入框左下角提供 20%–80% 的阈值滑条,把比例写入当前 Agent 对应压缩引擎的运行时 config.thresholdRatio,无需改 profile、无需重启 DSH。下面介绍定位、功能、安装与使用时需要留意的边界。

这是什么

插件全名 dsh-compact-threshold(npm 包名与仓库同名),当前 release 版本为 1.0.0,许可证 MIT。一句话定位:为 DSH Composer 提供实时的自动压缩阈值控制(20%–80%)。

它不读取、不上传会话内容;用量展示依赖 DSH 本地 tokenMeter(chars / 4 启发式,增量计算,无网络、无额外 token 消耗)。

核心功能

资料中明确列出的能力如下。

  • 输入框左下角「自动压缩 XX%」胶囊,点击打开控制面板。
  • 滑条固定 20%–80%,并提供 20/30/40/50/60/70/80 快捷档。
  • 面板实时显示当前用量、上下文窗口、触发线及用量进度条。
  • 调整后立即作用于当前运行中的压缩引擎;新 bundle 安装后也可通过 HMR 生效,不必重启 DSH。
  • 当新阈值低于当前用量时:Agent 空闲会立即走一次 compactNow(与 /compact 相同底层路径);Agent 运行中则在下一个 step 的自动压力检查里压缩。
  • 「立即压缩」按钮可手动触发一次压缩。
  • 中英文界面跟随 DSH 语言设置。
  • 阈值持久化在 $DSH_HOME/compact-control.json,重启后保留。

面板里的「触发线」并非滑条比例的简单映射:实际阈值为 min(窗口 × 比例, 窗口 - 输出预留 - headroom)。输出预留较大的模型(例如 500K 窗口、184K 输出预留)会显示低于滑条比例的实际触发百分比——这是 DSH 压缩逻辑与窗口预留共同作用的结果,不是显示错误。

为什么是 20%–80%

  • 上限 80%:DSH 内置 compaction-basic 的 thresholdRatio 默认与上限均为 0.8;再高容易拖累模型表现,也与内置配置冲突。
  • 下限 20%:retainRatio 为 0.16,阈值需明显大于保留比例,否则会出现刚压完又立刻触发的抖动;20% 留出安全边界。

工作原理(简述)

DSH 每个 step 通过引擎实例的 this.config 做压力判断。本插件不修改 profile,而是:

  1. 经 agentPresets.serviceFor(agent, 'compaction') 取得该 Agent preset 隔离域内的压缩引擎实例;
  2. 在 agent/created、agent/pre-step、agent/status 事件中把滑条比例写入 config.thresholdRatio;
  3. 下一次 compactIfNeeded() 使用新阈值;
  4. 滑条降到低于当前用量时,按 Agent 状态选择 compactNow() 或下一步的 compactIfNeeded()。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。社区目录页见 SkillHub 插件页(独立站点,与 DeepSeek / 幻方无官方从属关系)。

环境要求(来自 package.json / README):DSH >= 0.2.1-rc.2,Web Client(dsh.client.platform: "web");README 记载已在 DSH Desktop 2.0.18 / DSH 0.2.1-rc.2、Windows 上验证。

DSH Desktop(推荐)

在 设置 → 插件 → 安装本地包 / 从压缩包安装 中选择 GitHub Release 的 .tgz,或在插件管理器里安装本仓库:

plugin_manager install_bundle target=<本仓库目录或 release tarball>

安装后在 插件 页启用 dsh-compact-threshold,无需重启。

DSH CLI

从 GitHub Release 预构建 tarball 安装:

dsh plugin --profile <profile> add \
  https://github.com/xlcg10086/dsh-compact-threshold/releases/download/v1.0.0/dsh-compact-threshold-1.0.0.tgz

若本地具备构建环境,也可按 README 从 GitHub 安装源码:

dsh plugin --profile <profile> add github:xlcg10086/dsh-compact-threshold

典型用法

经过上面的安装与启用,可按 README 中的步骤操作:

  1. 在输入框左下角找到「自动压缩 80%」(初始文案随持久化阈值变化)。
  2. 点击胶囊打开面板。
  3. 拖动滑条或点选快捷档调整阈值。
  4. 对照「当前用量 / 上下文窗口 / 触发线」,确认触发线位置。
  5. 需要立刻释放上下文时点击「立即压缩」。

长对话 Agent 任务中,若感觉默认 80% 才压、上下文已偏满,可先把阈值调到 50%–60% 观察触发线;空闲且用量已超过新阈值时,插件会立即执行一次压缩,无需手动输入 /compact。

适用场景与注意

适合谁:经常在 DSH Web Composer 里跑长上下文 Agent、希望按任务动态调节自动压缩时机、又不想反复改 profile 或重启的开发者。

隐私:插件无网络请求、遥测或外部服务;仅读写本地 tokenMeter、压缩引擎运行时配置与 $DSH_HOME/compact-control.json。

注意:

  • 仅面向 Web Client;非 web 平台未在资料中声明支持。
  • 滑条比例受 DSH 内置压缩与输出预留约束,面板「触发线」可能低于滑条百分比,属预期行为。
  • Agent 运行中把阈值调低时,压缩会等到下一个 step 的压力检查,不会中途打断当前 step。

结尾

dsh-compact-threshold 把「改 compaction-basic 阈值」从静态 profile 配置变成 Composer 旁的可视化、可持久化控件,并与 DSH 现有 compactNow / compactIfNeeded 路径对齐。需要安装包或设计细节时,以仓库 README 为准:

  • 目录页:https://www.skillhub.cn/plugins/xlcg10086/dsh-compact-threshold
  • GitHub:https://github.com/xlcg10086/dsh-compact-threshold
羽毛球分组比赛记分
小程序二维码

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

小夜