AI 代理程式編排最佳實踐:處理故障、批核與重試
本指南解釋 AI 代理程式編排的運作方式,比較集中式、去中心化及分層式架構,並介紹在生產環境中處理故障、批核和重試的七項最佳實踐。

讓多個 AI 代理程式處理同一個專案,聽起來極有效率。一個負責規劃工作,另一個負責設計,第三個負責編寫程式碼。這種模式一直行之有效,直至出錯為止。而失敗發生的次數往往比你預期的更多。
要防止這些失敗,就需要仔細的工作流程工程。因此,讓我們拆解令編排式工作流程不可靠的原因,並探討確保生產環境可靠性的編排最佳實踐。
甚麼是 AI 代理程式編排?
AI 代理程式編排會協調多個 AI 代理程式、模型和工具,以完成多步驟任務。但仍需要某人(或某種機制)決定哪個代理程式先執行、它接收甚麼資訊,以及它完成後會發生甚麼。這就是編排器的角色——一個擔任管理者的 AI 代理程式,或一個由軟件控制的執行層。
簡單來說,編排層會將目標拆分為較小的任務、追蹤依賴關係、將執行工作委派給合適的 AI 代理程式、管理共享上下文,並整合各項輸出。
AI 代理程式編排如何運作:深入了解執行引擎
讓我們看看將任務交給編排器後會發生甚麼。
參考 Perplexity 的 Computer 工作坊中的一個例子:使用來自 Salesforce、Snowflake、電郵、日曆和最新新聞的資訊,建立客戶情報儀表板。
- 理解目標並規劃工作。編排器從所要求的成果出發,將其拆解為具有明確依賴關係的任務。在我們的儀表板例子中,這包括從不同來源收集資訊,並將其轉化為完成的交付成果。規劃器會確定哪些步驟依賴其他步驟,以及哪些步驟可以獨立執行。
- 將任務分派給合適的 AI 代理程式。編排器會找出依賴條件已滿足的任務,並將工作委派給專門的代理程式或模型。依賴其他任務的任務則會等待其前置任務完成。Perplexity Computer 使用多個前沿模型,將工作流程的不同部分分派給適合處理這些任務的系統。這亦讓獨立工作可以並行執行。
- 在受控環境中執行工具調用。AI 代理程式透過工具與其環境互動,例如網絡搜尋、API、已連接的應用程式、檔案操作或程式碼執行。執行層會執行這些操作,並將結果傳回給代理程式。
- 在 AI 代理程式之間傳遞結果和上下文。當某個代理程式完成任務後,下一個下游代理程式需要相關輸出才能繼續。交接記錄可包含任務 ID、輸出參照、結構描述版本和來源元數據。編排器會協調這些交接,同時保留後續步驟所需的上下文。重要的是,代理程式無需在自己的上下文視窗中承載所有其他代理程式的完整工作記錄。
- 將執行狀態與 AI 代理程式上下文分開記錄。當代理程式開始、完成任務或任務失敗時,執行引擎會更新持久的工作流程記錄,包括任務狀態、執行嘗試、輸出參照和剩餘工作。這份記錄讓編排器能夠追蹤進度,並在中斷後恢復執行,而無需依賴 LLM 從對話記錄重建工作流程。
- 驗證結果並決定下一步。當任務返回結果時,編排層會檢查其輸出是否符合預期的契約,以及下一項任務的依賴條件是否已滿足。如發現問題,工作流程可以返回較早的步驟進行修正,或暫停執行。否則,工作流程便會繼續推進直至完成。
看似簡單的 AI 代理程式編排背後,其實涉及大量運作環節。你如何組織代理程式之間的協調,決定了你對執行過程有多大的控制權。當然,所有這些協調都會增加額外開銷,所以並非總是值得。
何時應使用 AI 代理程式編排?
當任務的不同部分需要不同的專業知識、獨立工作可以並行執行,或你無法預先確定下一步時,便可考慮多 AI 代理程式編排。
因此,編排在以下三種情況下很有幫助:
- 任務需要不同的專長。例如,一個編程專案可能會受惠於分別負責規劃、設計、開發和審查的 AI 代理程式。
- 獨立任務可以並行執行。與其讓一個 AI 代理程式按順序完成所有工作,不如讓多個代理程式同時工作,並將結果傳回給編排器。
- 問題屬開放式。AI 代理程式可能需要探索不同的方法、作出決定並互相協作,而非按照預先定義的順序執行。
除此之外,編排只是一種代價高昂的潮流。更多 AI 代理程式亦意味着更多協調工作,以及可能更高的 token 成本。
「我通常會從最簡單的方案開始,然後逐步擴展。如果我們知道步驟,而且這些步驟可以重複,那大概就是一個工作流程。只有當 AI 代理程式各自有不同的職責、權限或用戶時,我才認為有理由引入多個代理程式。」Josh Spilker(AirOps 搜尋市場推廣主管)表示。
即使如此,亦應權衡其效益與額外的模型調用、交接、延遲和故障點。
AI 代理程式編排架構及其取捨
構建 AI 代理程式協調的三種常見方式:集中式、去中心化和分層式編排。選擇合適的架構歸根究柢取決於一個問題:由誰控制工作,以及代理程式之間如何互相協調?
集中式編排
在集中式編排中,由一個編排器管理整個流程。它會拆分任務、將工作委派給專門的 AI 代理程式、追蹤其進度,並整合其結果。
取捨:集中式協調讓追蹤執行過程和在單一控制點套用共同規則變得更容易。然而,編排器可能成為瓶頸;除非系統支援恢復機制,否則其故障可能會中斷整個工作流程。
去中心化編排
在去中心化編排中,AI 代理程式會更直接地互相協調,而非依賴單一管理者作出每項決定。它們可以交換訊息、讀取共享狀態,並自行決定下一步。
取捨:AI 代理程式無需等待中央規劃器即可運作,因此這種方法適用於探索性工作和獨立貢獻。但當代理程式意見分歧、更新共享資訊或需要達成一致結果時,協調便會變得更困難。
分層式編排
分層式編排將管理者模式擴展至多個層級。頂層編排器會將職責委派給下級編排器,再由它們協調各自的專門 AI 代理程式群組。
試想一個涉及銷售、財務和法律團隊的企業工作流程。頂層編排器可以將每個工作項目流委派給特定領域的協調器。這些協調器隨後會管理各自的專門 AI 代理程式,並匯報整合後的結果。
當工作流程範圍太廣,單一編排器難以有效管理時,這種架構便能發揮作用。
取捨:分層架構讓團隊可以分擔協調職責,並有可能在個別分支內處理故障。然而,這會帶來額外的交接、更複雜的狀態管理,以及更高的營運開銷。局部恢復亦取決於檢查點和執行狀態的實作方式。
這些架構的比較:
準則 | 集中式 | 去中心化 | 分層式 |
執行權責 | 由一個編排器控制委派 | AI 代理程式透過同儕或共享狀態協調 | 職責分佈於各編排層級 |
狀態一致性 | 透過單一控制點協調較容易 | 需要明確的同步和衝突處理 | 需要在分支內及分支之間協調 |
故障隔離 | 中央控制器可能成為關鍵依賴 | 個別 AI 代理程式可獨立失效,但共享基礎設施仍然至關重要 | 如設計時已考慮恢復機制,故障可局限於分支之內 |
政策執行 | 可集中執行通用管控措施 | 必須在所有參與者之間一致執行政策 | 可在全域及領域層級套用管控措施 |
運作複雜度 | 一般較低 | 協調複雜度較高 | 多層編排導致複雜度較高 |
循序、平行及交接式執行
還有一個值得了解的區別。架構決定由誰協調各個 AI 代理程式,而執行模式則決定它們的任務如何推進。
以下是三種執行模式:
- 循序工作流程:AI 代理程式按預先定義的順序運作,一個代理程式的結果會成為另一個代理程式的輸入。
- 平行執行:各自獨立的 AI 代理程式同時運作。
- 交接式執行:隨著任務推進,控制權會在不同的專門 AI 代理程式之間轉移。當另一個代理程式更適合處理下一步時,這種方式很有用,但每次交接都必須保留繼續執行所需的資訊。
這些模式並非互相排斥,亦不會與編排架構一一對應。目標是選擇最簡單的結構,既能支援工作流程的依賴關係和協調需求,又能把運作開銷控制在可接受範圍內。
常見的 AI 代理程式編排失敗情況
編排的任何環節都可能出錯,由簡單的疏忽到錯綜複雜的阻礙都有。有時,即使整體工作流程失敗,某個 AI 代理程式看起來仍然正確完成了工作。我們根據從業者的經驗,整理了導致編排工作流程不可靠的一些常見錯誤,請多加留意:
- 資訊流失的 AI 代理程式交接。編排器把摘要後的計劃傳給專門的代理程式,但摘要遺漏了限制條件、依賴關係或實作細節。
- 過早執行扇入。下游 AI 代理程式在所有上游任務完成之前,就開始彙總結果。
- 非確定性的共享狀態更新。平行的 AI 代理程式在沒有明確合併語義的情況下,寫入相同的狀態鍵。視乎框架如何處理更新,這可能導致寫入遺失、資料重複、輸出受執行順序影響,或出現互相衝突的變更。
- 檢查點與副作用不一致。某項任務執行了外部操作,但在工作程序失敗之前,其成功執行的紀錄未有被持久保存。復原時,編排器看到一項未完成的任務,於是重新執行它。
- 人工審批後恢復執行的競態條件。暫停及恢復執行本身就會帶來同步問題。
- 委派循環與重試放大。由於職責重疊、依賴關係循環或完成條件含糊,AI 代理程式不斷互相轉交工作。
- 將指令層級的管控誤當作執行安全。編排器可能會告訴 AI 代理程式不要存取某些資源或執行敏感操作,但模型指令並不會強制執行作業系統權限、網絡限制或授權邊界。Perplexity 的安全工程研究指出了為何代理程式即使在沒有惡意指令的情況下,也可能在追求正當目標時跨越安全邊界
留意這些失敗之間的分別有多大。排程器過早轉換狀態,或一次含糊的外部寫入,都可能產生錯誤結果,但它們源自執行生命週期的不同部分。正因如此,可靠的編排不只需要改善提示或加入重試。
提升正式環境可靠性的 7 個 AI 代理程式編排最佳實踐
1. 定義明確的任務合約、驗收標準及停止條件
目標含糊、完成定義不清晰,往往會令 AI 代理程式產生的結果令人失望。解決方法是採用提示合約(即代理程式的工作範圍):在執行開始之前,就目標、限制條件、輸出格式及失敗條件達成共識。
例如,假設有一個 AI 代理程式負責修復一個間歇性失敗的整合測試,你可以這樣為它定義合約:
- 目標:找出並修復結帳 API 整合測試不穩定的原因。
- 輸入:測試原始碼、CI 失敗記錄、最近的提交,以及相關的應用程式程式碼。
- 限制條件:不得停用測試、放寬斷言,或修改無關的應用程式行為。
- 預期輸出:程式碼修補程式、根本原因說明,以及測試執行結果。
- 驗收標準:之前失敗的測試連續 10 次執行均通過,且相關的回歸測試套件亦通過。
- 失敗條件:無法確定根本原因、修正引入了回歸問題,或所需的測試環境無法使用。
但還有另一個重要部分:AI 代理程式應該在何時停止?
AI 代理程式不應因為尚未產生令人滿意的結果,就無限期地反覆迭代。請定義怎樣才算成功完成、何時應交回部分完成的任務,以及何時因無法滿足某項要求而停止。設定最大委派深度和迭代上限或執行預算,以免未解決的任務變成無止境的循環。
回到我們的 CI 例子。你可以定義以下停止條件:
- 成功:修正連續 10 次測試執行均通過,並通過相關的回歸測試套件。
- 迭代上限:AI 代理程式最多只可嘗試兩個候選修正。
- 執行預算:即使問題仍未解決,AI 代理程式亦必須在 60 分鐘後停止。
- 委派上限:AI 代理程式可將工作委派給一個專門的代理程式,但不可再進一步委派給子代理程式。
- 部分完成:如果兩次嘗試都失敗或時間限制已到,AI 代理程式會交回其發現、嘗試過的變更及測試結果。
- 執行受阻:如果測試環境無法使用,AI 代理程式會停止並報告阻礙,而不是聲稱成功。
2. 保持編排器精簡,並強制採用結構化交接
有時開發人員會賦予編排器過多職責,令它不再協調專門的 AI 代理程式,反而自行編寫程式碼、除錯或進行詳細審查。這會造成瓶頸:編排器把上下文預算花在實作細節上,延遲委派,並令結果的責任歸屬變得模糊。
因此,讓編排器做好本分,並透過引用具體成品來強制執行交接:原始任務、相關輸入、輸出成品、執行狀態,以及任何未解決的問題。
看看這個例子:status: completed 指的是 AI 代理程式獲指派的工作,而不是整個工作流程。由於測試仍處於 pending 狀態,編排器不應批准最終結果。
{
"task_id": "fix-42",
"status": "completed",
"artifact_ref": "patch-17",
"test_status": "pending",
"blockers": []
}3. 持久保存工作流程狀態並控制上下文增長
AI 代理程式的對話記錄並不能可靠地反映工作流程進度。當上下文視窗填滿時,自動壓縮可能會丟失重要細節。而如果工作程序當機,下一個代理程式需要知道哪些步驟實際上已經完成。
例如,如果編程 AI 代理程式產生修補程式後當機,下一個工作程序應擷取已儲存的成品,並從記錄的工作流程狀態繼續。但如果該代理程式亦觸發了外部 CI 執行,編排器必須先另行核對該次執行,才可重複該操作
因此,請將執行狀態與 AI 代理程式的工作上下文分開。把任務狀態、執行嘗試、已完成步驟及成品參照儲存在持久儲存空間中。同時,只載入與代理程式目前任務相關的指令、輸入和結果,而不是把整個執行記錄塞進其上下文視窗。
4. 設計能感知失敗的重試及可復原的工具執行
假設你的 CI AI 代理程式觸發了一次測試執行,但 API 請求逾時。究竟是測試執行未能啟動,還是 CI 服務已將其排入佇列,只是遺失了回應?
逾時並不一定代表操作失敗。因此,在決定下一步之前,你需要先區分不同的錯誤:
- 暫時性錯誤(429、503):使用有上限的指數退避及隨機抖動進行重試,並在有提供 Retry-After 時遵從其設定。
- 驗證或權限錯誤(400、403):停止或修正根本問題,而不是重複相同的請求。
- 結果不明確(可能已寫入後逾時):在再次嘗試之前,先檢查操作是否已成功。
注意:即使是可重試的錯誤也需要設限。為每次工具調用設定逾時,限制重試次數及總重試時間,並強制執行整體工作流程期限,以免巢狀的 AI 代理程式不斷重新啟動同一操作。如果某個依賴項反覆失敗,可使用斷路器暫時停止發出請求。
對於具有外部副作用的操作,請為每個邏輯動作指派一個穩定的冪等鍵,並在重試時重複使用。如果 API 支援伺服器端去重,就能識別重複的請求,而不會執行同一動作兩次。如果不支援,則可使用關聯 ID 或其他權威參照查詢外部系統。
當你無法確定發生了甚麼事時,請停止並上報。
以下以虛擬碼示範我們 CI AI 代理程式的重試邏輯:
op_id = get_or_create_operation_id(
task_id=task_id,
patch_id=patch_id,
action="start_ci_run"
)
try:
return ci.start_run(commit, request_id=op_id)
except TimeoutError:
run = ci.find_by_request_id(op_id)
if run:
return run
if ci.supports_idempotency:
return bounded_retry(
lambda: ci.start_run(commit, request_id=op_id)
)
raise NeedsReconciliation(op_id)程式碼說明:此範例假設 CI API 支援按請求 ID 查詢執行記錄。request_id 只有在供應商明確保證冪等性時,才能防止重複。bounded_retry() 只是示意用的虛擬碼。在正式環境中,重試應同時受每項操作的重試預算(最大嘗試次數或已用時間)及整體工作流程期限所限制。
對於跨越多個服務的較長工作流程,可考慮採用 Saga 模式,在後續步驟失敗時協調補償動作。但請記住,補償並不一定等於完整回滾。你可以還原資料庫更新,但無法收回已寄出的電郵。
5. 以明確的資源預算路由及平行處理工作
這裏需要平衡兩件事:每項任務需要多強的模型能力,以及你可以同時執行多少項任務。任何一方判斷錯誤,都可能令 AI 代理程式爭奪共用的 API 配額,或者只依賴昂貴的推理模型。
在模型選擇方面,應按任務複雜度配對模型能力和推理強度——道理簡單,卻常被忽略。請注意,你可以自行設定路由規則並評估模型,也可以使用會替你處理模型選擇的編排平台。
例如,Perplexity Computer 的 Effort Mode 讓你無需手動選擇模型,就能決定一項任務值得投入多少心力。只需選擇 Light、Standard、High 或 Ultra,Perplexity 便會自動選擇負責編排的模型及其推理等級。該編排器隨後會將子任務委派給輔助 AI 代理程式,而這些代理程式可以使用來自不同供應商的模型。
Perplexity 會評估各模型配置的質素和成本,優先選用能提供相若結果而較便宜的選項。如果你想自行選擇模型和推理等級,亦可使用 Custom 控制項。
在平行處理方面,上限應取決於你的基礎設施和外部依賴項。先驗證共用 API 的請求及 token 速率限制,然後在逐步提高並行量的情況下對工作流程進行負載測試。觀察吞吐量是否有所提升,還是請求開始排隊、變慢或傳回 429 錯誤。
為了令資源消耗保持可預測,請強制執行資源限制及排程管控:
- 控制並行量及請求速率:限制每項服務的進行中調用數量,並將多出的工作排入佇列。請記住,單靠並行上限並不能強制執行每分鐘請求數或每分鐘 token 數的限制。
- 追蹤 token 及成本預算:計算整個工作流程(包括子 AI 代理程式)的用量,並在剩餘預算不足時停止啟動新工作。
- 嚴格執行時限:設定任務及工作流程的時間限制,並在支援的情況下將取消指令傳遞給正在執行的 AI 代理程式。
- 尊重依賴關係:只在下游任務所需的輸入可用時才啟動它們,而不是同時啟動所有 AI 代理程式。
6. 強制執行審批並隔離 AI 代理程式的執行
切勿要求模型自行判斷其操作是否安全。相反,應給予 AI 代理程式最低權限,並在應用程式程式碼中強制執行以風險為本的審批規則。如果代理程式會執行程式碼,請將該執行環境與主機環境隔離,並限制其對檔案、網絡及憑證的存取。這樣即使代理程式出錯或執行了不安全的程式碼,也能限制損害。
「我對過於複雜的多 AI 代理程式系統抱持懷疑態度,尤其是當代理程式互相審查和批准彼此的工作時。結果可能是幾個代理程式都信心十足地把同一個錯誤傳下去,卻沒有人真正發現它。」Spilker 提醒道。
對於需要人工審批的操作,請暫停執行並儲存所提出的確切操作:
- 其參數
- 其目標資源
- 其提交或狀態版本
- 審查者的決定
此外,請定義審批被拒絕、過期或需要上報時會發生甚麼事。這對可恢復執行的框架至關重要,因為恢復一個被中斷的節點時,會從該節點的開頭重新執行程式碼。中斷之前的任何副作用都可能再次發生。
因此,如果審批被拒絕或過期,請求便會關閉。如果目標提交、參數或權限在執行前有所改變,請使該審批失效並重新申請。
Spilker 亦不認同把完全自主的端到端 AI 代理程式視為目標。「對我來說,更好的做法是建立幾個專注的代理程式,賦予它們清晰的職責、明確的權限,並在適當的環節安排人工審查。這樣你仍然可以提升效率,又不必放棄全面控制。」他總結道。
7. 獨立驗證輸出並測試復原行為
有沒有試過 AI 代理程式明明失敗了,卻回報成功?就算不令人火冒三丈也夠煩人,而且修正並不快捷,因為代理程式的最終訊息未必會告訴你問題出在哪裏。
要調查問題,就要追蹤執行期間發生了甚麼事,並獨立驗證結果。所以,讓我們花點時間隔離並解決問題。
追蹤工作流程,找出出錯之處
在為 AI 代理程式的提示除錯之前,先擷取完整的執行路徑。你需要一個追蹤記錄,把同一次工作流程執行中的代理程式調用、工具調用、錯誤及重試串連起來。
OpenTelemetry 的 GenAI 語義慣例提供了描述這些操作的標準化方式。例如,invoke_workflow 代表工作流程執行,invoke_agent 代表 AI 代理程式調用,execute_tool 則代表工具調用。每項操作都可以記錄為一個 span,連同其時間、狀態及相關中繼資料。
這個步驟能為你提供執行路徑的追蹤記錄,讓你找出 AI 代理程式在哪裏出了狀況。
invoke_agent generate_patch OK
execute_tool start_ci_run OK run_id=9812
execute_tool get_ci_result TIMEOUT
agent_response: "Success"執行追蹤記錄示例。
獨立審查輸出
盡可能使用程式化檢查。根據 JSON 結構描述驗證輸出、執行單元及整合測試、檢查所需成品是否存在,並查詢外部系統以確認操作確實成功。
對於需要主觀判斷、因而無法透過程式化檢查評估的輸出,可引入一個獨立的審查 AI 代理程式。其中一種做法是實作者–審查者–解決者循環:一個代理程式產生成品,一個使用全新上下文的審查者找出問題,再由解決者處理這些問題,然後再次執行驗證。
你仍需在可行的情況下驗證審查者的發現;如果你使用基於 LLM 的評分器進行重複評估,亦應以人工審查過的例子校準其判斷。
注入故障以測試復原能力
到目前為止,你已追蹤了代理程式執行的操作,並檢查了其輸出是否正確。但如果工作程序在任務中途崩潰,或 API 在接受請求後逾時,會發生甚麼事?出乎意料的是,你的工作流程在正常情況下或許運作良好,卻可能在恢復期間失敗。
要測試這一點,請在測試環境中刻意注入故障:
- 模擬 API 逾時
- 在外部寫入與檢查點之間令工作程序崩潰
- 傳回格式錯誤的工具輸出
- 令批核過期
每次測試後,檢查執行追蹤記錄,了解哪些步驟已執行、工作流程從何處恢復,以及是否有任何操作被重複或略過。然後檢視實際結果。
假設你的 CI 代理程式發出請求以啟動一次測試運行,但 API 回應逾時。代理程式重試後收到成功回應,並回報成功。一切看似正常,直到你查看 CI 服務,才發現建立了兩次測試運行,而非一次。
因此,你應同時核實工作流程所記錄的狀態,以及外部系統中的實際變更。只有當工作流程在沒有意外副作用的情況下達到預期狀態,恢復測試才應判定為通過。
將你發現的故障加入回歸測試,以免日後的變更再次引入這些問題。
歸根究柢,成功代表工作流程通過了所需的檢查,而且其外部結果已獲核實。
AI 代理程式編排常見問題
為何孤立運作的 AI 代理程式在企業規模下會失效?
孤立運作的代理程式雖然能正確完成各自的任務,但合起來的結果卻可能不一致。試想一下:銷售代理程式在 10:00 擷取客戶條款,定價代理程式在 10:05 使用更新後的價格計算報價,而法律代理程式則檢查一份在 10:07 已變更的合約。每個代理程式所依據的業務快照各不相同,因此它們的輸出可能互相矛盾。
在企業規模下,這個問題會更加明顯,因為代理程式要與多個獨立更新的系統互動、以不同權限運作,而且未必共享上下文或執行狀態。
如何防止 AI 代理程式陷入無限重試循環?
在多個層面設定限制:工具呼叫的最大重試次數、代理程式的最大迭代次數、委派深度,以及整個工作流程的截止時間。重試前先將故障分類。對於暫時性的 429 回應,如有提供 Retry-After,請遵從其指示;否則,請使用加入隨機抖動(jitter)且設有上限的指數退避。
出現驗證或權限錯誤後,請停止重試未經修改的請求。如果下游服務屢次失敗,斷路器可防止代理程式產生額外負載。
AI 代理程式工作流程崩潰後,如何恢復執行?
恢復機制取決於你所使用的執行環境。使用 LangGraph 時,PostgresSaver 等持久化檢查點儲存器會以 thread_id 儲存圖狀態,讓執行可從已保存的狀態繼續。使用 Temporal 時,另一個工作程序可透過重播事件歷史來重建工作流程。在重播期間,它會重用先前記錄的活動結果。
如果在工作流程仍在執行時重新部署應用程式,已保存的狀態和執行歷史可能不再相容。Temporal 透過 Worker Versioning 和工作流程修補(patching)來解決此問題。對於基於檢查點的系統,請規劃 schema 遷移,並在推出不相容的變更前,針對現有的已保存狀態測試恢復。
如何測試 AI 代理程式編排的可靠性?
多次執行相同的代表性任務,並區分 pass@k(k 次嘗試中至少有一次成功)與 pass^k(全部 k 次嘗試均成功)
按任務類別和工作流程版本衡量結果,而非依賴單一的整體成功率。追蹤首次嘗試成功率、重複執行之間的一致性、p95 延遲、每項已完成任務的成本,以及需要人工介入的比例。報告成功率時,請一併列出樣本數量和不確定性區間。