1. 專案概覽
A2A (Agent2Agent) 是一個開放、供應商中立的協定,讓由不同團隊與公司、建構於不同框架的 AI 代理程式能夠互相探索並直接通訊——解決了使用 LangGraph、CrewAI、Semantic Kernel 或任何其他技術堆疊所建構的代理程式,彼此之間缺乏共同溝通方式的問題。
2. 背景與定位
隨著 AI 代理程式日益普及,每個框架與供應商往往會建立自己封閉的代理程式互動方式,因而形成孤島:建構於某個平台上的代理程式,通常無法將工作委派給建構於另一個平台上的代理程式,也無法接收其結果。A2A 的誕生正是為了打破這些孤島,為代理程式提供一個共享、開放的協作協定——讓它們能夠「以代理程式的身分」(作為擁有自身狀態、記憶與推理能力的自主對等個體)交換資訊並協調任務,而非被降級為透過固定 API 呼叫的簡單工具。
根據其文件所述,本專案的核心使命是實現複雜的多代理程式協作,並推廣代理程式互操作方式的開放標準。代理程式之間可以在無需共享內部記憶體、專有邏輯或特定工具實作的情況下協同工作——每個代理程式僅透過標準化的「Agent Card」揭露其選擇揭露的內容,其餘內部細節則保持不透明。
A2A 刻意與 Model Context Protocol (MCP) 互補,而非競爭。MCP 標準化了單一代理程式如何連接到工具、資料來源與 API。A2A 則標準化了獨立代理程式如何跨越組織與框架邊界互相探索與通訊。同時使用兩者的系統,會以 MCP 為個別代理程式提供工具,並以 A2A 讓該代理程式與其他代理程式協作。
此協定由 Linux Foundation 專案治理,其技術指導委員會成員來自 AWS、Cisco、Google、IBM Research、Microsoft、Salesforce、SAP 與 ServiceNow,反映了其旨在成為真正跨產業標準,而非單一供應商產品的意圖。
3. 功能類別
📜 協定規格
A2A 訊息格式、傳輸方式與行為的正式定義,維護於儲存庫中的 /specification 目錄。
- 以 HTTP(S) 上的 JSON-RPC 2.0 作為線路格式
- 用於能力探索的 Agent Card 結構
- 任務生命週期與狀態轉換規則
- 串流與推播通知的訊息格式
- 分層的擴充功能推廣流程,用於隨時間新增新能力
目的:為實作者提供單一、具版本控管的權威來源,確保獨立的 A2A 實作之間能保持互通。
🧰 語言 SDK
官方用戶端與伺服器程式庫,讓開發者不必手動實作線路協定。
- Python SDK (
a2a-sdk) - JavaScript/TypeScript SDK (
@a2a-js/sdk) - Go SDK (
a2a-go) - Java SDK
- .NET / C# SDK
- Rust SDK
目的:讓團隊能以他們代理程式技術堆疊既有的語言採用 A2A,無需自行處理協定細節。
📚 文件與指南
發布於專案文件網站的概念性與參考資料,涵蓋核心概念、任務生命週期、代理程式探索、企業功能、串流與多租戶。
- 各 SDK 的入門指南
- 核心概念(Agent Card、Task、Message、Artifact)
- 企業就緒指引(驗證、可觀測性)
- 協定擴充機制
目的:協助協定實作者與應用程式開發者理解並正確應用 A2A 概念。
🧪 範例與參考實作
維護於配套的 a2a-samples 儲存庫中的範例代理程式與用戶端/伺服器配對,展示了跨框架的真實互通情境。
目的:為採用者提供可運作、可執行的參考程式碼,而非僅從規格開始。
4. 重點特色
- 標準化的代理程式間訊息傳遞——通訊透過 HTTP(S) 上的 JSON-RPC 2.0 進行,這是一種廣泛支援且易於理解的傳輸方式,而非專屬協定。
- 用於探索的 Agent Card——每個代理程式發布一份機器可讀的卡片,描述其能力,讓其他代理程式(或編排器)無需帶外協調即可找到並正確呼叫它。
- 多種互動模式——支援簡單的同步請求/回應、用於串流長時回應的 Server-Sent Events (SSE),以及用於超出單一連線生命週期之任務的非同步推播通知。
- 豐富的內容交換——訊息可攜帶純文字、檔案與結構化 JSON 負載,而不僅限於聊天式字串。
- 設計上的不透明性——代理程式在協作處理任務時,不會揭露內部記憶體、工具或專有邏輯,這在代理程式屬於不同組織時尤其重要。
- 多語言、多供應商治理——官方 SDK 涵蓋六種語言,且協定本身由 Linux Foundation 下的跨公司技術指導委員會主導,降低了單一供應商綁定的風險。
5. 依角色區分的使用案例
- 一般開發者:在你選擇的框架中建構代理程式,並透過 Agent Card 將其公開,使其能被其他代理程式或編排層探索與呼叫,而無需為每個對端撰寫自訂整合程式碼。
- 平台/整合工程師:將 A2A 作為內部代理程式與第三方或合作夥伴代理程式之間的互操作層,在保持雙方內部實作隱私的同時,仍能委派子任務。
- 評估多代理程式架構的專案經理/技術主管:利用 A2A 的任務生命週期與串流模型,規劃跨團隊或跨供應商的長時、多步驟代理程式工作流程將如何協調與監控。
6. 開始使用
找到你需要的資源——從協定文件網站與儲存庫中的規格目錄開始,了解核心概念(Agent Card、Task、Message),然後再選擇 SDK:
https://a2a-protocol.org/latest/
安裝/整合——選擇符合你技術堆疊的 SDK:
pip install a2a-sdk # Python
npm install @a2a-js/sdk # JavaScript / TypeScript
go get github.com/a2aproject/a2a-go # Go
接著探索配套範例儲存庫中的可執行範例:
https://github.com/a2aproject/a2a-samples
貢獻——提交問題、參與討論,或針對規格或 SDK 開啟 pull request,並遵循專案的 CONTRIBUTING.md:
https://github.com/a2aproject/A2A/blob/main/CONTRIBUTING.md
7. 專案結構
A2A/
├── specification/ # 正式的 A2A 協定規格(權威來源)
├── docs/ # 文件網站內容與指南
├── scripts/ # 工具與維護腳本
├── CONTRIBUTING.md # 貢獻指南
├── LICENSE # Apache-2.0 授權
└── README.md
關鍵目錄:specification/ 定義了所有 SDK 與實作必須遵循的具版本控管協定契約;docs/ 驅動位於 a2a-protocol.org 的公開文件網站。語言 SDK 與範例代理程式則維護於同一個 a2aproject GitHub 組織下的獨立配套儲存庫中(例如 a2a-python、a2a-js、a2a-samples)。
8. 相關生態系
- Model Context Protocol (MCP)——用於將單一代理程式連接到其工具與資料來源的互補標準;A2A 與 MCP 通常在同一系統中搭配使用。
- 代理程式框架——LangGraph、CrewAI、Semantic Kernel 及類似框架,正是 A2A 設計所要讓其互操作的系統類型。
- Linux Foundation——主辦並治理本專案,設有跨公司技術指導委員會。
- DeepLearning.AI——已發布涵蓋 A2A 協定的教育課程。
a2a-samples——包含支援語言的可執行範例代理程式與用戶端的配套儲存庫。
9. 授權
✅ 在 Apache License 2.0 下,可自由使用、修改與散布,包括用於商業產品。
✅ 與所有 Apache-2.0 授權專案一樣,包含專利授權。
✅ 可透過 GitHub Issues、Discussions 與 pull requests 接受貢獻。
❌ 不提供任何擔保;本軟體依「現況」散布。
ℹ️ 重新散布或修改後的版本,必須依 Apache-2.0 要求保留原始版權、授權及任何 NOTICE 檔案聲明。
10. 常見問題
問:A2A 與 MCP 有何不同?
答:MCP 標準化了單一代理程式如何連接到其自身的工具與資料來源。A2A 則標準化了獨立代理程式如何互相探索與通訊。許多系統會同時使用兩者。
問:使用 A2A 是否所有代理程式都必須以相同框架建構?
答:不需要——這正是 A2A 要解決的核心問題。建構於不同框架(LangGraph、CrewAI、Semantic Kernel、自訂技術堆疊等)的代理程式,只要各自揭露符合 A2A 規範的 Agent Card 與端點,即可互通。
問:A2A 使用什麼傳輸方式?
答:HTTP(S) 上的 JSON-RPC 2.0,並支援用於串流的 Server-Sent Events (SSE) 以及用於長時任務的非同步推播通知。
問:哪些語言有官方 SDK?
答:Python、JavaScript/TypeScript、Go、Java、.NET/C# 與 Rust。
問:在將 A2A 整合到我自己的代理程式之前,可以在哪裡看到可運作的範例?
答:a2a-samples 儲存庫(https://github.com/a2aproject/a2a-samples)包含可執行的參考代理程式與用戶端。
11. 快速連結
- 儲存庫:https://github.com/a2aproject/A2A
- 官方文件:https://a2a-protocol.org/latest/
- 貢獻指南:https://github.com/a2aproject/A2A/blob/main/CONTRIBUTING.md
- 範例儲存庫:https://github.com/a2aproject/a2a-samples
12. 總結
A2A 為 AI 代理程式提供了一種共同的開放語言,讓它們能夠跨越框架、供應商與組織互相探索與協作,填補了框架特定工具無法獨自解決的缺口。它最適合那些正在建構必須與其無法控制之代理程式互操作的多代理程式系統的團隊——包括內部平台團隊、整合工程師,以及任何設計跨越超過一個供應商或技術堆疊之代理程式架構的人。