dsh-loop-breaker: DSH 流式復讀熔斷器

DSH(DeepSeek Harness)是一個插件化平臺。在實際開發中,模型有時會出現 “退化復讀” 的現象:思考鏈或正文反覆輸出同一小段內容(如 “好的”、”好的,執行”、”好”),且長時間不產出有效結果,導致 token 白白燒掉。

現有的社區方案(如 dsh-thinking-loop-guard)通常掛在 agent/turn-stopping 上,只在回合邊界檢測完整輸出。這存在一個明顯缺陷:回合邊界 = 這一輪的 token 已經燒完了。它能阻止循環蔓延到下一輪,卻救不回正在燒的那一輪。

dsh-loop-breaker 掛載在 DSH 的 llm/stream 瀑布事件上。通過逐塊統計 reasoning 和 text,它能在流式輸出過程中實時檢測復讀形態,命中後當場取消底層 HTTP 請求(停止計費),並注入補救提示讓模型重新作答,同時通過 L0 消毒機制防止復讀原文污染會話歷史。

核心功能

  • 流式攔截:掛載在 llm/stream 事件,在流式輸出層進行檢測。
  • 多形態檢測:支持檢測碎片週期循環(如 “做。→執行。→好。”)、字符塌縮、句子回收、16-gram 回收及短句冗餘。
  • 熔斷計費:命中規則後,適配器生成器執行 consumer.abort(),底層 HTTP 請求立即取消,停止 token 計費。
  • 補救機制:注入補救提示引導模型重新作答。
  • L0 消毒:寫回會話歷史時,保留開頭部分,其餘替換爲佔位符,防止復讀原文污染後續生成。
  • 工具塊推遲:檢測到非 text/reasoning 的工具調用塊未關閉時,推遲熔斷,避免誤殺。

安裝

在終端中執行以下命令:

git clone https://github.com/CHIP-PHILO-GH/dsh-loop-breaker
cd dsh-loop-breaker
pwsh -File install.ps1

install.ps1 是冪等的,可重複執行。默認安裝路徑爲 $env:DSH_HOME\profiles\node_modules\dsh-loop-breaker。改動配置後需重啓 dsh web 生效。

注意:使用 Windows PowerShell 5.1 跑 install.ps1 可能因中文編碼報錯,建議使用 PowerShell 7 (pwsh)。

配置

在 DSH 的配置文件中添加以下片段(示例):

- id: loop-breaker
  name: 'dsh-loop-breaker'
  config:
    enabled: true                # 總開關
    recover: true                # 命中後是否注入補救提示
    maxRecoveriesPerTurn: 2      # 同一輪最多補救次數
    nudge: ''                    # 補救提示文本,留空使用內置文案

    # --- L0 消毒 ---
    sanitize: true               # 是否改寫正文
    sanitizeHeadChars: 240       # 保留原文開頭的字數(0=全丟)
    degradePlaceholder: ''       # 替換復讀原文的佔位符

    # --- 檢測閾值 ---
    windowChars: 1600            # 滾動統計窗口
    periodMax: 48                # 短週期檢測最大週期
    periodMatch: 0.92            # 短週期自吻合率閾值
    periodMaxPieces: 6           # 窗口內片段種類上限
    collapseUniqueRatio: 0.10    # 去重字符佔比閾值
    sentRecycle: 0.80            # 句子回收率閾值
    gramRecycle16: 0.80          # 16-gram 回收率閾值
    tightRedundancy: 0.90        # 窗口字面冗餘度閾值
    maxChars: 200000             # 單次輸出硬上限
    maxReasoningChars: 120000    # 單次思考鏈硬上限

測試

插件提供了迴歸測試和集成測試腳本。

  • 迴歸測試:驗證核心檢測邏輯。
    node test.mjs
  • 集成測試:在裝了 DSH 的環境裏運行,驗證流協議合法性、熔斷和消毒邏輯。
    node tests/guard.test.mjs

適用場景與注意事項

  • 主要針對:緊鄰的短週期復讀(如 “做。→執行。→好。”)。此類復讀通常由少量短碎片連續拼裝而成。
  • 已知邊界:長間隔重複、較短英文週期、或長度不足的樣本可能漏檢;正常的長技術報告、含大量近似函數的代碼等正常長輸出可能因結構性重複而誤殺。
  • 環境依賴:
    • 需要 Node.js >= 18。
    • 需要宿主環境提供 @deepseek-ai/dsh-llm 和 @deepseek-ai/schemastery。
    • 使用前請檢查源碼與許可證(MIT)。

插件通過在流式傳輸中即時切斷無效生成,避免了類似 Ollama 報告中失控跑 31M token 的情況,確保每一輪交互都在可控範圍內。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜