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的用户。

패키지
dsh-reasoning-loop-guard
호환성
미검증
Cordis peer 범위
^4.0.2
버전
0.1.0
라이선스
MIT
최근 업데이트
2026. 10. 6.

설치

$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 工具
字段默认值含义
enabledtrue总开关。为 false 时插件完全不注册任何流钩子。
minChars1500短于此长度的推理永不判定。
every200判定节奏,单位为字符。
window4096k-gram 判据使用的滚动窗口。
kgram64k-gram 判据跟踪的尾部片段长度。
kgramThreshold12在 window 内出现多少次才触发。
periodTail1200周期判据使用的滚动窗口。
minPeriod / maxPeriod8 / 400周期判据搜索的周期范围。
minUnits4触发所需的连续相同单元数。
failureCodeREASONING_LOOP终止块携带的失败码。
journaltrue把每次触发记录进 JSONL 日志。
journalPath""日志位置;留空表示 $DSH_HOME 下的默认路径。
journalMaxBytes524288日志超过该字节数后轮转为 `
.1`。
journalPreviewChars120每条记录保存的「肇事尾巴」字符数。
logTooltrue注册 reasoning_loop_log 工具。

validateConfig() 会拒绝那些会静默失效的配置——kgram > window、minPeriod >= maxPeriod、periodTail < 2 * maxPeriod、failureCode 为空、every 非正数等等——并在报错信息里点名字段。