在 AI 代理碰觸正式環境資料前,先提供範圍受限的身分、讓每項可重試寫入具備冪等性,並在執行前停止破壞性或財務動作。讓它無人值守前,再加入有界限的執行、端到端追蹤及經過測試的復原路徑。
這份檢查清單依相依順序排列,後面的控制會依賴前面的控制。它不是機率排名,因為目前沒有公開資料集能證明各種失敗在正式環境代理中的發生頻率。
在代理碰觸正式環境資料前
為每個代理提供範圍受限的身分
- 為每個需要追蹤來源的代理、部署或工作階段簽發獨立憑證。
- 將範圍限制在工作所需的租戶、資源及動作。
- 即使工具描述說動作唯讀,仍要在下游服務執行授權。
- 撤銷憑證不應要求刪除人類使用者帳戶。
共用管理員金鑰會讓清楚的稽核路徑變得不可能,也會讓一份密鑰外洩導致廣泛存取。OWASP 的 Excessive Agency 指南建議縮小工具功能、權限及自主程度,再於下游系統執行授權。
在執行前停止高影響動作
- 破壞性、財務及範圍異常廣泛的操作要求人類或政策核准。
- 核准步驟顯示確切資源、範圍及後果。
- 底層系統支援時,優先使用軟刪除等可復原的狀態變更。
- 保留稽核日誌,但不要把刪除後才寫入的記錄當成預防性控制。
Railway 記載一起 2026 年 4 月的事故:代理在磁碟上找到帳戶層級權杖,並呼叫舊版 volume 刪除 API。平台雖有四層授權,但權杖範圍與立即刪除行為仍允許這項動作。Railway 復原 volume,並將 API 刪除改成與儀表板一致的 48 小時軟刪除期間。事故報告具體說明為什麼範圍受限的身分必須搭配可復原或經核准的破壞性路徑。
讓寫入具備冪等性
- 為每個邏輯操作建立一個冪等鍵,並在每次重試時重用。
- 在伺服器端保存操作結果,同一個鍵再次出現時回傳該結果。
- 同一個鍵搭配與原始請求不同的參數時拒絕。
- 定義鍵的有效期間,以及到期後會發生什麼。
Stripe API 會保存某個冪等鍵的第一個結果,並允許最長 255 個字元的鍵。其目前文件指出,鍵至少保留 24 小時後即可移除。這些數字屬於 Stripe 合約,不是通用預設;你的保留期間應涵蓋代理最長的實際重試或恢復時間。完整流程請參考代理重試與復原指南。
在代理無人值守前
限制每次執行
- 限制工具呼叫、wall-clock 時間、模型支出及對相同動作的重複嘗試。
- 代理到達政策限制時停止,不要要求模型自我管理。
- 寫入工具使用比讀取工具更窄的限制。
- 反覆發生授權與驗證失敗時升級處理,而不是重試。
速率限制能降低代理造成的損害,但無法修正不安全的權限。身分與授權就位後,再將限制當作控制影響範圍的一層。
一起追蹤模型、代理與工具
使用一條 trace 連接使用者請求、模型呼叫、工具選擇、工具執行及下游 API 工作。加入租戶、代理身分、工具名稱、tool-call ID、結果、時間及政策決策,排除密鑰與敏感工具結果。
OpenTelemetry 現已定義 GenAI 代理與工具 span,包含 tool-call 識別碼及執行時間屬性。使用這些共用欄位,能更容易在模型與應用程式遙測間追蹤同一動作。AI 代理可觀察性指南說明實用的追蹤形式。
測試中斷與復原
- 在外部副作用完成後保存檢查點,而不只在模型回應後保存。
- 從最後一個已驗證的檢查點繼續,而不是重播整次執行。
- 重試寫入前先對應未知結果。
- 演練撤銷代理憑證並停止作用中的執行。
伺服器可能已完成請求但用戶端沒有收到回應時,就會產生未知結果。復原必須先檢查操作記錄或冪等鍵,再決定是否重複。
在使用量擴大前
保留可重複的評估集合
固定具代表性的工作、預期工具選擇、禁止動作及驗收條件。在模型、提示詞、工具描述、權限或重試行為改變後執行。務必包含失敗案例,因為成功展示不會涵蓋上述控制。
寫下事故處理路徑
值班人員應能在不依賴失敗代理的情況下回答四個問題:
- 如何停止新的執行?
- 如何撤銷受影響的憑證?
- 代理碰觸了哪些資源與操作?
- 如何復原或補償已完成的動作?
如果團隊無法從遙測與後端狀態回答這些問題,系統就還不適合無人值守的正式環境工作。
進入正式環境前稽核一項工作流程
選擇權限最廣的工作流程。對每次寫入,記錄其身分、授權規則、冪等機制、核准要求、追蹤欄位及復原動作。任何空白欄位都會成為具體工作,不需要另一份泛用清單。
| 寫入動作 | 身分與範圍 | 冪等性 | 核准 | 追蹤 | 復原 |
|---|---|---|---|---|---|
| 範例:刪除測試部署 | 部署範圍代理 | 操作鍵 | 測試租戶外必須核准 | 工具呼叫與資源 ID | 48 小時內還原 |
選擇空白最多的資料列,優先測試該工作流程。下方提示詞會建立隔離的 Cohesivity 租戶、執行一次正常工作與一次中斷工作,再回報失敗的控制。正式環境不會參與測試。