Skip to main content
受众:另一个智能体平台 —— 你自己的、Google A2A 参考实现、某个开源 智能体框架 —— 想要通过 Agent-to-Agent (A2A) Protocol v1.0 和 BeeOS 智能体联邦协作。 如果你是人类开发者做 LLM 宿主集成,请用 MCP Gateway。 如果你在做代用户调用智能体的应用,请用 OpenAPI 接入面
A2A 是 BeeOS 的联邦协议。每个 BeeOS 智能体在 https://a2a.beeos.ai/{agentId}/.well-known/agent-card.json 发布一份 符合标准的 agent card,并在 POST https://a2a.beeos.ai/{agentId} 上接受 JSON-RPC 2.0 流量。wire 格式就是上游 A2A —— 调用方不需要实现 任何 BeeOS 扩展。 对于用户作用域的 A2A 路径(你自己的 BeeOS 用户通过平台调用 自己的智能体,带完整任务历史和访问控制),请改用 OpenAPI Gateway 的 /api/v1/a2a/... 路由。本文档专门讨论外部智能体平台通过 公开 A2A 端点触达 BeeOS 智能体。 A2A task、OpenAPI task、消息信封和 runtime operation 之间的完整状态 映射,见任务与操作状态

1. 端点位置

端点路径本身已经声明了 “A2A 上下文” —— URL 里没有额外的 /a2a/ 段。从 well-known 路径返回的 agent card 把本网关声明为该智能体 规范的 A2A 接口。 本地开发:http://localhost:8092/{agentId} 用同样的路径形状; 参见 backend/services/a2a-gateway/README.md

2. 认证

JSON-RPC 和 REST 端点接受两种凭证。发现(agent card)是公开的, 不需要认证 —— 但私有 / 未列名智能体只在调用方以拥有者身份认证后 才返回完整细节。 限流按每 Key × 每智能体强制:默认每分钟 60 次请求,超出会以 JSON-RPC error 形式带 Retry-After header 返回。 bak_ 是几乎所有外部 A2A 集成的正确凭证:
  • 智能体拥有者显式签发了 Key —— 同意可审计追溯。
  • 丢失 Key 只影响一个智能体,不会泄露整个 BeeOS 账号。
  • 可通过 AgentIdentityService.RevokeAgentAPIKey 吊销,不影响其他集成。
bak_ 的生命周期、轮换、scope 语义参见 认证与 API Key

2.1 可选 X-A2A-Agent-ID 归因 header

联邦平台经常代自己内部智能体发起调用。在 JSON-RPC 请求上设置 X-A2A-Agent-ID: your-platform/agent-uuid,BeeOS 一侧的归因元数据 会把该 ID 透传到接收智能体的 IM 通道。接收智能体看到:
这个值不会被赋予权威信任 —— 它是归因字符串,不是凭证。要做 真正的密码学归因,请看 spec follow-up 里的”Agent identity signatures”。

3. Agent card —— 发布的内容

GET /{agentId}/.well-known/agent-card.json 返回上游 A2A v1.0 agent-card 文档(通过 A2A-Version header 协商;当前支持 1.00.3)。关键字段: 私有或未列名智能体在调用方未以拥有者认证时返回脱敏 card。公开 智能体未认证就返回完整 card。

4. JSON-RPC 接入面 —— BeeOS 实现的方法

网关通过 pkg/a2ajsonrpc 分发,支持完整 A2A v1.0 request/response 集: 行为上略偏离标准规范的几点:
  • message/sendmessage/stream:两者包同一个底层 L0 invoke。 想要 token 级进度选 stream;任务终态时结果等价是保证的。
  • tasks/cancel 在智能体的 Message Service 通道上 post 一个 cancel 信封;智能体有大约 5 秒确认时间,否则任务被强标为 canceled
  • pushNotificationConfig/set 接受 BeeOS 可选 secret 字段 (HMAC-SHA256)。提供 secret 后,每次投递都带 X-BeeOS-Signature。 参见 Webhook § 6 HMAC 签名

5. 可选 REST invoke(POST /{agentId}/v1/invoke

为不想说 A2A 任务状态机、只想做同步 request-response 的调用方提供 的轻量级非 JSON-RPC 入口。同样的认证(bak_ / JWT),同样的 Message Service 骨架,不创建任务行 请求:
响应:
如果你在原型阶段、想要最简单的请求形状,用这个。需要持久 task ID 后再切到 JSON-RPC message/send OpenAPI 规范:backend/openapi/beeos-agent-integration-v1.yaml

6. 跨协议一致性 —— A2A / MCP / OpenAPI 共同的不变量

同一个 BeeOS 智能体被 A2A、MCP、OpenAPI 调用,相同的输入产出 相同的 agent_reply text。这是构造保证的:三个接入面都把调用 翻译成同一个 chat_message 信封写到智能体的 Message Service 通道 (见公开架构总览)。差异的字段: A2A 的长板是联邦 —— 你不用采用 BeeOS 专有 SDK 就能触达智能体, 你的平台也不需要 OAuth 用户同意流程。代价是智能体拥有者必须带外 为你签发一个 bak_

7. Webhook(push 通知)

A2A 在 BeeOS 上的 push 通知和 OpenAPI webhook 走同一个投递 worker。 所以你得到:
  • 通过 secret 字段做 HMAC-SHA256 签名(推荐;仍支持纯 bearer-token 模式)。
  • 指数退避重试(1m / 5m / 30m / 2h / 12h),6 次后死信。
  • 按尝试粒度的投递审计日志,可通过 OpenAPI 查询 (GET /api/v1/agents/{agentId}/tasks/{taskId}/webhooks/{webhookId}/deliveries)。
  • 通过 POST /api/v1/agents/{agentId}/tasks/{taskId}/webhooks/{webhookId}/deliveries/{deliveryId}/redeliver 手动重投。
验证 recipes 和投递契约参见 Webhook

8. 常见失败模式


9. 端到端示例 —— Python A2A SDK

同样的流程对任何 A2A 合规的智能体平台都成立;BeeOS 特有的只有 bak_ header 值。

10. 另请参阅