dsh-loop-breaker:硬止損插件

前言

DeepSeek Harness (DSH) 的智能體循環執行中,有時會出現單輪步數過高或陷入重複調用的問題。根據 2026-09-13 的實測日誌,單次 turn 最多可能跑出 337 步,同一條命令被重複調用 120 次甚至 85 次。

DSH 自帶的 repeat-tool-reminder 插件僅做提醒,不進行中斷;而 dsh-agent-loop 目前只暴露 maxParallelToolCalls 參數,缺乏對步數上限的控制。這導致用戶往往需要等待數小時,或在最後時刻手動輸入 /stop。

dsh-loop-breaker 插件就是爲了解決這一缺口而設計,通過硬止損機制,在檢測到重複調用時直接中斷本輪。

定位

這是一款硬止損插件,用於在 DSH 環境中,當同一工具配合同一參數被反覆調用時,強制中斷當前執行輪次。

  • 維護者: ikta2010
  • 許可證: MIT
  • 核心作用: 防止 Agent 陷入死循環或無效重複

核心功能

插件通過兩個上游擴展點實現邏輯:

  1. tools/post-execute (waterfall): 計數,當達到閾值時返回 {kind:'block', feedback, additionalContexts},否決當前結果並展示說明。
  2. agent/pre-step (waterfall): 返回 {kind:'reject'},阻止下一步進入,從而結束本輪。

判定鍵爲「工具名 + 參數規範化後的 JSON」。這意味着正常的差異化命令調用不會觸發誤傷。

配置項支持以下功能:
* consecutiveLimit: 控制連續重複多少次觸發硬止損。
* totalLimit: 控制單輪內累計重複多少次觸發硬止損。
* include / exclude: 過濾需要統計的工具列表。
* argumentsPreviewChars: 控制參數預覽的字符數。

安裝與啓用

安裝腳本位於指定路徑,執行即可:

bash /nas/dsh/工具/dsh-loop-breaker/install.sh

安裝完成後,必須重啓一次 dsh web 纔會加載該插件。重啓期間網頁會短暫斷開,但會話數據不會丟失:

dsh-restart

典型用法

在 DSH 的配置文件中添加以下 YAML 配置:

- id: loop-breaker
  name: 'dsh-loop-breaker'
  config:
    consecutiveLimit: 4      # 連續重複多少次硬止損
    totalLimit: 12           # 單輪內累計多少次硬止損
    include: []              # 只統計這些工具(空=全部)
    exclude: []              # 排除這些工具
    argumentsPreviewChars: 400

適用場景與注意

本插件以當前 DSH 進程的權限運行。安裝前,建議檢查源碼與許可證。

  • 加載機制: 插件安裝後需重啓 Web 服務才能生效。
  • 判定邏輯: 依賴工具名和規範化後的 JSON 作爲判定鍵,能夠有效區分不同命令,避免誤殺正常業務邏輯。
  • 生態背景: DSH 的核心理念是「一切皆插件」。社區目錄(如 SkillHub)提供插件索引,獨立於 DeepSeek 或幻方,供開發者查閱。

結語

dsh-loop-breaker 補齊了 repeat-tool-reminder 只提醒不中斷的短板,爲 DSH 智能體循環提供了必要的硬性約束。通過合理的 consecutiveLimit 和 totalLimit 設置,可以有效避免長時間無意義的重複執行。

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

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

小夜