代理登錄檔會為 Agent2Agent (A2A) 代理資訊卡、傳輸介面和內嵌技能建立索引,讓您和自動調度管理工具代理,能探索及呼叫 Google Cloud 環境中的代理。自主 AI 代理可使用 A2A 通訊協定交換訊息及委派工作,不需分享內部狀態、提示或工具。
AI 代理、A2A 和 MCP 之間的關係
多代理架構可結合 Agent Registry 目錄中的下列開放標準:
- Agent2Agent (A2A) 通訊協定:標準化 A2A 用戶端 (例如自動調度管理代理或面向使用者的應用程式) 與遠端 A2A 代理之間的點對點通訊。用戶端會傳送自然語言或結構化訊息,並接收有狀態的工作更新或構件,不需瞭解遠端代理的基礎模型、記憶體基底或內部推論迴圈。Agent Registry 會列出 Google Cloud API 公開的內建 Google 代理,以及您在自有環境中部署的自訂 A2A 代理。如需託管自訂 A2A 代理的架構範例,請參閱「Cloud Run 上的 A2A 代理總覽」。
- Model Context Protocol (MCP):標準化用戶端對伺服器工具的執行作業,代理會連線至 MCP 伺服器,呼叫確定性工具並讀取結構化資料資源。
在 Agent Registry 中,您的協調器代理可以查詢單一註冊資料庫,探索用於多步驟委派的專家 A2A 子代理,以及用於直接使用工具的 MCP 伺服器和獨立技能。
通訊協定版本和代理資訊卡探索
每個符合 A2A 規範的代理,都會在名為代理資訊卡 (agent-card.json) 的 JSON 中繼資料文件中,說明其身分、端點和功能。
Agent Registry 支援 A2A 通訊協定規格的 1.0 (建議) 和 0.3 版本。如要瞭解這些版本的特定代理資訊卡欄位和結構,請參閱「代理資訊卡結構定義」。
Agent Registry 如何為代理資訊卡建立索引
無論 A2A 代理是透過自動註冊擷取,還是透過手動註冊新增,代理註冊都會驗證其代理資訊卡,並建立唯讀的 Agent 探索資源,其中包含下列資訊:
- 代理資訊卡酬載:代理登錄檔會將完整的 JSON 酬載儲存在
Agent資源的card欄位中,並將type設為A2A_AGENT_CARD。 - 探索欄位:代理登錄檔會從代理資訊卡擷取代理的
displayName、description、version、傳輸protocols和內嵌skills,並儲存在Agent資源中。您可以搜尋及篩選這些功能,不必擷取各項服務的個別/.well-known/agent-card.json端點。
Google Cloud 服務和受控管的執行階段不一定會公開/.well-known/agent-card.json網址。而是由您和用戶端應用程式直接從 Agent Registry 擷取。部分代理程式也會提供擴充的代理程式資訊卡,其中包含僅供已驗證用戶端存取的額外詳細資料。如果代理資訊卡將 capabilities.extendedAgentCard 設為 true,通過驗證的用戶端可以在代理的執行階段端點上取得擴充代理資訊卡,以擷取這些詳細資料。
傳輸繫結和核心作業
傳輸繫結定義用戶端如何透過網路,將要求格式化並傳送至 A2A 代理。A2A 通訊協定支援下列傳輸選項,讓不同平台建構的代理能互相通訊:
- HTTP+JSON:傳送及接收 JSON 酬載的 HTTPS 要求。
- JSON-RPC:HTTPS 要求,將作業名稱和參數包裝在 JSON-RPC 訊息中。
- gRPC:透過 TLS 進行二進位 gRPC 呼叫,在服務之間進行低延遲通訊。
代理登錄檔會記錄每個代理支援的傳輸類型,以及 Agent 資源上的代理端點網址。由於端點網址會因 Google Cloud 服務和部署作業而異,請避免在程式碼中硬式編碼網址。而是在執行階段從代理程式註冊資料庫查詢代理程式的端點網址和傳輸。
無論代理使用哪種傳輸方式,用戶端都會透過相同的核心 A2A 作業與代理互動:
| 作業 | 說明 |
|---|---|
SendMessage |
傳送訊息,開始新工作或繼續對話。代理會立即回覆,或傳回可追蹤的工作。 |
SendStreamingMessage |
如果代理支援串流,則會傳送訊息,並在代理運作時串流直播狀態更新、部分回覆和結果。 |
GetTask |
檢查現有工作的目前狀態,並擷取任何輸出內容。 |
ListTasks |
列出對話或專案中的工作 (如果代理支援)。 |
SubscribeToTask |
重新連線至執行中的工作,串流最新即時資訊,直到工作暫停或完成。 |
CancelTask |
要求代理停止進行中的工作 (如果支援取消)。 |
GetExtendedAgentCard |
擷取代理的擴充代理資訊卡,其中包含僅供已驗證用戶端查看的其他詳細資料。 |
工作生命週期和多輪對話狀態
A2A 使用兩個 ID,將對話連續性與個別執行單元分開:
- 情境 ID (
contextId):將共用工作階段中相關的多輪互動分組,讓遠端代理在連續要求中保留對話情境。 - 工作 ID (
taskId):識別 A2A 用戶端傳送訊息時,建立的特定非同步或同步工作單位。
遠端代理處理要求時,工作會經歷下列 A2A 生命週期狀態:
| 狀態 | 類別 | 說明 |
|---|---|---|
TASK_STATE_SUBMITTED |
有效 | 遠端代理程式已接受要求,並將工作排入佇列等待執行。 |
TASK_STATE_WORKING |
有效 | 遠端代理正在積極推論、呼叫工具或生成工作成果。 |
TASK_STATE_INPUT_REQUIRED |
已暫停 | 執行作業已暫停,正在等待後續輸入內容、說明,或在相同 taskId 和 contextId 上進行人工介入迴路確認。 |
TASK_STATE_AUTH_REQUIRED |
已暫停 | 執行作業會暫停,直到用戶端完成下游資源的驗證或使用者同意聲明流程。 |
TASK_STATE_COMPLETED |
終端機 | 工作已順利完成,並傳回最終回應或輸出構件。 |
TASK_STATE_FAILED |
終端機 | 工作因執行或下游服務錯誤而停止。 |
TASK_STATE_CANCELED |
終端機 | 任務在完成前取消。 |
TASK_STATE_REJECTED |
終端機 | 遠端代理拒絕執行要求的任務。 |
A2A 技能、獨立技能和 MCP 工具
Agent Registry 會為三種不同的功能機制建立索引,方便您為各個工作流程選擇合適的整合模式:
- 內嵌 A2A 技能:代理
Agent探索資源中的skills欄位包含 JSON 中繼資料,包括id、name、description、tags和examples,嵌入在代理資訊卡中。內嵌 A2A 技能會宣傳自動調度管理代理可透過 A2A 傳輸,將哪些高階工作委派給該遠端代理。 - 獨立技能:Agent Registry 中的獨立
Skill和SkillRevision頂層資源,包含版本化 ZIP 封存檔,內含SKILL.md檔案中的指令和選用指令碼。代理會將獨立技能下載到自己的情境中,而不是將執行作業委派給其他代理。如要完整比較內嵌 A2A 技能和獨立技能,請參閱「獨立技能和 A2A 技能的差異」。 - MCP 工具:
McpServer探索資源中的tools欄位包含由已註冊 MCP 伺服器公開的結構化函式結構定義,代理會直接呼叫這些結構定義,查詢資料或執行確定性作業。
執行階段安全性、控管機制和代理呼叫
Agent Registry 是探索 A2A 代理的目錄。當用戶端或自動調度管理工具代理呼叫目標代理時,系統會執行執行階段驗證、授權、內容檢查、稽核記錄和配額強制執行:
- 目標代理端點查詢和呼叫:使用 Agent Development Kit (ADK) 或標準 HTTP 和 Python 用戶端,查詢目標 A2A 代理端點並傳送訊息。詳情請參閱「建構多代理系統並呼叫 A2A 代理」。
- 驗證和憑證範圍:設定 OAuth 2.0 存取權杖、OpenID Connect (OIDC) ID 權杖、Workload Identity Federation,或代理對代理通話的 Agent Identity 驗證管理工具繫結。
- 存取控管和拒絕政策:強制執行執行階段存取權限、Identity and Access Management (IAM) 拒絕政策,以及 Identity-Aware Proxy (IAP) 輸出政策。詳情請參閱「角色和權限」。
- 提示詞和回覆檢查:檢查支援的 A2A 提示詞和回覆酬載,並設定 Model Armor 與 Agent Gateway 整合和服務擴充功能繫結,偵測提示詞注入和敏感資料外洩。
- 稽核記錄和配額:在 Agent Registry 稽核記錄中檢查 A2A 呼叫的稽核記錄,並在配額和系統限制中規劃目標代理和下游服務頻率配額。
後續步驟
- 在代理資訊卡和內嵌 A2A 技能中,搜尋代理、工具和技能。
- 使用 ADK 或 A2A 用戶端建構多代理系統並呼叫 A2A 代理。
- 查看 A2A 代理資訊卡的 JSON 結構定義。
- 比較獨立和內嵌 A2A 技能。