A2A 解决什么协作问题,是否适合你的项目?

考查重点:跨服务 Agent 发现与任务交接。独立 Agent 通过能力描述发现彼此,以任务状态和产物交接工作;只有存在跨服务协作需求时才引入 A2A

本题目录

参考答案

核心回答

A2A 解决的是独立 Agent 服务之间的互操作:不同团队、框架或语言实现的 Agent,需要知道对方能做什么,交付任务,跟踪进度,并取得可继续使用的结果。它用 Agent Card 描述能力,用 Message 交换输入,用 Task 跟踪有状态任务,再用 Artifact 表达任务产物,不要求双方共享内部模型、工具和记忆。

是否适合项目,主要看有没有跨服务协作需求。以研搜参考项目为例,三个自定义业务专家在同一后端由主 Agent 委派,现有子代理调用就能完成协作,暂时没有必要仅因为“多 Agent”就增加 A2A。若以后要接入其他团队独立部署的财务或供应链 Agent,并处理耗时任务、补充输入和结果查询,A2A 才更有价值。

它统一通信和任务生命周期,具体怎么拆任务、检查结果及处理业务权限,仍需应用设计。

展开说明

1. 协作双方需要约定什么

A2A 中,一方作为客户端发起请求,另一方作为远端 Agent 提供能力;一个服务在不同交互中可以承担不同角色。

  • Agent Card:说明服务端点、支持的技能、输入输出形式、认证要求,以及流式更新等能力。客户端据此选择合适服务,但能力声明本身不等于可信证明或访问授权。
  • Message:承载双方的交流内容,可以包含文本、文件或结构化数据。客户端通过 SendMessage 交付目标、约束和输入;简单交互可以直接返回 Message,需要持续跟踪时可以返回 Task。
  • Task:由服务端分配任务 ID,保存当前状态,支持查询、更新和取消请求;contextId 可关联同一上下文中的多条消息和多个任务,不能拿它替代每个任务的身份。
  • Artifact:表示任务输出,例如带来源的分析数据或报告文件;与“正在处理”“还缺一个参数”这类交流内容分开,便于调用方消费结果。

这套契约让客户端围绕目标与产物协作,远端仍可自行选择模型、工具和内部工作流。A2A 也可以被封装成主框架中的一个工具入口,但远端任务的状态和身份不能因此丢失。

2. 长任务、补充输入和失败怎样处理

假设主 Agent 委托一个远端供应链 Agent 分析补货建议。远端发现缺少统计月份,可以把任务置于需要输入的状态;客户端补充明确条件后继续同一任务。完成时,客户端取得与该任务关联的 Artifact,再进行业务验收或归并。

进度获取可采用任务查询,也可以使用远端声明支持的流式更新或推送。客户端应保存远端任务 ID 和本地任务的对应关系;连接断开后先查询任务状态,不能直接判断任务失败并无条件重发。流式连接结束也不等于业务任务结束。

协议提供身份和状态字段,不自动实现业务上的“只执行一次”。例如创建采购单,仍需应用传递业务幂等键、查明执行结果并处理重复通知。超时表示客户端没有及时拿到结果;取消只是请求停止,也不能保证已经成功停止,更不会自动撤销已产生的外部副作用。

3. 放到研搜项目中怎样判断值不值得接

参考代码把数据库、网络搜索和知识库三个业务专家注册到主 Agent,委派与结果汇总发生在同一应用内。当前首先要把任务输入、依赖和结果验收做好;接入 A2A 并不会自动改善这些判断。

如果财务 Agent 由另一团队独立维护,只愿暴露“生成预算分析”这一能力,其内部数据库、工具和规划不向研搜开放,就适合通过 A2A 交互。可以按以下链路扩展:读取并核验 Agent Card,取得所需凭据,发送分析目标和约束,记录远端任务 ID,处理补充输入,取得产物后检查口径和来源,再交主 Agent 汇总。这是扩展设计,当前参考代码没有实现这条远程链路。

选型还应看对方是否兼容同一协议版本、任务是否需要持续交互,以及统一协议能否减少重复适配。如果只是一次稳定的计算或查询,现有函数、业务 API 或 MCP 工具接口往往已经足够。

常见追问

A2A、MCP 和 SubAgent 有什么区别?

SubAgent 是任务分工和运行方式,可以在当前应用内,也可以通过远程服务实现。A2A 是独立 Agent 服务交换消息、任务和产物的协议。MCP 为模型应用连接工具、资源等能力提供标准接口。三者可以组合:主 Agent 通过 A2A 委托远端专家,远端专家再通过 MCP 使用自己的工具。不能按“出现多个 Agent”就断定必须使用 A2A,也不能把 MCP 限定为只能同步调用。

接入 A2A 后还需要自己的调度器吗?

通常仍然需要。谁来拆任务、哪些任务可以并行、依赖怎样满足、两个结果冲突时按什么标准处理,属于应用的调度与验收逻辑。A2A 没有强制所有 Agent 点对点互联,也没有替应用决定这些策略。

对接时最容易忽略什么?

先核对协议版本,再核对服务声明与实际能力。按当前发布的 A2A 1.0.0 规范,协议协商使用主次版本 1.0;Agent Card 中 Agent 自身的版本和接口支持的协议版本含义不同,不能混为一谈。业务上还要核对认证、任务和产物访问范围、超时后的查询方式以及重复执行处理。对方任务显示完成,只表示其流程到达完成状态,仍需检查产物是否满足本次请求。

对应教程

  • LangGraph 多智能体与 A2A:阅读 Agent Card、任务、消息和产物的分工,建立内部多 Agent 协作与跨服务协议的区别;具体版本和对象行为以本文引用的现行官方规范为准。
  • 研搜配套源码:主 Agent 注册与委派:对照三个自定义业务专家及主 Agent 的调用边界,理解为什么同一后端的子代理协作不必先引入远程协议。

参考资料

  • 国内:WeThinkIn:MCP 与 A2A 协议高频考点:参考独立 Agent 互操作、能力发现和任务产物的区分,用于判断服务边界是否值得采用 A2A。
  • 国内:zero2Agent:多 Agent 协作:采用 A2A 与 MCP 的职责划分,说明正文中主 Agent 委托远端专家、专家再连接自身工具的组合方式。
  • 国内:Datawhale:第十章 智能体通信协议:借鉴协议实现、工具封装和 Agent 集成的分层,说明正文中远端协作如何接入现有框架;教学实现不直接作为现行 SDK 接口。
  • 国外:A2A Project:A2A 1.0.0 规范:依据 SendMessage、Task、Message、Artifact、版本协商和取消语义,说明正文中简单响应、长任务跟踪与取消重试的边界。
  • 国外:A2A Project:A2A 与 MCP 的详细比较:依据 Agent 服务互操作与工具资源连接的分工,解释正文中 A2A 和 MCP 如何互补,以及选型为何取决于服务边界。

相关面经

10 篇

百度

前端开发工程师
秋招
查看原面经 →
Skills、MCP、A2A有什么区别?

快手

后端开发工程师(AI 应用)
秋招
查看原面经 →
a2a和mcp

哔哩哔哩(B站)

Agent 应用开发工程师
二面
查看原面经 →
项目追问
A2A协议和你的项目场景匹配度

哔哩哔哩(B站)

Agent 应用开发工程师
一面
查看原面经 →
A2A?

阿里巴巴

AI
秋招一面
查看原面经 →
A2A 类似于多agent,什么样的任务适合
展开剩余 5 篇面经

佰聆数据

AI 应用开发工程师
实习一面
查看原面经 →
介绍一下A2A协议和SubAgent。

腾讯元宝

面经合集社招
查看原面经 →
a2a mcp stdio sse httpstream这些协议讲一下

字节跳动

Agent
春招
查看原面经 →
了解 A2A 和 MCP 协议吗?

转转

后端开发
实习一面
查看原面经 →
e. 你了解A2A吗?

字节跳动

后端开发工程师(AI)
实习一面
查看原面经 →
你了解A2A吗?

收录题集

8 个来源,共10 份题集

Agent 核心面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

AI 智能体与大模型应用开发面试题库

didilili · ai-agents-from-zero · 1 条原题

查看题集 →

LLM、VLM 与 Agent 面试题

Datawhale · hello-agents · 1 条原题

查看题集 →

Agent 机制与项目追问

Guide · JavaGuide · 1 条原题

查看题集 →

Agent开发面试题

摸鱼酱mio · 个人整理 · 1 条原题

查看题集 →
展开剩余 5 份题集

LLM 工具调用面试题

小林 Coding · 个人整理 · 1 条原题

查看题集 →

概念考察:Harness Engineering、Context Engineering 与前沿范式

Onefly · zero2Agent · 1 条原题

查看题集 →

AIGC时代AI Agent基础

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

MCP与A2A协议

Rocky Ding · AIGC-Interview-Book · 5 条原题

查看题集 →
展开其余 2 条原题

Agent 工程追问

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题