win4r/openclaw-a2a-gateway
OpenClaw plugin implementing the A2A (Agent-to-Agent) protocol v0.3.0 — bidirectional agent communication gateway
OpenClaw A2A 網關外掛程式
是什麼 – 專為 OpenClaw 代理平台設計的生產就緒外掛程式,實作 Google A2A(代理間)v0.3.0 協定。讓運行在不同機器上的 OpenClaw 代理能自動發現彼此,並透過 JSON-RPC、REST 或 gRPC 交換訊息(文字、檔案、JSON 資料)。
核心概念
| 概念 | 外掛程式的處理方式 |
|---|---|
| 傳輸 | 自動嘗試 JSON-RPC → REST → gRPC;失敗時自動回退。支援帶心跳的 Server-Sent-Events 流式傳輸,用於即時狀態更新。 |
| 訊息部分 | 支援 A2A 的三種部分類型 – TextPart、FilePart(URI 或 base64)、DataPart。在代理回應中發現的檔案 URL 會自動轉換為出站 FilePart。 |
| 路由 | 基於規則(正規表示式、標籤、技能)+生物啟發的「希爾方程式」親和力分數,綜合權衡技能、標籤、模式匹配與成功率。每則訊息選擇最佳對等節點。 |
| 發現 | 透過 DNS-SD(_a2a._tcp SRV/TXT)、mDNS 自我廣播,以及根據已知對等節點數量自適應調整間隔的共識感知探測器,實現零設定對等發現。 |
| 彈性 | 四狀態電路斷路器(關閉 → 敏感度降低 → 開啟 → 恢復),指數恢復機制,自適應傳輸排序,推送通知 Webhook,以及類 Michaelis-Menten 的軟併發節流。 |
| 安全 | Bearer 令牌認證(單一令牌或輪換清單)、Ed25519 設備身分、SSRF 保護(主機白名單、MIME 白名單、大小限制)、JSON-L 審計日誌、可選的認證指標端點、帶 TTL 清理的持久化磁碟任務儲存。 |
快速入門(零設定)
# 從 npm 安裝(推薦)
openclaw plugins install openclaw-a2a-gateway
# 或從原始碼安裝
mkdir -p ~/.openclaw/workspace/plugins && cd ~/.openclaw/workspace/plugins
git clone https://github.com/win4r/openclaw-a2a-gateway.git a2a-gateway
cd a2a-gateway
npm install --production
openclaw plugins install ~/.openclaw/workspace/plugins/a2a-gateway
openclaw gateway restart
# 驗證代理卡是否可達
curl -s http://localhost:18800/.well-known/agent-card.json | python3 -m json.tool
外掛程式會以預設代理卡啟動(name: "OpenClaw A2A Gateway",skills: [chat])。
新增與設定對等節點
openclaw config set plugins.entries.a2a-gateway.config.peers '[
{
"name": "PeerB",
"agentCardUrl": "http://<PEER_IP>:18800/.well-known/agent-card.json",
"auth": {"type": "bearer", "token": "<PEER_TOKEN>"}
}
]'
openclaw gateway restart
為實現雙向通訊,雙方需互相新增對方為對等節點並重新啟動。
發送訊息
外掛程式附帶一個封裝官方 @a2a-js/sdk 客戶端的協助腳本。
node <PLUGIN_PATH>/skill/scripts/a2a-send.mjs \
--peer-url http://<PEER_IP>:18800 \
--token <PEER_TOKEN> \
--message "Hello from Server A!"
長時間或多回合互動 可在非阻塞模式下透過輪詢執行:
node <PLUGIN_PATH>/skill/scripts/a2a-send.mjs \
--peer-url http://<PEER_IP>:18800 \
--token <PEER_TOKEN> \
--non-blocking --wait --timeout-ms 600000 --poll-ms 1000 \
--message "Discuss A2A advantages in 3 rounds"
若要針對遠端端的特定 OpenClaw agentId(OpenClaw 特有擴充功能):新增 --agent-id <ID>。
代理端工具
外掛程式註冊了一個 a2a_send_file 工具,代理可呼叫:
| 參數 | 必填? | 含義 |
|---|---|---|
peer |
是 | 已設定對等節點的名稱 |
uri |
是 | 檔案的公開 URL |
name |
否 | 檔案名(例如 report.pdf) |
mimeType |
否 | MIME 類型(省略時自動偵測) |
text |
否 | 可選說明 |
agentId |
否 | 遠端 OpenClaw 代理 ID(擴充) |
代理可透過 TOOLS.md 條目指向 a-2-a-send.mjs 腳本來學習使用此工具。
網路選項
| 選項 | 使用時機 |
|---|---|
| Tailscale(推薦) | 伺服器間安全網狀網路;無需變更防火牆。 |
| LAN | 兩台機器在同一區域網路;只需開啟 18800 通訊埠。 |
| 公開 IP | 公網暴露;必須使用 Bearer 令牌與可選防火牆規則保護。 |
設定參考(摘錄)
{
"agentCard": {
"name": "OpenClaw A2A Gateway",
"description": "A2A bridge for OpenClaw agents",
"skills": [{"id":"chat","name":"chat","description":"Chat bridge"}]
},
"server": {"host":"0.0.0.0","port":18800},
"security": {"inboundAuth":"bearer","token":"<TOKEN>"},
"routing": {"defaultAgentId":"main","rules":[]},
"peers": []
}
關鍵部分包括 agentCard、server、security(令牌輪換、MIME 白名單、檔案大小限制)、routing(預設 agentId、規則清單)和 peers(包含 URL 與認證資訊的遠端代理陣列)。
誰會使用?
- 多代理部署:不同 OpenClaw 實例需要通訊的場景(如聊天機器人叢集、社群媒體自動化機器人、分散式工具呼叫代理)。
- 研究人員:建構大規模代理生態系,希望實現自動發現與生物啟發式路由,而無需自行撰寫網路層。
- 運維團隊:已運行 OpenClaw,需要在資料中心、邊緣或雲端節點之間建立安全、零設定的橋接。
TL;DR
OpenClaw A2A 網關 是一個即裝即用的 Node.js 外掛程式,為 OpenClaw 代理提供符合標準、自動發現、具備彈性的跨機器呼叫能力。它開箱即用處理傳輸回退、部分序列化、基於技能的路由、安全性與可觀測性,僅需幾條指令即可部署。
相關
- 專案
- 專案
- 專案