前言¶
在開發 DeepSeek Harness (DSH) 智能體時,工具調用失敗後,智能體往往不會自動停止,而是繼續重複相同的調用。現有的 repeat-tool-reminder 插件僅提供提醒,不會強制阻斷。dsh-repeat-stop 旨在解決這一問題,它通過硬停止機制,在連續調用達到閾值後直接拒絕下一次調用。
是什麼¶
dsh-repeat-stop 是一個 DeepSeek Harness 插件,屬於 dsh-wsl-kit 生態系統的一部分。它對“連續相同的工具調用”進行檢測。這裏的“相同”定義爲相同的工具名稱加上相同的參數。當連續調用的次數超過配置閾值時,該插件會阻止下一次調用。
核心功能¶
- 硬停止機制:默認情況下,允許 6 次連續相同的調用,第 7 次調用將被直接拒絕。
- 狀態重置:當參數、工具名稱發生變化,或接收到真實的用戶消息時,計數器會自動重置,避免誤殺正常的輪換調用。
- 白名單/黑名單:支持通過
exclude列表排除特定工具名稱(如job_output),也支持include列表指定僅追蹤特定工具。
安裝與啓用¶
安裝該插件需要使用官方的 DSH 插件管理命令。安裝後必須重啓 dsh web 服務才能生效。
dsh plugin --profile web add github:173787247/dsh-repeat-stop
安裝完成後,在 Web UI 的 Trajectory 中,如果調用被該插件阻止,通常會顯示 dsh-repeat-stop: blocked。
配置說明¶
插件通過 YAML 配置文件進行控制。默認配置如下:
- id: dsh-repeat-stop
name: dsh-repeat-stop
config:
enabled: true
threshold: 6
exclude:
- job_output
- job_list
- job_kill
| 配置項 | 默認值 | 說明 |
|---|---|---|
enabled |
true |
總開關,關閉後將不執行任何攔截 |
threshold |
6 |
允許連續調用的最大次數,整數 ≥ 2 |
exclude |
job_* |
不計入計數的工具名稱列表 |
include |
[] |
如果設置,僅追蹤列表中的工具名稱(支持通配符) |
與 dsh-tool-budget 的區別¶
這兩個插件在功能上互補,但側重點不同:
| 插件名稱 | 阻斷對象 |
|---|---|
dsh-repeat-stop |
連續相同的工具調用(時間窗口短) |
dsh-tool-budget |
整個會話內的工具總調用次數(全侷限制) |
注意事項¶
- 版本要求:該插件需要 DeepSeek Harness 版本 >= 0.1.2。
- 重啓服務:安裝或修改配置後,必須重啓
dsh web進程才能加載新插件。 - 生態定位:該插件與
dsh-tool-budget配合使用效果最佳,前者防止死循環,後者控制總成本。
結語¶
dsh-repeat-stop 通過硬停止機制,有效防止智能體在工具調用失敗時陷入無限循環。結合 dsh-tool-budget,可以構建更穩定的 DSH 智能體工作流。更多詳情及源碼可參考其 GitHub 倉庫。