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 的三種部分類型 – TextPartFilePart(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": []
}

關鍵部分包括 agentCardserversecurity(令牌輪換、MIME 白名單、檔案大小限制)、routing(預設 agentId、規則清單)和 peers(包含 URL 與認證資訊的遠端代理陣列)。


誰會使用?

  • 多代理部署:不同 OpenClaw 實例需要通訊的場景(如聊天機器人叢集、社群媒體自動化機器人、分散式工具呼叫代理)。
  • 研究人員:建構大規模代理生態系,希望實現自動發現與生物啟發式路由,而無需自行撰寫網路層。
  • 運維團隊:已運行 OpenClaw,需要在資料中心、邊緣或雲端節點之間建立安全、零設定的橋接。

TL;DR

OpenClaw A2A 網關 是一個即裝即用的 Node.js 外掛程式,為 OpenClaw 代理提供符合標準、自動發現、具備彈性的跨機器呼叫能力。它開箱即用處理傳輸回退、部分序列化、基於技能的路由、安全性與可觀測性,僅需幾條指令即可部署。

相關

  • 專案
  • 專案
  • 專案