嗨,我使用了 AI Agent 節點,遇到一個問題。當某個工具沒有傳回任何結果時,整個代理就會停止執行。有沒有辦法讓它繼續執行或跳過該工具,而不是停止整個工作流程?
@Asha_Naon 打開失敗的工具節點 → 設定分頁(工具設定面板右上角)→ 將 On Error 設定為「Continue (Using Error Output)」。這樣當該工具拋出錯誤時,Agent 會收到錯誤作為工具回應,而不是整個工作流程掛掉。
在節點 JSON 中看起來像這樣:
{
"parameters": { },
"type": "n8n-nodes-base.yourToolNode",
"typeVersion": 1,
"position": [600, 300],
"onError": "continueErrorOutput",
"name": "Your Tool"
}
之後 Agent 會看到類似「tool returned error: …」的訊息,並可以繞過它(向使用者道歉、嘗試不同的工具等)。是哪個工具出問題了?調整它的輸入可能很值得,這樣就不會在一開始就失敗了
問題在於 n8n AI Agent 目前將任何工具故障或空結果視為「致命崩潰」。AI 沒有說出「我找不到任何東西」,而是整個工作流程就停止運行了。遺憾的是,標準的「出現錯誤時繼續」設定在這裡不起作用,因為崩潰發生在工具內部,而不是 Agent 本身。
最可靠的解決方案是停止使用直接工具節點,改用「呼叫 n8n 工作流程」工具。透過將工具邏輯放入單獨的子工作流程中,你可以為那些有問題的特定節點啟用「失敗時繼續」。這樣可以確保子工作流程始終完成並將某種回應傳送回 Agent,防止主工作流程當機。
另一個關鍵技巧是停止讓工具在技術上「失敗」。與其讓節點變紅並拋出錯誤,不如將其設定為傳回成功訊息,其中包含「軟錯誤」,例如 JSON 物件 {"success": false, "error": "No data found"}。這樣可以騙過 n8n 認為工具運作完美,同時給予 AI 它需要知道搜尋失敗的實際資訊。
最後,你需要在系統提示中告訴 AI 如何處理這些「軟錯誤」。明確指示 Agent,如果它看到「success: false」訊息或空結果,就不應該放棄。告訴它要麼嘗試不同的搜尋詞,嘗試修復輸入,或者直接用純英文向使用者說明情況。
你使用的是哪個 AI 模型?有時候,AI 模型也會扮演很重要的角色
嗨 @Asha_Naon,歡迎加入我們的社群!我是 Jay,是越南驗證的 n8n 創作者。
我之前遇過非常類似的問題,在我的情況下,問題原來是 AI Agent 節點 v3.1 中的一個 bug。每當其中一個工具失敗或沒有回傳任何內容時,整個 agent 就會停止,而不是繼續執行。
我能夠透過將 AI Agent 節點降級回版本 2.2 來解決這個問題。使用 v2.2,即使某些工具呼叫失敗或沒有產生任何輸出,agent 仍會繼續執行。
以下是我降級節點版本的方法:
-
開啟您的工作流程並複製 AI Agent 節點。
-
將其貼到文字編輯器(VS Code、記事本等)中,這樣您就可以看到 JSON。
-
找到該節點的
"typeVersion"欄位,並將其從3.1變更為2.2。 -
複製編輯後的 JSON 並將其貼回 n8n 中以取代舊節點。
之後,工作流程將再次使用 AI Agent v2.2,工具失敗應該不會再完全停止 agent。
如果您想要,我也可以分享一個最小範例工作流程,展示 3.1 中的行為,以及在 2.2 上再次正常運作的情況。
或者您可以複製這裡。
非常感謝你,它終於可以運作了
將工具節點的「發生錯誤時」設定為「繼續(使用錯誤輸出)」是防止整個代理程式故障的正確修復方式。不過,有一點需要注意,因為這樣做會製造新的陷阱。
工具在發生錯誤時繼續執行後,故障就會變成看不見。代理程式會繞過它,執行以綠色完成,而你永遠不會知道該工具一直在失敗。所以要將錯誤輸出連接到會記錄它的東西:使用「設定」節點將工具名稱和錯誤記錄到工作表,或在重複失敗時進行快速通知。這樣「繼續」才不會變成「兩週來無聲地損壞」。
也值得修復工具一開始為什麼不返回任何內容,因為每次執行都失敗的工具通常是輸入或驗證問題,而不是什麼可以直接跳過的東西。