昨天我們談到了推播通知如何解決「一直問有沒有更新」的焦慮感。但好像漏提了一個更基本的問題:兩個從未謀面的 AI Agent,究竟是如何從陌生人變成可以託付重要任務的合作夥伴?
還記得第 11 天我們設計的 Agent Card 嗎?
每個 A2A Agent 都有一個固定的「住址」:/.well-known/agent-card.json。這是 A2A 協議的巧妙設計,就像每棟大樓都有門牌號碼一樣標準化。
當一個 Agent 想要認識另一個 Agent 時,首先會禮貌地敲門:
GET https://data-analyst.example.com/.well-known/agent-card.json
然後收到一份詳細的自我介紹:
{
"protocolVersion": "0.3.0",
"name": "資深數據分析師",
"description": "專精商業智慧分析、預測模型建構、客戶行為洞察",
"url": "https://data-analyst.example.com/a2a",
"preferredTransport": "JSONRPC",
"additionalInterfaces": [
{
"url": "https://data-analyst.example.com/grpc",
"transport": "GRPC"
}
],
"capabilities": {
"streaming": true,
"pushNotifications": true,
"stateTransitionHistory": false
},
"skills": [
{
"id": "customer_satisfaction_analysis",
"name": "客戶滿意度分析",
"description": "分析客戶回饋數據,生成洞察報告",
"examples": ["分析本季度NPS分數變化", "找出客戶流失的主要原因"]
}
]
}
這張數位名片告訴我們四件關鍵的事:
拿到名片後,下個問題是:我們要用什麼方式溝通?
今天,我們就來聊三種握手風格:JSON‑RPC、gRPC、HTTP+JSON(REST 風格),各自什麼時候合適、怎麼從 AgentCard 決定。
在理想狀態下,每個 Agent 只用一種最強模式就好。但現實可能沒有想像中美好:
所以 A2A 協議設計上就允許 同一個 Agent 支援多種 transport,並在 AgentCard 裡宣告哪些方式支援。client 則根據這些宣告做選擇及準備 fallback 機制。
協議也強調不同 transport 之間在功能上要「等價」(functional equivalence)。
這是 A2A 協議的基本方式,也是最普遍支援的一種方式。
請求與回應都包在 JSON-RPC 2.0 格式中,走 HTTP(S) POST。協議規範裡也強制這是「核心」方式。
優點
限制
JSON‑RPC 主要由四個屬性構成,params 主要包含 message 及 configuration
若你在 JSON-RPC 請求中加了一段推播通知的設定,它可能長這樣:
{
"jsonrpc": "2.0",
"id": "req-005",
"method": "message/send",
"params": {
"message": {
"role": "user",
"parts": [
{
"kind": "text",
"text": "Generate the Q1 sales report. This usually takes a while. Notify me when it's ready."
}
],
"messageId": "6dbc13b5-bd57-4c2b-b503-24e381b6c8d6"
},
"configuration": {
"pushNotificationConfig": {
"url": "https://client.example.com/webhook/a2a-notifications",
"token": "secure-client-token-for-task-aaa",
"authentication": {
"schemes": ["Bearer"]
}
}
}
}
}
gRPC 是現代高效的 RPC 協議,用 Protocol Buffers 做序列化,支援雙向流 (streaming)、metadata 等特性。
優點
缺點 / 限制
這是最熟悉的傳統 API 風格。你可以把某些 RPC 方法封裝成 REST endpoint,例如 POST /v1/message:send、GET /v1/tasks/{id}。若要支援 streaming,也只能靠 SSE。
優點
缺點
無論是哪種握手方式,重點都不是「選哪一個最好」,而是 根據雙方能力、溝通情境、任務需求,選一個雙方都能接受的語言。