前言¶
在 DeepSeek Harness(DSH)中,當智能體的一步動作只輸出了文本而沒有調用工具時,當前的循環邏輯會將這一輪視爲“已完成”。這會導致一個常見問題:模型雖然敘述了下一步動作(例如“現在重新應用更改”),但忘記了實際執行工具調用,導致工作未完成就被過早關閉。
dsh-loop-continue 插件解決了這個問題。它監聽 agent/turn-stopping 事件,在回合結束前介入,通過重放當前回合的會話日誌,並利用一個判斷模型來確認是否還有未完成的工作。如果模型只是敘述了動作而未調用工具,插件會引導模型繼續執行。
本插件由 yunxiyang 維護,採用 MIT 許可證,屬於工作流類插件。
核心功能¶
- 自動檢測中斷:監聽
agent/turn-stopping事件,當回合結束時僅包含文本步驟且此前至少調用過一次工具時觸發。 - 重放與判斷:重放當前回合的會話日誌,並使用一個獨立的“判斷模型”來決定回合是否應繼續。
- 單字決策:判斷模型僅回答
true(繼續)或false(結束),輸出被限制在 64 個 Token 以內。 - 可控限制:提供三個核心配置項來防止無限循環或消耗過多資源:
maxContinuations(每回合最大引導次數,默認 10)、maxSteps(提供給判斷模型查看的最新步驟數,默認 6)、maxTailChars(尾部文本預算,默認 1500)。 - 確定性門控:僅當回合結束在文本步驟且此前有工具調用時纔會啓動判斷邏輯,避免對普通已完成回合產生額外開銷。
安裝與啓用¶
使用 DSH CLI 安裝到指定 Profile:
dsh plugin --profile <profile> add dsh-loop-continue
安裝後,Profile 的 package.json 會增加依賴項,cordis.patch.yml 會自動將攔截器插入層級棧中。注意:對 lib/ 目錄下的源碼修改需要重啓 Profile 才能生效。
典型用法與配置¶
安裝後,插件會根據默認策略工作。你可以通過以下方式調整參數:
- 設置引導上限:在
~/.dsh/settings.yaml中設置maxContinuations(默認 10),限制每回合的最大引導次數。 - 調整判斷上下文:設置
maxSteps(默認 6)和maxTailChars(默認 1500),控制判斷模型看到的最新步驟數量和尾部文本長度。 - 自定義提示詞:
judgePrompt:定義判斷模型如何判定回合未完成。steerText:當插件決定引導時,注入給模型的指令文本。
配置支持以下兩種方式:
* UI 配置:在 Settings > Plugins > plugin config 中找到插件卡片。注意:提示詞內容在失去焦點(Blur)時保存,而不是每輸入一個字符保存一次。
* YAML 文件:在 ~/.dsh/settings.yaml 中添加 loop-continue 命名空間。
示例 YAML 配置:
loop-continue:
maxContinuations: 10
maxSteps: 6
maxTailChars: 1500
judgePrompt: "You inspect one coding-agent turn that just ended. Reply with exactly one word: true if the trailing text promises work that no tool call performed, false otherwise."
steerText: "You described an action but did not call any tool. Emit the tool call now."
適用場景與注意事項¶
- 適用場景:適用於模型經常出現“只描述不執行”的對話場景,特別是代碼生成或複雜工具鏈操作。
- 資源消耗:每次引導都會消耗一次判斷模型的往返調用和一次額外的 Agent 步驟。因此插件內置了
maxContinuations防止在無效引導上浪費預算。 - 調試模式:開啓
debug模式需要重啓 DSH 進程才能生效,該模式會記錄每一次判斷結果。 - 無瀏覽器環境:插件支持無瀏覽器(Headless)運行,配置通過 YAML 文件管理。
總結¶
dsh-loop-continue 插件通過引入一個輕量級的判斷機制,解決了模型在敘述性輸出中遺漏工具調用的常見問題。它通過精簡的上下文摘要和單字決策,在保證判斷準確性的同時控制了 Token 消耗。如果你在使用 DeepSeek Harness 時頻繁遇到模型“只說不做”的情況,這個插件是必要的補充。