himi-li/dsh-reasoning-loop-guard ↗★ 0
dsh-reasoning-loop-guard
Detect and abort repeating reasoning (thinking-loop stalls) in DSH, plus a fire journal and maintenance tool. 适合在使用推理模型时,需要防止模型陷入死循环、节省Token的用户。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:himi-li/dsh-reasoning-loop-guard配置
所有字段都可以在 profile 的 cordis.patch.yml 里覆盖:
- insert:
- id: reasoning-loop-guard
name: dsh-reasoning-loop-guard
config:
enabled: true
minUnits: 4 # periodic-run:连续重复单元数
kgramThreshold: 12 # kgram-repeat:尾部 k-gram 的出现次数
minChars: 1500 # 低于这么多字符不做判定
every: 200 # 每 N 个字符评估一次
failureCode: REASONING_LOOP
# 触发日志(见下)
journal: true
journalPath: "" # 默认:$DSH_HOME/dsh-reasoning-loop-guard/fires.jsonl
journalMaxBytes: 524288
journalPreviewChars: 120
logTool: true # 注册 reasoning_loop_log 工具
| 字段 | 默认值 | 含义 |
|---|---|---|
enabled | true | 总开关。为 false 时插件完全不注册任何流钩子。 |
minChars | 1500 | 短于此长度的推理永不判定。 |
every | 200 | 判定节奏,单位为字符。 |
window | 4096 | k-gram 判据使用的滚动窗口。 |
kgram | 64 | k-gram 判据跟踪的尾部片段长度。 |
kgramThreshold | 12 | 在 window 内出现多少次才触发。 |
periodTail | 1200 | 周期判据使用的滚动窗口。 |
minPeriod / maxPeriod | 8 / 400 | 周期判据搜索的周期范围。 |
minUnits | 4 | 触发所需的连续相同单元数。 |
failureCode | REASONING_LOOP | 终止块携带的失败码。 |
journal | true | 把每次触发记录进 JSONL 日志。 |
journalPath | "" | 日志位置;留空表示 $DSH_HOME 下的默认路径。 |
journalMaxBytes | 524288 | 日志超过该字节数后轮转为 ` |
| .1`。 | ||
journalPreviewChars | 120 | 每条记录保存的「肇事尾巴」字符数。 |
logTool | true | 注册 reasoning_loop_log 工具。 |
validateConfig() 会拒绝那些会静默失效的配置——kgram > window、minPeriod >= maxPeriod、periodTail < 2 * maxPeriod、failureCode 为空、every 非正数等等——并在报错信息里点名字段。