前言¶
在 DeepSeek Harness(DSH)里跑长会话时,上下文窗口会被历史消息、工具调用与 checkpoint 逐步占满。官方 Basic compaction 会在接近窗口上限时做摘要与裁剪;默认阈值与输出预留的计算方式,在模型允许较大 max_tokens 时可能偏早触发 proactive 压缩。若你仍想用 Basic 自带的 summarizer、/compact、溢出恢复与 token 计量,只想改「何时压、压哪一段、失败怎么退避」,而不换 preset、不另装一套 compaction 引擎,社区插件 dsh-compaction-policy(维护者 huohua-dev,分类:工作流)提供的是一条全局策略层路径。
下面介绍它的定位、默认行为、安装方式与配置要点。事实以 GitHub 仓库 README 与 v0.2.2 发布说明为准;插件处于 Experimental 阶段,README 明确说明未证明原生 Windows / 真实模型 GUI 会话下的摘要质量。
这是什么¶
dsh-compaction-policy 是面向 DeepSeek Harness 的轻量 全局 compaction 策略插件:在指纹校验通过的官方 Basic 实现上,替换 proactive 预算、区间选择与无进展重试守卫;保留 Basic 原生压力机制、checkpoint、工具配对、token meter、UI 事件协议、原生 /compact 与 overflow recovery。它不注册 preset、不过滤 preset 注册表,也不新增自动 compaction 监听。
安装后默认 bundle 只增加一个根插件条目 compaction-policy-global(dsh-compaction-policy/global),作用于同一 Cordis runtime 内符合条件的官方 Basic 实例(含普通 preset)。自定义 backend、子类或覆写方法的实例会被跳过;无 compaction 的 minimal 组合不受影响。「Global」不表示机器上所有 DSH 进程或 profile。
宿主兼容性(README):bundle 声明加载 DSH ^0.2.1-rc.1(0.2.x 含后续 RC)与 Cordis 4.0.x;仅当五组 Basic 方法指纹与已验证实现一致时策略才会激活;无法识别的宿主构建会保持加载但处于 inert 状态,而不是启动失败。
核心功能¶
默认策略:90% 阈值,避免输出预留被重复扣减¶
相对 stock Basic,插件用 thresholdRatio、outputReserveCap、headroomTokens 等字段重算 proactive 阈值。默认 thresholdRatio: 0.9、outputReserveCap: 0、headroomTokens: 0,即 proactive 阈值为 floor(W × 0.9),剩余约 10% 作为余量且不会二次扣减。
README 给出的对比算例(算术说明,非性能 benchmark):窗口 262,144 token、输出上限 131,072 时,stock 阈值约 65,536,策略下约 235,929。
公式要点(与 README 一致):
reservedOutput = min(requestMaxTokens, outputReserveCap)
policy threshold = floor(min(W × thresholdRatio,
W − reservedOutput − headroomTokens))
retentionTarget = floor((W − reservedOutput) × retainRatio)
pruneToolResults: false(默认) 仅作用于新的 proactive-pressure 路径:该路径不先 prune 工具结果,旧内容经 Basic 摘要;不关闭原生 pruner,也不改变 stock 模式、手动或 confirmed-overflow 行为。
README 提醒:输出 cap 不等于保证可用空间;90% 满的 prompt 与满额 completion 在固定窗口内无法共存,适配层/服务端仍需约束剩余容量;本插件不是 HTTP 输出预算钳制。
区间选择与失败守卫¶
- 保留近期历史:软目标默认
retainRatio: 0.16(相对W − reservedOutput);整段 message 与 tool-call/result 单元保持原子性,最新单元即使大于目标也保留原文。 - 选段逻辑:允许较旧的大消息进入摘要范围,避免反复只摘要极小 checkpoint;system 节点受保护,后续 system 节点作为选段屏障。
- 最小选段: proactive 摘要前,选中范围内至少 2,048 非 checkpoint token(
minFreshTokens默认 2048)。 - 单步事务:每个压力步最多 一次摘要事务,不立刻再摘要刚写入的 checkpoint。
- 失败退避:失败后退避 60s、120s、240s… 最长 10 分钟;到期后在下次压力检查允许一次探测,非后台模型调用;候选 materially 变化可更早重试,无关 tail 追加不会。
- 原生路径保留:手动与 confirmed-overflow 路径、重试上限、事务完成与 durable-progress 检查仍走原生逻辑,绕过 proactive guard。
安装与启用¶
分发走 GitHub,非 npm。安装 v0.2.2 标签:
github:huohua-dev/dsh-compaction-policy#v0.2.2
Desktop 托管 profile¶
- 在 Desktop 插件管理 UI 中添加或更新上述 GitHub 源。
- 完全退出并重启 Desktop(刷新页面或 reload profile 不能替代;README 记录过旧进程 import 失败需全量重启才恢复)。
- 继续使用原有 preset,无需专用 preset。
- 在会话中执行
/compaction-policy-global status查看覆盖范围与生效策略。
Desktop 托管环境下 不要 用 CLI 改插件;README 明确拒绝 --profile desktop 类 CLI 变通。
非 Electron 托管的 web profile¶
仅适用于 不由 Desktop/Electron 管理 的 web profile:
dsh plugin --profile web add github:huohua-dev/dsh-compaction-policy#v0.2.2
然后 reload/restart 对应 host。此 CLI 路径 不是 Desktop 的替代安装方式。
安装不会改变当前默认 provider 与 preset,也不会重写主请求的 output limit、reasoning effort 或 token 记账。
典型用法:配置全局条目¶
对用户 profile 中 compaction-policy-global 做 override,策略字段放在 config.policy 下。行级配置为整行替换,非 deep-merge;改配置后需 reload profile,并 restate 需保留的自定义项。
除某一精确 route 外其余走 stock 的示例(来自 README):
- id: compaction-policy-global
config:
policy:
mode: stock
modelPolicies:
- provider: your-local-provider
model: your-model-id
mode: policy
thresholdRatio: 0.9
outputReserveCap: 0
headroomTokens: 0
pruneToolResults: false
provider / model 匹配为精确、区分大小写。未配置 modelPolicies 时,默认 mode: policy 应用于所有 eligible Basic 实例。
常用策略字段(默认值与含义见 README 表格):
| Policy field | Default | 含义摘要 |
|---|---|---|
mode |
policy |
policy 用新 proactive 策略;stock 交回 Basic。 |
thresholdRatio |
0.9 |
Proactive 窗口比例,受剩余容量分支约束。 |
outputReserveCap |
0 |
Proactive 输出预留上限(非 API output cap)。 |
headroomTokens |
0 |
额外 proactive 扣减;默认 10% 余量已在 ratio 中。 |
pruneToolResults |
false |
新 proactive 路径是否先调用原生 tool-result pruner。 |
retainRatio |
0.16 |
近期 tail 软目标比例。 |
retainTokens |
unset | 绝对 soft target,与 retainRatio 互斥。 |
minFreshTokens |
2048 |
选段最小非 checkpoint token 权重。 |
retryAfterTokens |
4096 |
冷却未结束前重试所需的候选变化量。 |
retryCooldownMs |
60000 |
摘要失败初始冷却。 |
maxRetryCooldownMs |
600000 |
指数退避上限。 |
modelPolicies |
[] |
按 { provider, model, ... } 精确覆盖。 |
dryRun |
false |
观测 proactive 路径但不 prune/摘要;stock、手动与 overflow 仍可用。 |
除 modelPolicies、dryRun 外,其余字段可在单条 route 上覆盖。未知键与非法值会被拒绝。
适用场景与注意¶
适合谁:已在 DSH 中使用官方 Basic compaction、希望延迟 proactive 触发(默认 90%)、改善摘要选段与失败退避,且不愿切换 preset 或 fork compaction 引擎的开发者。
实验性与测试范围:版本 0.2.2 标注 Experimental;README 说明 synthetic session 与 scripted model response 的 actual-host 测试已通过,但不能等同于 live GUI 或真实模型摘要质量证明;不做无损摘要或更大上下文窗口承诺。
安全与权限:插件在当前 DSH 进程权限下运行,会参与会话 compaction 决策。安装前请自行审阅 源码与 MIT 许可证,并确认与本地 DSH / Cordis 版本满足 engines 与 peer 声明(如 Node ^22.19.0 || >=24.0.0,DSH ^0.2.1-rc.1)。
生态说明:DSH 采用「一切皆插件」思路;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-compaction-policy 在不动 Basic 核心能力的前提下,用全局策略调整 proactive 阈值(默认 90%)、保留区间与失败重试守卫,适合长会话工作流调优。安装源为 github:huohua-dev/dsh-compaction-policy#v0.2.2;启用后用 /compaction-policy-global status 核对生效情况。