前言¶
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 边界再次应用。
- 目录页:https://www.skillhub.cn/plugins/SunlitCrack/dsh-compaction-threshold
- 源码:https://github.com/SunlitCrack/dsh-compaction-threshold
- 许可证:MIT(package 版本 0.1.0)
核心功能¶
配置卡提供三项设置(保存后立即扫描存活会话写入引擎,并在每个 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 所述环境下不可用,需走本地热装配。步骤概要如下。
- 在插件源码目录执行打包:
npm pack
得到 dsh-compaction-threshold-0.1.0.tgz,解包到本机插件目录(README 示例:D:\dsh-plugins\dsh-compaction-threshold)。
-
通过 Desktop 侧的
dev_install_package(dir, profile='desktop')完成安装(具体调用方式以你本机 DSH Desktop 开发文档为准)。 -
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,否则宿主可能无法启动。 -
装完后对页面做硬刷新(Ctrl+Shift+R)。自 schemastery 0.2.0 起,第三方插件配置卡出现在 插件 页,而非「设置 → 通用」。
修改本插件代码后需重启 DSH Desktop 才生效:本机 super-injector 的
dev_reload_package无法拿到loader.internal,且已存在 loader entry 时dev_install_package可能跳过 create。
典型用法¶
- 打开 插件 → dsh-compaction-threshold 配置卡。
- 按模型窗口与对话长度习惯设置「触发阈值」与「保留近期对话」,保证保留比例小于触发阈值。
- 若希望只靠手动压缩,将「自动压缩」关闭;需要时仍可使用
/compact。 - 保存后等待片刻(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 为准: