A2A 通訊協定

代理登錄檔會為 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 代理的目錄。當用戶端或自動調度管理工具代理呼叫目標代理時,系統會執行執行階段驗證、授權、內容檢查、稽核記錄和配額強制執行:

後續步驟