前言¶
DeepSeek Harness(DSH)的插件生态里,长任务往往会出现「步数膨胀」:模型在十几步内反复重推同一结论,或者对同一目标反复换路径尝试。这类空转会消耗大量 token,且模型往往「知道自己在空转却停不下来」。
插件 dsh-step-governor 在步骤层面提供硬熔断能力:不依赖提示词劝导,而是通过机械计算判据剥夺继续空转的执行权。
插件定位¶
- 类型:DSH 插件(admin-security 分类)
- 维护者:JiewiW
- 版本:0.1.4
- 许可证:MIT
它是对 dsh-cot-anchor 的姊妹插件:cot-anchor 在单次生成内做软切,step-governor 在跨步骤做硬熔断。长任务账单的大头是「步数 × 每步膨胀的上下文重读」,步数治理正是针对这个杠杆。
两个熔断点¶
| 熔断 | 宿主钩子 | 动作 |
|---|---|---|
| G1 步级 | agent/pre-step |
{kind:"reject"},终止当前回合 |
| G2 支线 | tools/pre-execute |
{kind:"deny"},跳过工具调用并回填错误文本 |
G1-A 滑窗失速¶
近 8 步滑窗内出现连续 4 步无文本交付、无文件变更,且窗内成功工具占比 ≤ 0.25、reasoning 总量 < 160 字。后两个条件用来排除「安静干活」的正常步骤。
G1-B 指纹重现¶
同一段推理结论的指纹跨 6 步重现且其间无文件变更。专抓「每步都读到新东西、却在重推同一结论」。
G1-C 硬顶¶
单回合 60 步安全网。
G2-A 同一目标调用过载¶
同一调用目标(归一化后的文件 / URL / 命令 / 参数)尝试超过 3 次。
G2-B 连续失败¶
同一目标连续失败 2 次,与「同命令失败最多重试 2 次」纪律对齐。
目标键归一化(G2 用)¶
不同工具的键体组成如下:
read:文件路径 +offset/limitgrep:pattern + pathedit/write:文件路径 + 变更语料哈希pwsh/bash/sh:管道首段全部参数 + 后续段哈希- 其他工具:依次取
file_path/path/url/command/pattern/script/query/name - 兜底:上述字段均取不到时,回退到全参数规范化 JSON 的哈希
工作模式¶
五档,灰度顺序 shadow → g2b → g2 → g1g2:
| 模式 | 行为 |
|---|---|
off |
完全透传,不观测 |
shadow |
观测并写结构化日志,永不拦截(默认) |
g2b |
仅 G2-B(连续失败)强制拦截 |
g2 |
G2-A + G2-B 拦截,G1 仍只观测 |
g1g2 |
G1 + G2 全部拦截(实验档,标记为 experimental) |
安装与配置¶
安装命令:
dsh plugin --profile <你的profile> add github:JiewiW/dsh-step-governor#v0.1.3
加载成功时 stderr 会打印一行:
[dsh-step-governor] {"mode":"shadow","at":"loaded","thresholds":{...}}
配置项¶
插件加载后在 DSH 设置页出现「步数治理」卡片,14 项配置可直接改并持久化。也可用 GET/POST /plugins/step-governor/settings 读写(GET 返回完整 schema)。
环境变量¶
环境变量作为启动初始值,优先级最高(显式设置的键,设置页保存不会覆盖):
| 环境变量 | 对应配置 | 默认 |
|---|---|---|
DSH_GOVERNOR_MODE |
mode |
shadow |
DSH_GOVERNOR_G1A_N |
g1aZeroSteps |
4 |
DSH_GOVERNOR_G1B_K |
g1bFingerprintSteps |
6 |
DSH_GOVERNOR_G1C_MAX |
g1cMaxStepsPerTurn |
60 |
DSH_GOVERNOR_G2A_M |
g2aSameTargetCalls |
3 |
DSH_GOVERNOR_G2B_F |
g2bConsecutiveFailures |
2 |
能力边界¶
- G2 的目标键归一化识别不了「换一种方法追同一个目的」(直连 → token → cookie → 本地缓存),那需要理解每步意图。
- 「每步都成功、内容不重复、但整体在偏离任务」属于语义级空转,本插件不覆盖。
- 熔断只让模型更早带着已有证据停手,不保证已交付内容正确。
- 与 goal 自动续跑驱动并存时,pre-step 钩子的注册顺序仍属待核实项。
测试¶
项目提供纯逻辑断言 + 伪内核钩子集成断言,共 21+ 用例。shadow / g2b / g1g2 三档真实启动冒烟结果见 SMOKE-REPORT.md。
适用场景与注意¶
适合需要在长任务中控制步数膨胀、减少无效重算的场景。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(MIT)。
实验期间建议用独立 profile + 独立端口运行,不要直接在日常 profile 开启强制档。
结语¶
dsh-step-governor 提供了步骤层面的硬熔断能力,通过滑窗、指纹、调用计数等机械判据,在长任务中拦截空转步数。其默认 shadow 模式保证零误杀,通过环境变量或设置页可逐步灰度到拦截档位。
- 目录页:https://www.skillhub.cn/plugins/JiewiW/dsh-step-governor
- GitHub:https://github.com/JiewiW/dsh-step-governor