AI 代理基礎設施是一組讓模型可以在真實系統上完成工作的機制,包括代理迴圈、工具、調用端身份、權限、持久狀態、程式碼執行、應用程式後端和遙測。模型缺少這些部分仍然可以規劃,但無法可靠地執行工作。
當每一層只負責一項工作,整個技術堆疊會更容易理解。如果兩層同時重試寫入、儲存相同狀態或決定授權,失敗就很難重現。
代理技術堆疊的七個部分
模型與代理迴圈
模型提出下一個操作。代理迴圈提供上下文、開放工具、記錄結果,並決定何時結束執行。框架可以協助實作迴圈,但執行環境仍需要明確限制時間、工具調用次數和支出。
這項區分很重要,因為更換模型不應暗中替換權限規則或復原行為。這些控制應放在提示之外。
工具與整合
工具把代理迴圈連接到數據庫、API、檔案、瀏覽器和內部服務。實用的工具會清楚描述一項工作、驗證輸入、傳回穩定結果,並提供調用端能夠採取行動的錯誤。MCP 工具規格將探索和調用方式標準化,但符合規格的 MCP 伺服器仍可能包含含糊或不安全的工具。
真正的設計工作在於工具邊界。設計讓代理能夠可靠使用的 MCP 工具指南解釋名稱、結構描述和結果如何影響工具選擇。
身份與政策
每個代理工作階段都需要一個能由下游服務授權的身份。工具說明可能聲稱某項操作是唯讀,但規則必須由擁有數據的服務執行。共用管理員密鑰會令責任歸屬消失,也會擴大單一密鑰外洩的影響範圍。
OWASP 的 Excessive Agency 指引建議限制擴充功能、權限和自主程度。實際上,這代表使用範圍狹窄的憑證、在高影響操作前要求批准,並提供另一種停止或撤銷執行中代理的方法。
狀態與記憶
狀態記錄工作流程已完成的操作;記憶則提供可能有助日後決策的資訊。兩者有所重疊,卻不能互相取代。訂單 ID 和付款結果屬於持久狀態;可能有助回答問題的檢索段落則屬於上下文或記憶。
Postgres 通常足以同時處理結構化狀態和語意檢索。代理記憶中的 Postgres 與向量數據庫比較解釋何時才需要獨立的向量服務。
持久執行與沙箱
持久執行可以在系統失效後接續工作流程,而不會重複已完成的副作用。沙箱則限制不受信任的程式碼在執行期間可以存取甚麼。兩者不能互相取代:沙箱可以隔離重複付款,持久工作流程也可能可靠地接續惡意程式碼。
Temporal 的持久執行模型會保存工作流程進度,並在失敗後重播確定性程式碼。程式碼沙箱則需要限制檔案系統、程序、網絡、密鑰和存續時間。生產環境代理檢查清單把這兩種控制整合到同一條發佈流程中。
應用程式後端
應用程式仍然需要數據庫、身份驗證、物件儲存、佇列、託管和外部 API。面向代理的後端會再加入結構化配置和範圍受限的憑證,讓程式開發代理無須把供應商密鑰放進產生的程式碼,也能建立和操作這些資源。
Cohesivity 位於這一層。代理可以建立隔離的租戶、請求應用程式需要的後端資源,之後再把擁有權交給人。它不會取代模型,也不會決定應用程式的業務規則。
遙測與評估
遙測記錄一次執行期間發生了甚麼;評估則確認一組固定工作的行為是否仍然可以接受。有效的追蹤會串連用戶請求、模型調用、工具調用、政策決定和下游工作。有效的評估會在模型、提示、工具或政策變更後,重新執行具代表性的成功與失敗案例。
OpenTelemetry 的 GenAI 慣例為模型和代理 span 提供共通欄位。它提供一套詞彙,但仍由應用程式決定哪些識別碼和結果適合並且可以安全記錄。
一條生產環境工作流程所需的最小技術堆疊
| 關注事項 | 最小實作 | 可以避免的失敗 |
|---|---|---|
| 工具存取 | 設有類型、以工作為單位而且結果範圍受限的工具 | 選錯工具和無法使用的輸出 |
| 身份 | 每個代理或工作階段各有一組範圍受限的憑證 | 過度廣泛的存取權和模糊的責任歸屬 |
| 狀態 | 持久的操作和檢查點紀錄 | 進度遺失和重複副作用 |
| 執行 | 時間、工具調用、支出和網絡限制 | 失控迴圈和不受控的程式碼 |
| 復原 | 冪等機制加上結果核對 | 在結果不明時重複寫入 |
| 遙測 | 串連模型、工具和後端的單一追蹤 | 無法重建的失敗 |
| 評估 | 固定工作和驗收標準 | 被成功展示掩蓋的回歸 |
你無須為每一列選擇不同供應商,但每項行為都必須有一個明確的負責者。
選擇供應商前,先畫出一條工作流程
選一條最怕重複寫入或用錯憑證的工作流程,從用戶請求一直畫到最後的後端效果。標出模型、工具、身份、狀態紀錄、執行邊界、批准和追蹤各自出現的位置。
缺少哪些標記,比通用的技術堆疊圖更有用。下方提示會要求程式開發代理產生這張圖,而且不會變更項目。