在生產環境中執行 AI 代理,需要範圍受限的存取權、有界執行、安全寫入、持久復原、隔離的程式碼執行、端到端追蹤、可重複評估,以及經過測試的停止方式。一次有人監督的成功展示,幾乎無法證明這些控制真的存在。
當代理可能在無人逐步監看的情況下遇到你未曾編寫的輸入,就已經進入生產環境。發佈關卡應測試會失敗、重複或需要權限的路徑。
先建立身份,再開放自主操作
為每個代理、部署或工作階段提供一組憑證,既能識別調用端,也能限制可存取的租戶、資源和操作。這些限制必須由擁有數據的服務執行。工具說明和系統提示只是模型的上下文,並不是後端授權。
OWASP 的 Excessive Agency 指引建議把工具功能、權限和自主程度降至最低。依次執行:先移除工作流程不需要的工具,再縮小其餘工具背後的憑證範圍,最後在高影響操作前加入批准。
AI 代理安全指南會進一步解釋憑證範圍、密鑰處理和審計歸因。
用程式碼限制執行
由伺服器強制限制實際經過時間、模型支出、工具調用、重複嘗試、並行執行和輸出大小。對會寫入或產生費用的工具使用更嚴格的限制。授權和驗證若反覆失敗,應停止而不是繼續重試。
即使預算已用完,模型仍可能要求下一個步驟,執行環境必須拒絕。這也是全域速率限制不足的原因:它也許能拖慢失控工作流程,卻無法限制該流程造成的總損害。
讓每個外部效果都能復原
每個可重試的寫入都需要一個邏輯操作 ID 或冪等鍵。結果應儲存在伺服器端,遇到相同操作重試時再次傳回。客戶端逾時後,應先檢查操作紀錄,再決定是否重複效果。
確認外部效果後就建立檢查點。如果程序在發出電郵或建立部署後失敗,復原的工作流程應從該步驟之後繼續,而不是重新執行。
Temporal 的持久執行文件解釋如何儲存工作流程狀態,使其能夠承受程序失敗。應用程式仍需要冪等活動,因為工作節點可能在外部服務接受請求後才失敗。
隔離產生或不受信任的程式碼
代理產生的程式碼應在應用程式程序之外執行。沙箱必須定義:
- 哪些檔案系統路徑存在並會持續保留;
- 程序可以連線到哪些主機和協定;
- 注入哪些密鑰,以及保留多久;
- CPU、記憶體、程序和實際經過時間限制;
- 執行結束後,成品和日誌保留多久。
只使用容器並沒有回答這些問題。AI 代理沙箱指南會把每一條邊界轉化為測試。
從決策一直追蹤到實際效果
用一條追蹤串起用戶請求、模型調用、檢索上下文、工具選擇、政策決策、工具執行和下游 API 工作。加入穩定的租戶、代理、執行、工具調用和操作識別碼,但排除憑證及敏感工具輸出。
OpenTelemetry 的 GenAI 慣例定義模型、代理和工具活動的欄位。以此為基礎,再加入產品所需的識別碼,才能回答誰變更了哪個資源。
每次變更發佈前都評估行為
固定一小組具代表性的工作,包含預期工具選擇、禁止操作、批准點、復原案例和驗收標準。變更模型、系統提示、工具說明、權限、重試政策或記憶行為後,都重新執行這組工作。
模型差異會影響結果的案例需要重複執行。一次成功只是範例,並不是成功率。代理評估指南會解釋如何結合確定性斷言與由模型判斷的輸出。
定義人工中斷路徑
系統應能在重大操作前暫停,向審核者顯示確切資源、操作、範圍和預期效果。代理困惑或無法使用時,仍要有一條操作人員能執行的路徑:
- 停止新的執行。
- 中斷目前的執行。
- 撤銷受影響的憑證。
- 找出該次執行接觸過的每個資源和操作。
- 還原、補償或升級處理已完成的效果。
在隔離環境中演練這條路徑。從未執行過的操作手冊仍然只是假設。
使用發佈關卡,而不是就緒分數
| 關卡 | 必要證據 |
|---|---|
| 存取 | 範圍受限的憑證與下游授權測試 |
| 寫入 | 冪等與未知結果復原測試 |
| 自主操作 | 伺服器強制的執行限制與批准政策 |
| 執行 | 沙箱邊界與清理測試 |
| 復原 | 從檢查點接續與撤銷憑證測試 |
| 診斷 | 一次成功和一次失敗的完整追蹤 |
| 行為 | 含禁止操作的可重複評估集 |
綜合分數可能掩蓋某個缺少的控制。針對要發佈的工作流程,把每一列分別視為通過或失敗。
下方提示會為風險最高的工作流程建立這套關卡,而且不會把生產環境帶入測試。