JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

出錯的時候:反思、復原,與迴圈裡的人類

真實的代理時時刻刻在失敗。你能信任的那些,會察覺自己的錯誤、從錯誤中復原,並知道何時該停下來問人。

為何代理比聊天模型更常失敗

聊天回覆是一次性的——稍微歪了,你重讀一遍就過了。代理串起數十個步驟,而錯誤會複利累積:第 2 步一個錯的工具參數會毒害其後的每一步,到了第 20 步,代理正自信地在瓦礫上蓋房子。更糟的是,會 幻覺 (hallucination) 的模型可能憑空捏造一個工具結果,或說服自己一個失敗的行動成功了。因此長程的 自主任務執行 (autonomous task execution) 需要一套機制來捕捉並修正自己的錯誤——穩健性不是可有可無的潤飾,它是 demo 與產品之間的分野。

P_{\text{fail}} = 1 - p^{\,n}

为什么智能体比聊天模型更容易出错:若每一步正确的概率为 p,那么 n 步中至少有一步出错的概率为 1 减去 p 的 n 次方——并随着链条变长趋近于必然。

自我反思:代理為自己的成果打分

自我反思 (self-reflection) 加入一個批判步驟:行動之後,代理停下來、在繼續之前評估自己的輸出。「那次搜尋真的回答了問題嗎?這段程式碼通過我預期的測試了嗎?這份草稿有沒有漏掉使用者要的東西?」反思把盲目向前的行軍,變成「先檢查再前進」的節奏,而它的判決會直接餵回 回饋迴圈 (feedback loop),成為下一個決策的輸入。

當反思錨定在某個客觀的東西上、而非模型自己的意見時,它最有力。執行程式碼並讀測試結果;重新查詢工具並比對;拿草稿對照一份明確的檢查清單。錨定在真實訊號上的反思能抓到真正的錯誤;只是問模型「你確定嗎?」的反思,常換來一個毫無意義、自信滿滿的「確定」。

錯誤復原:向前失敗

工具會失敗:API 逾時、頁面載不出來、程式碼拋出例外、參數格式錯了。代理錯誤復原 (agent error recovery) 是一種紀律:把每個失敗都當成另一個「可供推理的觀察」,而不是死路。模型讀取錯誤、診斷它、然後調整——用修正過的參數重試、退回去用另一個 工具 (tool),或徹底換個做法。這正是為何「從你的工具回傳清楚的錯誤訊息」(第 2 篇)會有回報:一條好的錯誤訊息,是代理能據以行動的提示。

  1. 捕捉失敗,把錯誤當成一個觀察餵回模型,而不是讓程式崩潰。
  2. 對暫時性問題(逾時、速率限制)採用退避 (backoff) 重試——但設上限。
  3. 如果重試一直失敗,就換策略或換工具,別死命捶打同一條壞掉的路。
  4. 追蹤一份失敗預算——在同一個子目標上撞了 N 次死路後,就停下並升級處理,而不是永遠迴圈。
t_n = \min\!\left(t_{\max},\; t_0 \cdot 2^{\,n}\right)

指数退避重试:每次重试的等待时间翻倍,并设有上限,让智能体向前失败而不是反复敲打失效的工具。

迴圈裡的人類:知道何時該問

全自主並不總是目標。人類介入 (human-in-the-loop) 的代理會在選定的時刻刻意停下,在繼續之前取得人的確認、修正或選擇。藝術在於挑對那些時刻:為有重大後果且不可逆的行動設關卡——花錢、刪資料、送出對外訊息,任何難以撤銷的事——同時讓便宜、可逆的步驟自由跑。接著把人的決定寫進 記憶 (memory),這樣同一個問題就不會被問第二次。