dsh-compaction-threshold:在插件配置卡里调节 DSH 会话自动压缩阈值

前言

DeepSeek Harness(DSH)在长对话场景里会依赖内置的会话压缩,在上下文接近窗口上限时自动摘要并腾出空间。内核默认通过 @deepseek-ai/dsh-compaction-basic 提供压缩能力(常见默认约为 thresholdRatio = 0.8、retainRatio = 0.16)。在 web / desktop 装配下,进程级 compaction-basic 往往被禁用,每个 agent preset 又在隔离 realm 里各自挂载 BasicCompactionEngine;往 ~/.dsh/profiles/<name>/cordis.patch.yml 写同 id 的配置,也未必落到当前会话实际使用的引擎上。若你只想把「多满才压」和「最近多少对话逐字保留」调一调,又不想改压缩算法或碰会话日志,就需要一条能写进 preset 隔离引擎、保存即生效的路径。下面介绍社区插件 dsh-compaction-threshold(维护者 SunlitCrack,分类:记忆)。

这是什么

dsh-compaction-threshold 是 DSH 第三方插件:在 插件 → dsh-compaction-threshold 的配置卡里调整会话自动压缩的触发阈值与保留比例,保存后即时写入当前 agent preset 隔离 realm 内的压缩引擎,无需重启 DSH 进程即可让策略生效(插件自身代码变更后 Desktop 侧仍需按 README 说明重启,见后文安装一节)。

它不替换官方压缩实现:摘要生成、消息替换、checkpoint、持久化与溢出恢复仍由 compaction-basic 负责;本插件只改阈值类策略,并把设置持久化在命名空间 dsh-compaction-threshold 下,进程重启后由 step 边界再次应用。

核心功能

配置卡提供三项设置(保存后立即扫描存活会话写入引擎,并在每个 agent step 边界兜底同步一次):

设置项 默认 范围 说明
触发阈值 80% 17–90 自动压缩在已路由模型上下文窗口的百分之多少处触发
保留近期对话 16% 1–89 压缩时逐字保留的最近对话比例,必须小于触发阈值
自动压缩 开 — 关闭后不再自动压缩,手动 /compact 仍可用

举例:窗口为 1,000,000 tokens 的模型,触发阈值 80% 时约在 800,000 tokens 处触发压缩;保留 16% 时逐字保留约 160,000 tokens 的最近对话。

实现上插件通过 ctx.get('agentPresets').serviceFor(agent, 'compaction') 取得 preset 隔离 realm 内的 BasicCompactionEngine,并以替换整个 config 对象的方式更新参数(engine.config 可能被冻结,原位改 thresholdRatio 会在严格模式下抛错并被吞掉,表现为静默无效)。枚举存活会话应使用 ctx.get('agents').list(),而非误用 sessionPersistence.list() 顶层字段取 id。

安装与启用

社区 SkillHub 目录页用于查阅说明;本机 DSH Desktop 因 profile 装配方式,dsh plugin add 在 README 所述环境下不可用,需走本地热装配。步骤概要如下。

  1. 在插件源码目录执行打包:
npm pack

得到 dsh-compaction-threshold-0.1.0.tgz,解包到本机插件目录(README 示例:D:\dsh-plugins\dsh-compaction-threshold)。

  1. 通过 Desktop 侧的 dev_install_package(dir, profile='desktop') 完成安装(具体调用方式以你本机 DSH Desktop 开发文档为准)。

  2. link 安装的插件目录没有独立 node_modules,需在插件目录内建立 junction(不要拷贝),指向官方 Harness 安装目录下内核同一份 @deepseek-ai/schemastery(README 示例:<app>/dsh/node_modules/@deepseek-ai/schemastery,<app> 为官方安装目录如 D:\DeepSeek Harness\resources\app)。宿主半边仅 import @deepseek-ai/schemastery;自 0.2.0 起勿再导入已删除的 @deepseek-ai/dsh-settings 相关 API,否则宿主可能无法启动。

  3. 装完后对页面做硬刷新(Ctrl+Shift+R)。自 schemastery 0.2.0 起,第三方插件配置卡出现在 插件 页,而非「设置 → 通用」。

修改本插件代码后需重启 DSH Desktop 才生效:本机 super-injector 的 dev_reload_package 无法拿到 loader.internal,且已存在 loader entry 时 dev_install_package 可能跳过 create。

典型用法

  1. 打开 插件 → dsh-compaction-threshold 配置卡。
  2. 按模型窗口与对话长度习惯设置「触发阈值」与「保留近期对话」,保证保留比例小于触发阈值。
  3. 若希望只靠手动压缩,将「自动压缩」关闭;需要时仍可使用 /compact。
  4. 保存后等待片刻(README 实测保存后约 1.5 秒内引擎即为新值);长会话可在 step 边界再次同步。

验证可在宿主日志(Windows 示例:%APPDATA%\DSH Desktop\logs\host\dsh-<日期>.log)中查找:

[dsh-compaction-threshold] audit-><写入路径> {"event":"applied","thresholdRatio":0.62,…}

插件还会在第一个可写目录追加 JSONL 审计文件 dsh-compaction-threshold.jsonl(顺序:$DSH_HOME → ~/.dsh → 本插件目录)。

适用场景与注意

适合谁:需要在 Desktop / web 装配下微调自动压缩触发点与近期保留比例,且接受仍使用官方 compaction-basic 算法与摘要链路的开发者。

不在范围内(README 明确列出):

  • 压缩范围选择、摘要质量、按模型覆盖(modelPolicies)、摘要模型选择;
  • 按绝对 Token 设阈值(仅支持百分比);
  • 若别处曾设置 retainTokens,本插件会清掉该字段(与 retainRatio 互斥);
  • 某个 preset 若没有压缩组、serviceFor 拿不到引擎时,本插件对该 preset 无效。

安全与信任:插件以当前 DSH 进程权限运行,安装前请阅读源码与 MIT 许可证,并从上述 GitHub 或 SkillHub 目录页核对归属与说明。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-compaction-threshold 把「何时自动压、最近留多少」收敛到一张插件配置卡,并写到 agent preset 隔离的 BasicCompactionEngine,避免在 profile patch 里改不到真实引擎的问题。需要细节、限制与 Desktop 装配说明时,以仓库 README 为准:

羽毛球分组比赛记分
小程序二维码

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

Xiaoye