跳到主要內容
黯羽輕揚每天積累一點點

Agent Workflow Retry Policy Setup:核心機制、邊界與代價

免費2026-07-13#AI#AI

設定 Agent workflow retry policy 不只是設個重試次數,更要在冪等性、退避策略和錯誤邊界之間做取捨。本文從工程視角拆解重試機制、適用邊界、常見迷思和失敗時的備用方案,幫你設計更穩健的 Agent 工作流程。

Agent Engineering 承接
搜尋流量真正值錢的地方,是把想了解的人帶到能動手的下一步。

如果你已經在看 Agent Engineering、MCP、Responses API 或工具鏈設計,下一步應該進入可執行案例、清單與系統化內容。

Agent Workflow Retry Policy 是什麼?為什麼需要它?

Agent workflow 由多個步驟組成:呼叫 LLM、執行工具、讀寫記憶體、與外部 API 互動。每一步都可能因為網路抖動、API 限流、逾時或中間狀態不一致而失敗。 Retry policy 決定了當某一步失敗時,系統應該如何重新嘗試——重試多少次、間隔多久、哪些錯誤值得重試、重試時的冪等性怎麼保證。

沒有重試策略,一次瞬態故障就會導致整個 workflow 徹底失敗;而重試策略設定不當,又可能浪費算力、放大系統負載,甚至掩蓋真正的 bug。

核心機制:重試條件、退避策略與逾時

1. 哪些錯誤值得重試?

不是所有錯誤都該重試。區分兩類錯誤:

  • 可重試 (retriable):網路逾時、HTTP 503、API 限流 (429)、臨時性服務無法使用。這些錯誤有較高機率在重試後恢復。
  • 不可重試 (non-retriable):HTTP 400 參數錯誤、401 認證失敗、403 權限不足、404 資源不存在。重試這些錯誤只會白費流量,應該直接失敗並觸發警報。

桌上擺放著 retry policy 對比筆記和退避策略計算草稿,旁邊是筆記型電腦

// 伪代码示例
if (error.IsRetriable()) {
    executeWithRetry(step, retryPolicy);
} else {
    failImmediately(step, error);
}

2. 退避策略:指數退避 + 抖動

連續重試只會加重系統擁塞。標準做法是指數退避 (Exponential Backoff):每次重試間隔翻倍,並加入隨機抖動 (jitter) 避免所有客戶端同時重試。

重試次數基礎間隔(固定)指數退避(2^n)指數退避+抖動
11s1s0.5-1.5s
21s2s1.0-3.0s
31s4s2.0-6.0s
41s8s4.0-12.0s

建議配置:初始間隔 1s,最大間隔 30s,總超時上限 60s,重試次數 3-5 次。

3. 超時與熔斷

不能無限等待。每步驟應設獨立逾時 (timeout),整個 workflow 設全域逾時。當某步驟連續失敗達到閾值(例如 3 次內失敗率 > 50%),應觸發熔斷 (circuit breaker),暫停對該服務或步驟的重試一段時間,避免資源耗盡。

真實場景:呼叫外部天氣 API 時重試失敗

假設 agent 工作流程中有一個步驟透過外部 API 取得天氣資料。某次請求遇到 DNS 解析逾時,觸發重試。重試策略設為固定間隔 2s、最多 3 次。結果:接下來 2 次重試全部超時,第三次回傳 500。最終 workflow 報錯失敗。

問題分析:

  • 錯誤類型判斷正確:網路逾時屬於可重試。
  • 退避策略不合理:固定間隔 2s 太快,DNS 問題通常需要 10s 以上恢復。採用指數退避後,第一次 2s,第二次 4s,第三次 8s,可能第三次就成功了。
  • 缺少熔斷:連續 3 次失敗後沒有暫停,後續再觸發該 agent 的請求會繼續重試,造成資源浪費。

改進後:指數退避 + 熔斷開關,當 1 分鐘內失敗率 > 30% 時,熔斷器開啟 30s,期間直接失敗並降級返回快取資料。

筆記型電腦螢幕上顯示 agent workflow retry policy checklist,開發者正在逐項核對

容易踩踏的坑:冪等性缺失與狀態殘留

重試最隱蔽的風險是非冪等操作被多次執行。例如 agent 呼叫付款介面、傳送通知、寫入資料庫-這些操作如果重試時不保證冪等,就會產生重複扣款、重複通知、資料髒寫。

解決方法

  • 每個請求附加唯一請求 ID (idempotency key),服務端會依照 key 去重。
  • 或設計操作本身為冪等:例如"把庫存設為 100"是冪等的,"庫存減 1"不是。

另一個常見坑是狀態殘留:重試前某個中間狀態已經寫入資料庫 (如"處理中"),重試時沒有清理或跳過,導致邏輯重複花費或鎖定超時。最佳實踐是在重試步驟內保持事務性,失敗回滾或標記為可容忍重複。

失敗時的備用方案

即使設定了重試,仍有機率失敗。必須準備備選路徑:

  1. 降級 (Degradation):跳過失敗步驟,使用預設值或快取資料繼續 workflow。例如天氣 API 失敗,使用前一天預報資料。
  2. 人工介入:將失敗訊息寫入死信佇列或警告頻道,人工排查後重新執行。
  3. 補償交易 (Saga):對於跨步驟的工作流程,如果某步驟重試後仍失敗,觸發補償操作回退之前已成功的步驟。例如先建立訂單,後扣款;扣款失敗則補償關閉訂單。
  4. 重試佇列:將失敗步驟非同步推入重試佇列,延遲再試,不阻塞主流程。

總結:一份可操作的 checklist

配置 Agent workflow retry policy 時,請對照以下檢查點:

  • 區分可重試與不可重試錯誤,為不可重試錯誤直接失敗。
  • 採用指數退避策略,初始間隔 1s,最大 30s,加入 25% 隨機抖動。
  • 設定總超時上限(如 60s)和每步逾時(如 10s)。
  • 實現熔斷器,連續失敗率達到閾值時暫停重試。
  • 檢查每一步是否為冪等運算;若非冪等,請用 idempotency key。
  • 失敗時提供降級或補償方案,避免 workflow 完全崩潰。
  • 記錄重試次數、間隔和最終結果到日誌,以便事後分析。

下一步:成為真正的 Agent 工程師

重試策略只是 Agent workflow 設計中的一環。如果你想從一般開發者轉型為 Agent 工程師,系統掌握 context 管理、workflow 編排、權限控制、記憶體機制等內容,我們的高品質原創付費文章和 AI 程式設計進階課程能幫你建立完整知識體系。

評論

暫無評論,快來發表你的看法吧

提交評論