AI 代理架構不能只有模型與工具迴圈。正式環境的設計必須分開身分、工具、工作狀態、長期記憶、持久執行、後端服務及遙測,因為每一層負責的失敗都不同。
最清楚的測試是在兩次外部寫入之間讓程序當機。系統應知道是誰執行、哪些已完成、哪些可能已完成,以及從哪裡繼續,而不是要求模型從對話文字重建現實狀態。
從執行路徑開始
flowchart TB
Trigger[User or event] --> Loop[Model and agent loop]
Loop --> Policy[Identity and policy]
Policy --> Tools[Tool registry]
Tools --> Durable[Durable execution]
Durable --> Backend[Backend services]
Loop <--> State[(Task state)]
Loop <--> Memory[(Long-term memory)]
Loop --> Telemetry[Traces, logs, metrics, evals]
Tools --> Telemetry
Durable --> Telemetry
Backend --> Telemetry
模型提出下一個動作,政策決定該身分是否可以執行,工具層把決策轉成範圍明確的合約,持久執行在外部副作用前後記錄進度,後端服務保存權威業務資料,遙測則讓人類能重建整次執行。
這個順序屬於更廣泛的正式環境代理堆疊,但為一項真實工作流程繪圖,比畫出公司裡每一項服務更有用。
讓每一層只擁有一種事實
模型迴圈負責選擇,但不負責授權
迴圈保存提示詞、近期訊息、工具結果及停止規則。它可以選擇工具,但下游系統必須執行權限限制。提示詞寫著「只能讀取發票」只是指引,不是存取控制邊界。
工具公開範圍明確的動作
工具合約會為操作命名、限制引數,並回傳下一步決策所需的欄位。不能只因模型能描述需求,就公開範圍廣泛的管理 API。MCP 工具設計指南涵蓋選擇、結構描述、穩定錯誤及安全寫入。
身分與政策決定哪些事情可以發生
將租戶、使用者、代理及委派的權限範圍帶到實際執行動作的系統。影響重大的呼叫前應檢查政策,稽核記錄則要保存決策。伺服器能從憑證推導租戶 ID 時,不要要求模型提供。
工作狀態記錄本次執行的位置
工作狀態包含目前步驟、已完成操作、等待中的核准、重試次數及下一次排程嘗試。狀態必須能在建立它的程序結束後繼續存在。對話記錄是執行的輸入,卻無法可靠編碼交易狀態,因此不能取代明確狀態。
記憶在不同執行間傳遞選定事實
記憶可以包含使用者偏好、先前摘要或擷取的文件。它是可能出錯的上下文,因此要保留來源、保留期限與刪除規則。不能只用「發票已寄出」這類記憶句子記錄不可逆的副作用;這項事實應存在權威後端狀態中。
持久執行能承受中斷
持久執行負責協調重試、檢查點、等待及繼續。Temporal 將它定義為透過重播已記錄事件歷史,讓執行在當機或中斷後繼續。即使不採用 Temporal,而只實作較小的操作帳本,這個模型仍然有用。請參考 Temporal 的持久執行說明及完整的代理持久性指南。
後端服務擁有業務事實
訂單、付款、檔案、權限及客戶記錄,應存在能執行其不變條件的系統中。代理透過範圍受限的 API 或工具存取。模型回應可以解釋訂單,但不能成為正式訂單記錄。
遙測重新串起整條路徑
使用一條追蹤連接模型呼叫、工具選擇、政策檢查、工具執行及下游請求,並加入操作 ID 與遮蔽後的引數。日誌記錄事件、指標呈現彙總健康狀態、評估驗證預期行為,三者不能互相取代。
選擇產品前先區分失敗
代理在逾時後重複寄信,應調查持久執行與冪等性;下週記錯偏好,應調查記憶與來源;讀取另一租戶的記錄,應調查身分與授權;選擇 delete_project 而不是 archive_project,則應調查可見工具集及選擇測試。
購買單一「代理平台」不會消除這些邊界,只會改變負責它們的元件。應明確記錄責任歸屬,包括產品名稱背後實際使用的資料庫或佇列。
先繪製最棘手的工作流程
不要從唯讀對話開始。選擇一項會寫入兩次、等待核准、呼叫不可靠 API 或可能產生費用的工作流程,在每個副作用前後標記權威記錄。下方提示詞會把這條路徑轉成架構圖,並指出目前只存在於模型上下文視窗中的層級。