openclaw-a2a-gateway
OpenClaw生态的A2A v0.3.0协议网关,让不同服务器上的AI Agent自动发现彼此并安全通信
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
OpenClaw生态的A2A v0.3.0协议网关,让不同服务器上的AI Agent自动发现彼此并安全通信
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在公司跑着一个专属 AI 助手(Agent),处理日常事务;在家里的服务器上跑着另一个专注代码的 AI 助手。在传统架构下,这两个 Agent 完全隔离,无法协作。
但如果它们能像公司同事那样——发现彼此、了解对方的技能、直接发消息协作——会怎样?这正是 OpenClaw A2A Gateway 正在做的事。
OpenClaw A2A Gateway 是 OpenClaw 生态的 A2A(Agent-to-Agent)协议插件,实现了 Google 主导的 A2A v0.3.0 规范,让不同服务器上的 OpenClaw Agent 能够互相发现、互相通信——零配置即可启动。
图1:OpenClaw 社区用户的 A2A 多 Agent 协作场景
在 A2A 协议出现之前,多个 AI Agent 之间的通信没有统一标准。Agent A 要和 Agent B 通信,必须预先知道 B 的地址、端口、认证方式——这就像在没有电话簿、没有共同语言的时代让人和人互通。
Google 于 2025 年提出了 A2A(Agent-to-Agent)协议,目标是让不同框架、不同服务商构建的 Agent 能够用统一的方式互相发现和通信。协议核心是 Agent Card(类似于电话簿上的名片):每个 Agent 公布自己的名称、技能、端点地址,其他 Agent 就能动态发现并路由消息。
OpenClaw 是 2026 年崛起的开源 AI Agent 框架,特点是将 AI 助手部署在用户自控的服务器上,支持 Telegram/WhatsApp/Slack 等多渠道接入。win4r/openclaw-a2a-gateway 是 OpenClaw 生态中唯一的 A2A Gateway 实现——它让 OpenClaw Agent 能够加入更广泛的 A2A 网络。
Gateway 同时支持三种传输协议,并按优先级自动降级:
| 传输协议 | 特点 | 适用场景 |
|---|---|---|
| JSON-RPC | 最常用,支持流式(SSE) | 跨服务器首选 |
| REST | 兼容性最强,调试友好 | 防火墙严格环境 |
| gRPC | 性能最高,支持双向流 | 低延迟内网通信 |
当 JSON-RPC 不可用时,Gateway 自动切换到 REST,再不行就降级到 gRPC——用户无需任何配置。这种 Transport Fallback 机制借鉴了生物学中的冗余信号通路设计:主通路失效时,备用通路自动接管。
最令人印象深刻的设计是路由算法。Gateway 使用 Hill 方程(1910年生物化学经典公式)来计算目标 Peer 的亲和力评分:
score = affinity^n / (Kd^n + affinity^n)
这不是花哨的营销词汇。Hill 方程在生物学中描述酶与底物的结合曲线——在 Gateway 中,它被用来给多维度因素(技能匹配度、标签相关性、历史成功率)打分。Kd 类似「解离常数」,控制评分曲线的陡峭程度;n 是 Hill 系数,控制协同效应的强度。
路由决策还支持规则引擎——按消息内容中的关键词、来源标签或目标 Agent ID 精确路由到特定 Agent。这对于大型多 Agent 团队尤为重要:不同 Agent 专注不同领域(代码审查、数据分析、客服),Gateway 负责把任务分发到正确的 Agent。
新 Peer 如何被发现?Gateway 实现了三种互补的发现机制:
_a2a._tcp SRV + TXT 记录在局域网或互联网范围发现其他 Gateway这三种机制共同构成了一个自组织的 Peer 网络——类似蚂蚁窝中蚂蚁通过信息素发现食物的过程。
项目采用 TypeScript 编写,源码分布在以下目录:
| 目录 | 职责 | 关键文件 |
|---|---|---|
src/ | 核心逻辑 | client.ts, executor.ts, routing-rules.ts |
src/internal/ | 基础设施 | security.ts, envelope.ts, metrics.ts, outbox.ts |
src/internal/ | 传输层 | transport.ts, transport-fallback.ts |
src/internal/ | 可靠性 | peer-retry.ts, peer-health.ts, task-recovery.ts |
src/internal/ | 发现 | dns-discovery.ts, quorum-discovery.ts, dns-responder.ts |
cli/ | 命令行工具 | bench, card, discover, health, send, status, stream, trace |
插件通过 openclaw.plugin.json 注册到 OpenClaw 核心,激活时在 Gateway HTTP 服务上挂载三个端点:
/.well-known/agent.json — Agent Card 发现端点/a2a/jsonrpc — JSON-RPC 传输/a2a/rest — REST 传输gRPC 服务监听在 HTTP 端口 +1 的端口上。任务状态通过 SSE(Server-Sent Events)流式推送,支持心跳保活。
关键依赖:
@a2a-js/sdk:Google A2A 协议的官方 JS/TS SDK(负责 JSON-RPC/REST/gRPC 的编解码)@bufbuild/protobuf:高性能 Protocol Buffers 编译工具(gRPC 底层)@grpc/grpc-js:gRPC Node.js 实现express:HTTP/REST 层框架ws:WebSocket 实现(长连接场景)multicast-dns:mDNS/Bonjour 实现测试覆盖达 486 个用例,分布在 tests/ 目录中,包括基准测试、集成测试、兼容性矩阵测试等。
Gateway 在可靠性上的设计相当扎实,融合了多个生产级系统的最佳实践:
四态熔断器:借鉴金融/电网领域的断路器模式,实现了 closed → desensitized → open → recovering 四个状态。当 Peer 持续失败时进入 open 状态拒绝请求,防止雪崩;经过指数退避恢复后进入 recovering 状态,逐步探测是否恢复。
持久化任务存储:所有 A2A 任务(Task)存储在磁盘(~/.openclaw/a2a-tasks/),带 TTL 自动清理(默认72小时)和并发限制。Gateway 重启后可以恢复进行中的任务,而不是让请求石沉大海。
幂等设计:src/internal/idempotency.ts 保证同一任务的重复请求不会产生重复副作用。这在网络不稳定、需要重试的场景下至关重要。
Michaelis-Menten 软并发控制:当负载接近上限时,不是突然拒绝请求,而是逐步增加排队延迟:delay = baseDelay × load / (Km + load)——类似生物酶系统中的底物抑制效应,在达到硬限制前给系统一个柔和的压力缓冲。
作为生产级网关,安全性是必须考虑的重点:
这是该项目最大的优势之一——安装极简。只需一条命令:
openclaw plugins install openclaw-a2a-gateway
openclaw gateway restart
Gateway 会使用默认配置启动——默认 Agent Card 名称为「OpenClaw A2A Gateway」,内置默认聊天技能。用户只需在 openclaw.json 中配置其他 Peer 的 Agent Card URL 即可互联。
内置 CLI 工具提供了丰富的调试命令:a2a card 查看 Agent Card、a2a peers 查看已发现节点、a2a status 查看网关状态、a2a bench 进行基准测试、a2a trace 追踪消息路径。
值得注意的是,该插件需要 OpenClaw ≥ 2026.3.0 已安装运行,无法独立部署。对于没有使用 OpenClaw 的团队,直接使用价值有限。此外,项目没有提供 Docker 支持,在纯容器化环境中部署需要额外的自定义 Dockerfile。
A2A 协议本身也处于快速发展期(当前 v0.3.0),协议层面的 breaking change 可能带来维护成本。社区文档主要依赖多语言 README,暂无独立的文档站点。
从更宏观的视角看,A2A 协议和 Gateway 的兴起代表了一种范式转变:AI Agent 不再是孤立的对话系统,而是能够组队协作的智能体网络。
OpenClaw A2A Gateway 的价值在于:它将 OpenClaw 生态接入更大的 A2A 网络,让 OpenClaw Agent 能够与未来所有支持 A2A 协议的 Agent 互通——无论是其他 OpenClaw 实例,还是来自不同厂商的 A2A 兼容服务。随着 A2A 生态的壮大,这类 Gateway 的价值将持续增长。
项目目前在 GitHub 拥有 524 颗星,社区活跃(多语言 README 覆盖10种语言),486个测试用例体现了较高的质量标准,值得关注。