在2026年,我希望我的AI程式代理能多一條規則:知道何時該停止。
AI代理並非總是因停止而失敗。
有時候它們是因繼續而失敗。
我在為一個實際品牌系統建立自訂西里爾字體擴充時遇到了這個問題。這個任務看起來很具體:讓西里爾字母、拉丁字母、數字和特殊符號感覺像是一個編輯字型家族。
Claude Code 和 Codex 持續運作。他們產生檔案、匯出證明、報告進度,並修復了最後一個可見的投訴.
但同樣的缺陷類型持續出現.
這就是 AI-agent 失敗迴圈的危險版本:工作流程看起來有效率,而實際的品質問題仍然存在.
失敗迴圈是什麼?
失敗迴圈是一種重複的模式,其中代理持續產生新的候選修復方案,而同樣的基本缺陷仍然無法解決.
它通常有五個步驟.
- 使用者再次拒絕同類型的缺陷.
- 代理修補最新的症狀.
- 證明閘門太弱無法捕捉問題.
- 代理要求另一個人工審查。
- 每個人又花了一個循環在相同的问题上.
一個錯誤是正常的.
當代理在驗證系統已經失敗後仍然繼續時,真正的過程錯誤才出現.
為何正常的證明循環會失敗
證明循環是有用的。測試、截圖、構建檢查、linting、差異比較以及生成的報告都重要。
但證明迴圈也可能變成戲劇,如果它們測量的不是正確的東西的話。
在我的字型專案中,代理程式可以證明字型編譯成功,PDF渲染完成,螢幕截圖存在,邊界框變更,以及數字分數提升。
這並沒有證明字母看起來正確。
使用者拒絕的是另一回事:視覺一致性。
有些西里爾文字符看起來太短、太粗、間隔太鬆散,或結構上與拉丁字母不相配。
如果閘門無法看到人類持續看到的缺陷,閘門就不允許宣告任務完成。
我現在使用的規則
當同樣的可見缺陷類型出現兩次後,停止正常執行。
不要再進行另一個猜測性的補丁。
不要放鬆門檻.
不要要求使用者檢查另一個候選文物.
切換到失敗迴圈中斷模式.
失敗迴圈中斷器的作用
失敗迴圈中斷器是AI-agent工作的硬模式開關.
更好的下一步輸出是一個診斷套件,而不是另一個候選修復方案.
它應該包含:
- 重複失敗類別;
- 一組被拒絕的已知錯誤範例;
- 一個紅色優先的閘門,在這些範例上失敗;
- 一個將閘門變為綠色的修復措施;
- 當作者已看到答案時進行盲測或獨立驗證;
- 一個清晰的繼續、停止或人類決策建議。
這不僅僅是一個重試限制。
重試次數限制可阻止成本增長。失敗迴圈斷路器會改變工作本身.
紅色優先門很重要
一個有用的門必須在修復之前失敗,否則就沒有證明它能看見舊的失敗.
如果代理無法讓新的檢查器對先前壞的工件失敗,它就沒有為真問題建立檢查器.
許多代理工作流程跳過了這一部分。
他們增加了一個新的指標,看到新的候選人得分更高,就稱之為進步。這個指標從未被強制要求拒絕舊的失敗。
對於主觀或視覺任務來說,這個問題更加重要,因為被拒絕的語料庫成為了人類品味和確定性驗證之間的橋樑。
當代理被污染時
另一個陷阱是受污染的驗證:同一個代理程式編寫修補程式、知道目標,並評分結果。
這在迭代過程中可能有用,但它不是獨立的驗證。
若代理已見過預期答案,最終檢查需要一個具有隱藏範例的確定性閘、一個盲目的審查者、一個不接收作者推理的獨立模型,或當要求是品味而非計算時的人類決策.
同作者驗證通常是自洽性,而非證明.
我將這些包裝成一個小型公共技能
我把這條規則轉換為一個小型公開倉儲:
https://github.com/g-shevchenko/agent-failure-loop-breaker
它安裝了一個緊湊的技能和倉儲本地的規則,用於Claude Code、Codex、Cursor和Windsurf。
它的安裝規則是故意簡單的:
如果相同的缺陷類別出現兩次,代理必須停止正常打補丁並建立一個被拒絕的語料庫,加上一個紅色優先門檻,然後才能繼續。
這個套件並非為了讓模型變得更聰明.
它讓工作流程更不願將運動與進度混淆.
公司常犯的錯誤
團隊通常會將代理的持續性視為一種資產.
對於範圍明確且測試嚴格的实施任务来说,這是合理的。對於接受標準是視覺、編輯、架構或運營的工作來說,這是有風險的。
如果Claude Code、Codex、Cursor或Windsurf不斷在相同類型的審查中失敗,下一步的投資應該投入到驗證合約中。
即使世界上最好的提示,當閘門獎勵錯誤的工藝時,它仍然會循環。
這裡有幫助
這種模式對UI潤飾迴圈、視覺回退工作、PDF和簡報產生、字體系統、內容QA,以及同一個錯誤重現的智能編碼任務有用。
這就是信號:
如果使用者說「這還是一樣的問題」兩次,過程應該改變。
實用收穫
不要要求 AI 代理「無限重試」.
要求它證明它的檢查器能抓到最後失敗的嘗試.
如果它做不到,下一個任務就不是實現.
在那個時候,下一個任務是建立一個更好的閘.
完整寫入:
https://gregshevchenko.com/notes/ai-agent-failure-loop-breakers/











