首頁 > 人物 > 影視人物與創作者 > Closed-loop AI Agent怎麼設計?狀態機、控制迴路、驗證器與停止條件

延伸主題

Closed-loop AI Agent怎麼設計?狀態機、控制迴路、驗證器與停止條件

Closed-loop AI Agent會根據環境回饋選擇下一步,再…

How to design a closed-loop AI agent

Closed-loop AI Agent是一套根據環境回饋持續調整行動,並在明確條件下成功、失敗、暫停或等待人工的控制系統。模型負責理解模糊資訊與提出候選行動;外層控制器負責狀態、工具政策、預算、執行、驗證、日誌與人工核准。

閉環的核心不是讓Agent一直運行,而是每一輪都有可觀察輸入、受限制的行動、外部結果與可驗證更新。模型說「完成」只能算候選判斷,真正完成要由測試、Schema、資料庫狀態、產出檔案或具名人員確認。

重點快讀

  • 模型提出Action Proposal,Policy Layer決定是否允許執行。
  • 工具結果必須形成Observation,再由Verifier判斷是否符合成功條件。
  • 任務狀態應保存於外部Store,不能只存在聊天上下文。
  • 重試要依錯誤分類,認證、政策與資料衝突不能無限重試。
  • 每個任務需要SUCCEEDED、FAILED、PAUSED、WAITING_FOR_APPROVAL與CANCELLED等終止狀態。

什麼任務需要閉環Agent?

任務特徵建議架構
輸入、步驟與錯誤都固定傳統程式或Workflow
固定流程中需要摘要或分類Workflow加單次LLM節點
需要搜尋、探索、工具回饋與反覆修正Closed-loop Agent
子任務數量未知但可獨立驗收Orchestrator加受控Workers
高風險且無法外部驗證人工主導,Agent只提供建議

閉環適合未知原因除錯、多來源研究、資料分析與需要根據中間結果調整路徑的工作。固定報表、欄位轉換與交易流程應優先使用一般程式,避免把確定規則交給機率性模型。

控制迴路的七個階段

  1. Goal:建立任務目標、成功條件、風險與預算。
  2. Observe:取得目前State、環境、資料與最近結果。
  3. Propose:模型提出下一個候選行動與理由。
  4. Authorize:政策層檢查Tool、Scope、參數、成本與核准。
  5. Execute:在受限環境呼叫工具。
  6. Verify:以外部條件確認結果是否有效。
  7. Update/Stop:更新狀態、調整計畫或進入終止狀態。

Proposal、Authorization、Execution與Verification必須分開。若模型能直接繞過政策層呼叫工具,或能自行修改成功標準,閉環就失去控制。

狀態機需要哪些狀態?

狀態意義
QUEUED任務已建立,等待資源與權限檢查
RUNNING控制迴路正在觀察、決策與執行
WAITING_FOR_INPUT缺少使用者資料或必要條件
WAITING_FOR_APPROVAL高風險行動等待具名核准
PAUSED因成本、維護、事故或人工要求暫停
SUCCEEDED成功條件已由外部證據確認
FAILED無法在限制內完成,保留原因與成果
CANCELLED使用者或政策明確終止

狀態轉移要由控制器管理,並保存時間、原因、版本與責任人。WAITING不是錯誤;長任務常需要等待資料、核准或外部事件,系統應能釋放資源後再繼續。

最小資料模型

物件必要欄位用途
Tasktask_id、goal、success_criteria、risk保存原始任務與完成定義
Constraintstools、scopes、budgets、deadline、forbidden限制可用資源與行動
Statestatus、step、facts、artifacts、version支援中斷、更新與恢復
Actionaction_id、tool、arguments、reason、approval記錄候選與已授權行動
Observationresult、error、evidence、timestamp保存工具與環境回饋
Verificationchecks、outcome、defects、confidence判斷是否通過外部驗收
Tracemodel、prompt、skill、tokens、latency、policy支援除錯、成本與稽核

State、Artifact與原始證據應存放於外部儲存層。對話摘要可以節省Context,但不能取代Tool Result、檔案版本、測試報告與核准紀錄。

控制器偽代碼

function run(taskId):
  task = loadTask(taskId)
  state = loadState(taskId)

  while state.status == RUNNING:
    enforceBudget(task, state)
    observation = observe(task, state)

    proposal = model.propose({
      goal: task.goal,
      criteria: task.success_criteria,
      state,
      observation
    })

    policy = authorize({
      identity: state.agent_identity,
      tool: proposal.tool,
      args: proposal.arguments,
      risk: task.risk,
      constraints: task.constraints
    })

    if policy.requiresApproval:
      state.status = WAITING_FOR_APPROVAL
      save(state, proposal, policy)
      return state

    if policy.denied:
      state = recordDenied(state, proposal, policy)
      state = retryOrStop(state)
      save(state)
      continue

    result = executeInSandbox(proposal)
    verification = verify(task.success_criteria, result, state)
    state = update(state, proposal, result, verification)

    if verification.success:
      state.status = SUCCEEDED
    else if shouldStop(state):
      state.status = FAILED

    save(state, proposal, result, verification)

  return state

程式碼重點是模型只產生Proposal。身份、權限、工具執行與完成判斷都位於模型外部,讓系統能用一般工程方法測試與稽核。

工具介面如何支援閉環?

  • 名稱描述單一動作,例如invoice.create_draft
  • 參數使用Schema,避免任意Shell或自由JSON。
  • 讀取、草稿、送出與刪除拆成不同工具。
  • 回傳Resource ID、版本、錯誤碼、證據與可重試提示。
  • 有副作用的操作使用Idempotency Key。
  • 提供Dry Run、Preview或Rollback。
  • 文件清楚說明權限、後果與錯誤分類。

Tool Description越模糊,模型越需要猜測;在有副作用的環境中,猜測會轉成錯誤寫入。工具應像公開API一樣被設計、測試與版本化。

Verifier如何設計?

任務外部驗證
程式修改Build、Lint、Type Check、Unit、Integration與E2E
資料處理Schema、筆數、Checksum、統計與異常值
研究報告來源、日期、主張對應與矛盾標記
內容更新目標Post ID、正文、Meta、內鏈與回讀狀態
外部寫入實際Resource ID、版本與系統狀態
高風險決策具名專家或多人核准

Verifier可以包含程式、規則、測試與人,不必是一個「審查Agent」。另一個模型適合找缺漏與反例,但不能取代原始資料與環境證據。

Retry、Replan與Stop怎麼分?

情況控制方式
暫時網路逾時有限次指數退避Retry
參數格式錯誤修正參數後Retry
工具選錯或結果不符Replan,選擇不同路徑
認證或權限不足停止,等待授權
來源矛盾或目標不清等待人工輸入
相同行動重複判定Loop並停止
達到時間、成本、步數上限保存目前成果並FAILED或PAUSED

Retry重做相同行動;Replan改變策略;Stop承認系統在目前限制內無法可靠完成。三者混在一起,容易形成重試風暴與成本失控。

停止條件

  • 成功條件已被外部證據確認。
  • 同一Tool與參數重複超過門檻。
  • 連續失敗沒有產生新的診斷。
  • 達到Token、費用、時間、步數或工具上限。
  • 需要未授權資料、工具或高風險行動。
  • 環境狀態與原計畫產生重大衝突。
  • 使用者取消、事故停機或維護模式啟動。

停止時要回報已完成、未完成、使用證據、最後可靠State與建議下一步,不能只輸出「任務失敗」。

人類核准如何進入迴路?

  • 顯示即將執行的Tool與完整目標。
  • 列出依據資料、版本與不確定性。
  • 說明外部影響、是否可逆與回退方式。
  • 保存核准者、時間、範圍與條件。
  • 核准後重新檢查環境狀態,避免使用過期Proposal。

等待核准期間,外部資料可能改變。重新啟動時應確認Resource Version、價格、Post ID或部署版本仍與預覽一致。

評估指標

指標用途
任務成功率外部驗證通過的比例
首次成功率無Retry與人工修正即完成
平均步數與延遲完成一個任務的迴路成本
每個有效任務成本模型、工具、人工與維護總成本
人工介入率需要補資料、核准或接手的比例
高風險誤動作率未授權或錯誤副作用
回復成功率中斷或失敗後能正確繼續
可重現率能否用相同版本重建Trace與結果

上線前檢核

  • 成功條件可由程式、環境或具名人員驗證。
  • 模型沒有繞過Policy直接執行工具的路徑。
  • 副作用工具有冪等、預覽與回復。
  • Task State可在程序中斷後恢復。
  • 已設定步數、時間、Token、費用與Retry上限。
  • Trace包含模型、Prompt、Skill、工具、政策與核准。
  • 測試集包含工具錯誤、資料缺漏、越權與Prompt Injection。
  • 有事故停機、通知與Owner。

Agent、Workflow、Harness與Platform的完整層級,可閱讀Agentic Systems架構地圖;長任務如何拆成Milestone與Context Budget,可閱讀長任務AI Agent怎麼拆?

常見問題

Closed-loop Agent和Workflow差在哪?

Workflow由程式預先定義路徑;Closed-loop Agent會根據Observation動態選擇下一步。兩者都可以有狀態、驗證與人工節點。

模型越強,Policy和Verifier還需要嗎?

仍然需要。模型能力提高會擴大可完成任務,也會放大工具副作用。身份、權限、預算與驗證屬於系統責任。

所有工具都要人工核准嗎?

不需要。唯讀、低風險、可逆且驗收明確的工具可自動執行;付款、刪除、正式發布、部署與權限變更應等待人工。

資料來源

Closed-loop AI Agent的可靠性來自責任分離:模型提出候選,政策限制行動,工具改變環境,Verifier確認結果,狀態機決定繼續或停止。迴路越清楚,Agent越能被測試、恢復與長期營運。

作者與編輯責任

本文署名作者:

YOLO LAB 的文章由署名作者或編輯團隊完成。主編 Dex 負責編輯制度、重要事實查核原則、AI 協作規範與重大更正;文章中的分析與判斷以公開來源、作品內容及可驗證資料為依據。

文章若有需要補充或修正的資料,可透過聯絡頁提供原始來源、日期與具體段落,編輯團隊會依出版政策檢查。

發表迴響

探索更多來自 YOLO LAB 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

繼續閱讀