DSH(DeepSeek Harness)从不主动向模型反馈当前的上下文 token 占用情况。模型只能凭对话长度进行估算,导致在真实占用仅 17% 时就误判“上下文见底”,并在长会话中反复出现。更严重的是,这种错误判断会随着压缩摘要的生成而“存活”下来,被当作既定背景反复注入,无法被纠正。
本插件通过实测占用回填和压缩指令补规则,从两端掐断这条链。它依赖宿主服务 tokenMeter 与 compaction(标准部署的 dsh-base 自带),仅作为单一 peer 依赖引入 schemastery,无需构建,MIT 许可证,版本 0.2.0。
核心能力¶
1. 实测占用回填(默认开启)¶
插件每轮由宿主的 tokenMeter 实测并回填上下文占用信息。它会向模型展示已用 tokens、窗口总大小、剩余 tokens 以及距离自动折叠点的余量。
系统会根据压缩阈值比例自动分档(ample / moderate / tight / critical),并附带“余量还能撑几步”的估算(基于本会话步进中位数计算)。这一行是“宿主的后台遥测”,明确告知模型这是唯一权威,不要自行倒计时。
显示示例:
Context occupancy (host-measured): 300K / 1.00M tokens used (30%).
Automatic compaction fires at 678K (68% of the window).
About 378K tokens of headroom remain before it.
There is still real headroom — keep going.
2. 压缩指令补规则(默认开启)¶
在压缩摘要调用的最后一条消息(purpose: 'compaction')末尾,插件会追加两条规则。这确保了模型不会将自身关于“上下文快用完了”的陈述写入摘要,从而避免错误判断跨压缩存活。
追加的规则示例:
- Never record the assistant's own statements about its remaining context, token budget, or context-window pressure...
- Never record a plan to stop, defer, or hand off work whose only justification was context pressure.
3. 空闲边界折叠(可选,默认关闭)¶
宿主的自动压缩通常由“跨过阈值”触发,这容易导致模型在临近阈值时回避关键操作,使读数长期停在阈值下,无法完成需要连续迭代的任务。
此能力在模型处于 idle 状态且余量低于窗口的 5% 时触发一次折叠。折叠后余量重置,条件不再满足,从而实现一个周期只折一次,解决任务收敛问题。
安装¶
通过官方 CLI 安装:
dsh plugin --profile web add dsh-context-truth
或直接写入 profile 的 patch 层:
# <DSH home>/profiles/<profile>/cordis.patch.yml
- insert:
- id: context-truth
name: dsh-context-truth
config:
language: zh
宿主要求:
* 需要宿主服务 tokenMeter 与 compaction(标准部署自带)。
* 需要宿主自带 schemastery。
* 需要注入项:inject = ['systemPrompt', 'tokenMeter']。
配置¶
| 键 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
总开关 |
language |
en |
文案语言 (en / zh) |
order |
100 |
在 runtime-context 中的排序 |
quantumPercent |
5 |
显示台阶(窗口百分比) |
paceEstimate |
true |
是否把余量换算成本会话节奏 |
paceSamples |
16 |
节奏取中位数的样本数 |
paceMargin |
0.25 |
向上换档需超出该档的比例 |
thresholdRatio |
0.8 |
自动压缩点阈值 |
tightAdvice |
none |
tight 档收尾句(none / inform / stop) |
foldAtIdle |
false |
是否启用空闲边界折叠 |
foldAtIdleMethod |
auto |
折叠请求通道 (auto / command / service) |
注意事项¶
- 依赖:依赖
@deepseek-ai/schemastery。 - 折叠方法:
foldAtIdleMethod支持auto、service、command三种模式。 - 无需构建:
lib/index.js同时是源码和产物。
总结¶
dsh-context-truth 通过提供准确的宿主实测数据并修正压缩指令,解决了模型在长会话中因误判上下文状态而降低工作积极性或无法收敛的问题。适合需要在长对话中保持稳定工作流的项目。