A2A 协议是什么?它和 MCP 有什么区别?
🧑💻 面试官:采购 Agent 要调用外部能力,有 MCP 了,为什么还需要 A2A?
🙋♂️ 我:MCP 用来接工具,A2A 用来让 Agent 互相协作。
🧑💻 面试官:我把“生成采购方案”封装成一个 MCP 工具,里面也有 Agent。这算哪一种?
🙋♂️ 我:内部有没有 Agent,不能单独决定对外使用什么协议。
🧑💻 面试官:如果这个方案要十分钟,中途还得补一次预算,调用方怎么知道它在做什么、还能不能继续?
不要只看对方里面有没有模型,要看我们交出去的是一个能力调用,还是一项需要持续协作的任务。
面试速答(60 秒版)
A2A 是让不同 Agent 服务交换消息、委托任务和交付结果的一套协议。调用方不需要知道远端用了什么模型、框架或者工具,而是通过约定的接口了解它能做什么,并跟踪任务状态。
MCP 主要解决 AI 应用怎样接入外部能力,包括工具、资源和提示词。A2A 则更关注远端 Agent 的任务协作,例如任务正在执行、需要补充输入,最后交付了哪些结果。
不过,不能简单理解成“MCP 只能做简单调用,A2A 才能做长任务”,也不能按工具内部是否用了 Agent 分类。
在实际系统里,两者可以一起使用:采购 Agent 通过 A2A 委托分析任务,远端 Agent 再通过 MCP 查询报价。选择哪一种,要看需要对外表达什么交互过程。

知识点详解:两个 Agent 怎样把一项任务交接清楚?
为什么一句“请帮我分析”还不够?
假设采购 Agent 要委托另一个团队的 Agent 分析供应商。
如果双方只交换一句自然语言和一段回答,简单咨询还可以。但分析可能需要较长时间,中途缺预算范围,最后还要交付报告文件。调用方需要知道:任务是否已经受理、正在等待什么、结果是不是最终版本。
A2A 把这些交互整理成双方都能理解的对象和操作。它并不规定远端 Agent 该怎样思考,也不要求双方分享内部提示词和全部工具列表。
Agent Card、Message、Task、Artifact 各负责什么?
Agent Card 可以理解成远端服务的能力说明。调用方通过它了解对方支持哪些任务、交互方式和身份验证要求。它不是访问凭证,看见一个能力不等于获准使用。
Message 是双方交换的一次消息,例如提交分析要求,或者补充“预算不超过十万元”。
Task 是可以跟踪的任务对象。较复杂的处理可以用它记录执行状态,调用方根据任务标识查询进度或接收更新。
Artifact 则表示任务交付的结果,例如报告文本、报价表或文件。状态写着“完成”只说明远端声明任务结束,应用仍然需要验收报告是否符合要求。
这些对象的目的,是避免把聊天消息、任务状态和正式交付物混成一段文字。A2A 官方规范给出了具体的数据模型;实现时应按约定版本核对字段,不能混用旧版示例。
顺着采购分析走一次
调用方先读取能力说明,确认远端支持供应商分析以及所需的认证方式,然后发送任务要求。
远端受理后返回可跟踪的任务。它分析到一半发现缺少采购数量,于是把状态更新为需要输入,并说明还缺什么。调用方补充数量,远端再继续处理,最终返回分析报告这一交付物。
更新可以通过查询、流式订阅或支持的通知方式取得,并不是每个服务都必须支持所有方式。简单请求也可以直接返回消息,不必为了形式把一句回答强行做成长任务。
如果连接中断,调用方应该根据已有任务标识核对状态,而不是立刻重复创建一项采购分析。若涉及真正下单,是否重复产生副作用还需要业务幂等规则处理,协议名称本身不能保证“只执行一次”。

再看 MCP 在哪里出现
远端 Agent 分析报价时,可能通过 MCP 工具读取供应商数据。这时,MCP 表达的是应用与能力提供方之间的调用;A2A 表达的是两边 Agent 服务之间的任务合作。
当然,一个 MCP 工具内部也可能运行复杂 Agent。调用方看到的接口如果只是“提交参数、取得结果”,它仍然是在使用这个工具接口,并不会自动变成 A2A。
新版协议也会发展异步任务能力。因此,两者的边界要从整体协作模型理解,不能只拿“是否耗时”“是否流式”作为唯一标准。MCP 工具规范说明了能力发现和调用的基本方式。
面试官继续追问
使用 A2A,就不需要做鉴权了吗?
仍然需要。调用方要证明身份,服务端还要检查这个身份是否有权访问任务及其结果。
用户的原始凭证也不能不加区分地传给所有远端 Agent。任务只应携带完成协作所需的数据与授权范围,远端返回的文件、链接和指令同样需要检查。
对方返回“已完成”,就可以认为任务成功吗?
不能。假设要求比较五家供应商,报告只覆盖了三家,协议层任务完成也不代表业务目标满足。
可以检查报告的结构、来源、覆盖范围和关键约束。涉及采购审批时,分析结论与真正下单要分开,不能把远端建议直接当成执行授权。
团队内部的两个函数也需要 A2A 吗?
不一定。它们在同一进程、同一维护边界中,直接调用可能更简单。
需要跨团队、跨框架或跨系统表达能力发现与任务交互时,协议的价值才更明显。引入它以后仍要维护版本、超时和任务存储,这些工作不会自动消失。
面试速记卡
- A2A:规范 Agent 服务之间的消息、任务与结果交接。
- MCP:规范 AI 应用接入工具、资源与提示词等外部能力。
- 关键对象:能力说明、交互消息、任务状态、正式交付物。
- 判断边界:看对外提供的交互模型,不看内部是否调用模型。
- 工程底线:鉴权、幂等和业务验收仍由系统负责。