代理原生基礎設施讓 AI 代理透過結構化介面,自行探索、配置、檢查和操作後端資源。代理可以在明確限制內完成設定,但政策、帳務和影響重大的批准仍由人負責。
只有 API 並不代表基礎設施適合代理使用。介面還需要提供機器可讀的能力說明、範圍受限的身份、可預測的錯誤、安全的重試機制,以及讓人認領或批准工作的流程。
代理原生基礎設施具備甚麼特性?
代理可以找到可用操作
介面會告訴調用端有哪些操作、每個參數代表甚麼,以及結果會包含哪些內容。這些說明可以放在 OpenAPI 文件、MCP 伺服器、CLI 說明介面或其他結構化合約中。格式本身不是重點;重點是代理無須把整個文件網站載入上下文,也能選擇正確操作。
身份和權限屬於調用端
每個代理或代理工作階段都應取得範圍受限的身份。後端再根據該身份判斷調用端能否讀取或建立資源、產生費用或刪除數據。共用管理員密鑰會消除這條界線,也令責任歸屬變得模糊。OWASP 的 Excessive Agency 指引建議把擴充功能、權限和自主程度限制在完成工作所需的最低範圍。AI 代理安全設計也面對相同問題:身份、權限和審計紀錄必須一致指出操作由誰執行。
寫入操作可以安全重試
代理會在逾時、執行中斷或工具結果不完整時重試。因此,寫入操作需要冪等鍵或其他伺服器端去重機制。Stripe 的冪等性合約就是一個具體例子:伺服器會保存某個鍵第一次執行的結果,遇到相同重試時再次傳回。代理原生後端也需要這項特性,避免建立第二個數據庫、重複收費或多發一則訊息。
高影響操作始終受到限制
配置可隨時棄用的開發數據庫,和刪除生產環境儲存卷,不應套用同一套批准規則。代理原生系統會直接開放低風險流程,遇到破壞性、財務相關或範圍異常廣泛的操作時,則按照政策暫停或要求人工批准。生產環境代理檢查清單把這項區別轉化為具體控制措施。
代理原生與可透過 API 存取的基礎設施
| 問題 | 可透過 API 存取的基礎設施 | 代理原生基礎設施 |
|---|---|---|
| 調用端如何了解介面? | 開發者閱讀文件並編寫整合程式 | 代理探索結構化操作和限制 |
| 憑證由誰持有? | 通常是個人、團隊或共用應用程式 | 範圍受限的代理、工作階段或租戶 |
| 逾時後會發生甚麼事? | 客戶端自行判斷重試是否安全 | 伺服器提供冪等操作和穩定錯誤代碼 |
| 如何處理高風險操作? | API 密鑰可能直接允許執行 | 執行前先套用政策或批准關卡 |
| 人何時進入流程? | 設定前先建立帳戶和憑證 | 在明確的認領、帳務或批准邊界介入 |
這是實際操作方式上的差異。傳統 API 即使包裝成 MCP 伺服器,只要仍暴露權限過廣的憑證、含糊的工具說明或無法冪等重試的寫入操作,代理依然很難可靠地使用。
為甚麼這種介面現在很重要
Vercel 在 2026 年 4 月表示,由程式開發代理發起的部署在六個月內增加了 1,000%,並佔該平台每週部署量的 30% 以上。其中 75% 來自 Claude Code,6% 來自 Lovable 和 v0,1.5% 來自 Cursor。Vercel 也發現,由代理部署的項目使用 AI 推理供應商的機率高出 20 倍。這些是 Vercel 平台的量度結果,並非整體市場估算,但足以顯示大型部署平台的介面正在改變。
控制台假設人可以理解模糊的失敗訊息、開啟另一個分頁、複製密鑰後再試一次。代理需要的是以數據表達的狀態:缺少哪項權限、能否安全重試、哪些內容已變更,以及哪個操作需要批准。
一個具體的配置流程
Cohesivity 的設定流程示範了這種模式。npx @cohesivity/init 會建立項目上下文並寫入 .cohesivity 檔案。接着,代理可以透過同一個項目請求資源,無須為每個供應商分別完成一次註冊流程。項目在 72 小時內可供認領,讓代理有時間完成建置,同時把擁有權保留給人。
配置數據庫、身份驗證、儲存和託管指南會展示相關請求和產生的項目結構。這只是代理原生基礎設施的一種實作方式,並不代表每個平台都必須綑綁同一組服務。
如何評估代理原生平台
用一項真實工作檢查完整流程:
- 代理能否在沒有純文字設定說明的情況下找到操作?
- 操作是否清楚列明輸入、輸出、限制和穩定的失敗原因?
- 憑證是否只允許代理存取所需的項目和操作?
- 代理能否重試寫入,而不會重複產生效果?
- 破壞性或財務相關操作是否會在執行前停止?
- 人能否識別、認領、撤銷和審計代理建立的內容?
無法通過前兩項的平台,代理很難使用;無法通過其餘檢查的平台,也許容易調用,卻不適合在無人監督下操作。
測試一條配置路徑
在可隨時棄用的項目中執行設定,建立第一個資源後中斷,再執行一次相同請求。檢查第二次執行是否能順利接續、兩次嘗試是否共用同一筆操作紀錄,以及產生的資源能否歸因於發起操作的代理。
如果重試建立了第二個資源,那是好事,你在生產環境凌晨 2:47 出問題前就找到了錯誤。從這個指令開始測試:
npx @cohesivity/init