这是 A2A 协议的主要数据传输格式。所有请求和响应(不包括 SSE 流包装器)必须符合 JSON-RPC 2.0 规范。HTTP 请求的 Content-Type 头必须设为 application/json。方法名称遵循 {类别}/{动作} 模式,例如 message/send、tasks/get。该绑定最为通用,可穿透大多数防火墙,适合跨网络通信。
智能体可选择支持 gRPC 传输绑定。该方式使用 Protocol Buffers 版本 3 进行消息序列化,必须实现 A2AService gRPC 服务定义中声明的所有方法,行为须与其它受支持传输方式功能等效。gRPC 绑定利用 HTTP/2 多路复用减少连接开销,提供原生双向流支持,适合高性能、低延迟的内部网络场景。
智能体可选择支持 REST 风格的 HTTP+JSON 传输绑定。该方式使用适当的 HTTP 动词(GET 表示查询、POST 表示动作、PUT 表示更新、DELETE 表示移除),URL 模式遵循各方法章节中定义的路径(例如 /v1/message:send、/v1/tasks/{id})。该绑定与现有 Web 基础设施兼容,适合 Web 原生应用场景。
A2A 协议支持通过 SSE 实现流式响应。当使用 message/stream 或 tasks/resubscribe 等方法时,服务端以一个保持打开的 HTTP 连接响应,通过该连接推送 Server-Sent Events 流。每个 SSE 的 data 字段包含一个完整的 JSON-RPC 2.0 Response 对象(具体为 SendStreamingMessageResponse)。SSE 传输适用于需要实时进度更新的长时间运行任务。
对于无法或不愿维持持久连接的客户端(如移动客户端或无服务器函数),A2A 支持通过推送通知实现异步更新。客户端在发起任务时提供 webhook URL(或通过调用 tasks/pushNotificationConfig/set 设置),当任务状态发生重大变化(如完成、失败或需要输入)时,服务端主动向该 webhook 发送异步通知(HTTP POST 请求)。
除了标准的 HTTP/JSON-RPC 传输绑定外,腾讯云 TDMQ(消息队列)提供了基于 MQTT 的 A2A 传输实现,为智能体通信提供了异步消息队列能力。与标准的 HTTP 传输不同,A2A over MQTT 通过 MQTT broker 实现智能体发现和任务传递:智能体在启动时将其 Agent Card 发布为 MQTT 保留消息到发现主题(Discovery Topic),其他智能体通过订阅该主题动态发现可用智能体;任务请求通过 MQTT 发布到目标智能体的任务主题(Task Topic),智能体订阅该主题接收任务请求。这种基于消息队列的传输方式适合长时间运行任务、跨网络场景以及需要异步通信的应用场景,避免了传统 HTTP 请求可能出现的超时和断连问题。