什么是 A2A 协议
Agent2Agent (A2A) 协议是 Google 在 Cloud Next 2026 发布的跨平台 Agent 通信标准:
- 让不同公司的 Agent 能够协作
- 标准化 Agent 间消息格式
- 包含认证、能力发现、任务分发
A2A 与 MCP 的区别
| 协议 | 连接 | 场景 |
|---|---|---|
| MCP | Agent ↔ 工具 | 工具使用 |
| A2A | Agent ↔ Agent | 协作任务 |
两者互补,一起构成完整 Agent 技术栈。
OpenClaw 当前支持
截至 v2026.4.18,OpenClaw 没有原生 A2A 支持,但可以通过:
- Webhook 接收 A2A 请求
- HTTP 客户端发送 A2A 消息
- MCP 桥接转换 A2A 调用
- 自定义 Skill 完整实现
预计 OpenClaw v2026.Q3 左右会添加原生 A2A 支持。
方式 1:Webhook 接收 A2A
暴露 A2A 端点
# config.yaml
hooks:
webhooks:
enabled: true
port: 18790
endpoints:
- path: "/a2a/inbox"
token: "$A2A_SHARED_SECRET"
flow: "a2a-handler"
contentType: "application/json"
处理 A2A 消息
# workflows/a2a-handler.lobster
name: a2a-handler
args:
message:
description: "A2A 消息体"
steps:
- id: parse
tool: llm-task
args:
prompt: |
解析 A2A 消息:
- source_agent: 发送方 Agent
- task_type: 任务类型
- capabilities_required: 所需能力
input: ${message}
- id: validate
tool: lobster
args:
pipeline: "a2a-auth-check ${parse.source_agent}"
- id: execute
when: ${validate.authorized}
tool: llm-task
args:
agent: "worker"
prompt: |
执行 A2A 任务:
${parse.task}
- id: respond
tool: http-post
args:
url: "${message.response_url}"
headers:
Authorization: "Bearer $A2A_TOKEN"
body:
agent_id: "openclaw-agent"
task_id: "${parse.task_id}"
status: "completed"
result: $execute.output
声明能力
为了让其他 Agent 发现你的能力,创建 capabilities 端点:
hooks:
webhooks:
endpoints:
- path: "/a2a/capabilities"
flow: "a2a-capabilities"
# workflows/a2a-capabilities.lobster
steps:
- id: return
tool: http-response
args:
body:
agent_id: "openclaw-my-agent"
agent_type: "OpenClaw"
capabilities:
- name: "code-review"
description: "审查代码质量、安全性、最佳实践"
input_schema:
type: "object"
properties:
language: {type: "string"}
code: {type: "string"}
focus: {type: "array"}
- name: "document-translation"
description: "中英文档互译"
input_schema:
type: "object"
properties:
source_lang: {type: "string"}
target_lang: {type: "string"}
document: {type: "string"}
方式 2:发送 A2A 消息
使用 HTTP 工具
# 发送 A2A 请求到其他 Agent
- id: send-to-partner
tool: http-post
args:
url: "https://partner-agent.com/a2a/inbox"
headers:
Content-Type: "application/json"
Authorization: "Bearer $PARTNER_A2A_TOKEN"
body:
agent_id: "openclaw-my-agent"
target_agent: "partner-agent"
message_type: "task_request"
task:
description: "分析这批销售数据"
data: ${sales_data}
deadline: "2026-04-20T18:00:00Z"
response_url: "https://my-agent.com/a2a/callbacks/${task_id}"
A2A 客户端 Skill(可选)
可以封装成独立 Skill:
skills:
a2a-client:
config:
myAgentId: "openclaw-my-agent"
defaultToken: "$A2A_TOKEN"
使用:
用户:让合作方的 analytics-agent 分析这份数据
Agent:[调用 a2a-client]
[向 analytics-agent 发送 A2A 任务]
[等待回调]
分析结果已返回:...
方式 3:MCP 桥接
将 A2A 暴露为 MCP 服务器:
# 自定义 MCP 服务器,将 A2A 封装
mcp:
servers:
a2a-partner:
type: "custom"
command: "node ./mcp-a2a-bridge.js"
env:
A2A_ENDPOINT: "https://partner.com/a2a"
A2A_TOKEN: "$A2A_TOKEN"
让 OpenClaw 像使用普通工具一样调用其他 Agent。
认证和授权
共享密钥
最简单的认证:
a2a:
authentication:
type: "shared-secret"
secret: "$A2A_SHARED_SECRET"
JWT Token
生产环境推荐:
a2a:
authentication:
type: "jwt"
issuer: "my-agent.com"
audience: "a2a-network"
privateKey: "~/.openclaw/a2a-key.pem"
publicKeys:
partner-agent: "~/.openclaw/partner-public.pem"
授权列表
a2a:
authorization:
allowedAgents:
- "partner-agent"
- "analytics-agent"
capabilityAcl:
"code-review":
allowedAgents: ["partner-agent"]
"document-translation":
allowedAgents: ["*"] # 允许所有已认证 Agent
实际应用
场景 1:企业内部 Agent 协作
公司内多个部门的 Agent 协作:
财务 Agent(数据分析能力)
销售 Agent(客户知识)
产品 Agent(需求管理)
用户向财务 Agent 提问销售数据异常:
财务 Agent:
[A2A 调用销售 Agent 获取客户信息]
[A2A 调用产品 Agent 获取产品信息]
[综合分析]
[返回答案]
场景 2:B2B Agent 交易
公司 A 采购 Agent --A2A--> 公司 B 销售 Agent
采购:需要 100 台服务器,预算 50 万
销售:报价 48 万,可 15 天交付
采购:接受,生成合同
销售:发送正式合同
自动完成 B2B 交易。
场景 3:跨框架协作
OpenClaw Agent --A2A--> LangChain Agent
OpenClaw Agent --A2A--> AutoGPT Agent
OpenClaw Agent --A2A--> CrewAI Agent
不同框架的 Agent 通过 A2A 协作。
监控和调试
A2A 消息日志
# 查看 A2A 入站消息
openclaw logs --filter "a2a.inbound"
# 查看 A2A 出站消息
openclaw logs --filter "a2a.outbound"
调试工具
# 测试发送 A2A 消息
openclaw a2a test-send \
--target "https://partner.com/a2a/inbox" \
--task "test"
# 测试接收
curl -X POST https://my-agent.com/a2a/inbox \
-H "Content-Type: application/json" \
-H "Authorization: Bearer token" \
-d '{"message_type":"task_request",...}'
安全考虑
1. 严格认证
- 永远验证发送方 Agent 身份
- 使用强 token,定期轮换
- 记录所有 A2A 通信
2. 权限最小化
- 不要给所有 Agent 所有能力
- 按任务类型授权
- 限制执行范围
3. 速率限制
a2a:
rateLimits:
perAgent: "10/minute"
global: "100/minute"
4. 输入验证
- 验证消息结构
- 拒绝异常格式
- 记录可疑请求
未来展望
OpenClaw 原生支持(预计 v2026.Q3)
# 预期配置
a2a:
enabled: true
agentId: "openclaw-my-agent"
capabilities: [...]
与 Agentic AI Foundation 标准化
A2A 可能加入 Linux 基金会的 Agentic AI Foundation,与 MCP 一起成为开放标准。
行业采纳
预计 2026 Q4 - 2027 Q1 主流 AI 框架都会支持 A2A。
注意事项
- A2A 协议 1.0 刚发布,规范可能演进
- 跨公司 A2A 涉及数据传输,注意合规
- 生产部署务必使用强认证
- A2A 调用可能增加延迟,对延迟敏感场景评估
- 监控成本,A2A 可能间接消耗 Token
- 保持关注 OpenClaw 原生 A2A 支持的发布
- 在等待原生支持期间,Webhook 方案已足够实用