A2A 协议解决什么问题?和 MCP 是竞争还是互补?

Q3-11A2A 协议常见A2AAgent CardJWSopaque任务状态机AP2跨组织协作

谁在问:头部 AI 公司与平台团队二面;用来看你是否跟得上 2026 协议层演进,以及会不会过度设计

口语化问法

  • A2A 你了解吗?它跟 MCP 是不是打架的?
  • Agent 之间通信,为什么不能直接把对方包成一个 MCP 工具?
  • 你们内部有多个 Agent,会考虑上 A2A 吗?

考察意图

这题有两个坎,一个向上一个向下:

  1. 向上:能不能说清 A2A 与 MCP 的分工,并且答到 v1.0 的关键设计(Agent Card 的发现与签名、任务状态机、opaque)。只会说"一个管工具一个管 Agent"是及格,说不出为什么必须分开是没读过。
  2. 向下:会不会过度设计。第三个口语化问法是陷阱——公司内部几个 Agent 之间用不上跨组织协议,直接进程内调用或共享编排框架更简单也更可观测。上来就说"内部也该用 A2A 统一起来"的人,面试官会怀疑你的工程判断。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

互补,不竞争。 分工很清楚:

  • MCP 管 Agent → 工具:我怎么拿到并调用一个能力。工具是我知道内部行为的、确定性的东西。
  • A2A 管 Agent → Agent:我怎么把一个任务委托给另一个 Agent。对方是个自治黑盒——用什么模型、调几个工具、跑几步,我不知道也不需要知道。

A2A 的核心设计词就是 opaque(不透明):双方不暴露内部实现。这既是商业上的必要(对方的编排就是它的核心资产),也是工程上的解耦(对方换实现不该打崩我)。

截至 2026-08,A2A 已在 2026-04-09 发布 v1.0,由 Linux Foundation 中立托管,150 多家组织参与。技术上是 HTTP + JSON-RPC 2.0,配合 SSE 推送任务进展;能力发现靠 Agent Card(放在 /.well-known/agent-card.json)。一个系统里两者常常同时存在:我的 Agent 用 MCP 接工具,同时通过 A2A 对外提供服务或委托任务。

90

90 分答案(有生产经验的回答)

补三层。

1. 为什么不能"把对方 Agent 包成一个工具"就完事? 技术上能凑合,但三处语义对不上:

  • 耗时:工具调用的心智模型是"调了就返回",跨 Agent 的任务可能跑几分钟到几天。所以 A2A 把任务(Task)做成一等公民,有完整的状态机——v1.0 定义九个状态,归成 Running / Paused / Finished 三组,配 SSE 推送进展。
  • 中断与人工介入:委托出去的任务可能需要等待补充信息或对方的人工审批,这是 Paused 组存在的意义;工具调用没有这个语义。
  • 信任边界:对方是另一个组织,需要身份验证与能力声明的可信性——这是 Agent Card 要签名的原因。

2. Agent Card 的签名细节值得说。 Card 用 JWS(RFC 7515) 签名,并且要求先按 RFC 8785(JCS)做 JSON 规范化再签。为什么需要规范化:同一份 JSON 用不同库序列化,键顺序和空白可能不同,字节流一变签名就验不过;先规范化才能让签名稳定可验。不签名的后果很直接——攻击者伪造一份能力更强的 Card,把你的任务骗过去,而你连数据发给谁了都不知道。

3. 配套的 AP2(Agent Payments Protocol)也要知道。 跨组织委托一旦涉及付费(对方的服务是收费的、或者任务本身就是采买),就需要标准化的授权与支付语义——额度、授权凭据、可核验的交易记录。这也解释了 A2A 生态的野心:它想支撑的是跨组织的 Agent 市场,不只是消息传递。

4. 三段式看 A2A。

  • 解决什么:跨信任边界的任务委托、长任务的状态跟踪与恢复、能力发现与身份验证、标准化的失败与授权语义。
  • 代价是什么:多一层协议与运维;opaque 带来调试困难与责任界定难(对方失败你只拿到一个状态码);失败模式复杂(超时、部分完成、需要补偿);生态尚在早期,实现质量参差。
  • 什么时候不该用自家内部的多 Agent 编排——同一个团队、同一套可观测体系,直接进程内调用或用编排框架更简单、trace 更完整、调试更容易;确定性的短耗时能力——做成工具或普通 API 就够了;不需要跨组织信任验证的场景,签名和 Card 那套纯属负担。

截至 2026-08 的一句现实判断:规范已经 1.0 且治理中立,但真正跨组织的生产部署仍在早期,大多数团队的"多 Agent"其实还是内部编排。所以面试里最稳的表达是:知道它解决什么,也知道自己现在还用不上它。

追问链

图 1 · 五层追问树:面试官会往哪儿挖
这条线两头夹:向上考 v1.0 细节,向下考会不会过度设计

  1. 什么时候把对方做成 MCP 工具,什么时候做成 A2A 的 Agent?

    期望四条判据:① 自治判断(自己决定步骤 → Agent,输入输出确定 → 工具);② 耗时(秒级 → 工具,分钟到天级 → Agent);③ 信任边界(跨组织要身份与能力验证 → A2A);④ 实现该不该暴露 → opaque 正为此而设。四条都不成立还上,是为协议而协议
    信号给多维判据还主动补反向判断 → 有工程判断;答「A2A 更先进所以优先用」→ 跟风
  2. opaque 是设计目标,那出了问题怎么调试、怎么定责?

    期望不透明的是实现,状态必须透明:① 关联 id 跨边界透传让双方 trace 对上;② 契约化——「失败了」没法定责,「因缺字段 X 失败」才行;③ 存档 + Card 版本签名留痕当证据;再加 SLA 与降级路径。能容忍多不透明,取决于这次委托可不可逆
    信号区分「实现不透明 / 状态必须透明」并挂钩动作可逆性 → 想清楚了;答「黑盒没法调试」→ 不知道契约才是解法
  3. Agent Card 为什么必须签名?为什么还要先做 JSON 规范化?

    期望签名防冒充篡改——/.well-known/agent-card.json 是发现入口,入口可伪造后面全白搭。先按 RFC 8785 规范化是因为 JSON 序列化不唯一:键顺序、空白、Unicode 转义一变,JWS 验签就挂。签名不等于可信,信任根与吊销另管
    信号能解释「序列化不唯一导致验签失败」并指出签名不等于可信 → 读过规范;只答「签名保证安全」→ 套话
  4. 委托的任务跑到一半要等人工审批,或者对方挂了,客户端怎么办?

    期望九态三组(Running/Paused/Finished)的用途:Paused = 任务还活着但在等审批。客户端要能长期挂起、被 SSE 唤醒,也要能主动查询(SSE 断线是常态);再处理超时、断线重建、重试幂等(重发不能变两个任务)、部分完成的补偿;涉费走 AP2 控额度
    信号主动提「SSE 会断、必须能主动查询」和「部分完成要补偿」→ 做过长任务;只答「等它返回」→ 没考虑跨进程失败模式
  5. 委托出去的外部 Agent 替你给客户发了一封错误的邮件,怎么止血、定责、防复发?

    期望止血:预置开关关掉委托链路,切回本方或人工 → 排影响面(几封、给了谁、错在哪)→ 主动致歉纠正。定责靠留痕:我方任务定义、对方状态与原因码、当时的 Card 版本与签名——多数事故真相是授权太宽而非对方恶意。防复发:不可逆动作不外包,委托对方生成、执行留在本方,中间加策略校验;配套 AP2 额度与可撤销窗口、影子模式、SLA 写进合同、case 进回归集
    信号根因归到授权边界而不是对方水平、并给出「生成外包、执行自留」→ 设计过跨组织协作;只答「找对方赔偿」→ 没抓住本质
两头试探的一题:第 3、4 层验你读没读过规范(JWS + RFC 8785、九态三组),第 1、5 层验你会不会过度设计、会不会乱授权 —— 后者才是淘汰位。

评分要点

  1. 明确 A2A 与 MCP 互补:Agent→工具 vs Agent→Agent
  2. 说得出核心设计词 opaque 及其双重动机(商业保护 + 工程解耦)
  3. 知道任务是一等公民:九态分 Running / Paused / Finished,SSE 推进展
  4. 知道 Agent Card 位于 /.well-known/agent-card.json,用于能力发现
  5. 知道 Card 需 JWS 签名 + RFC 8785 规范化,并能解释规范化的必要性
  6. 说得出代价:调试与定责困难、失败模式复杂、生态早期
  7. 能说出什么时候不该用(内部编排、确定性短任务)
  8. 加分:知道配套的 AP2 支付授权语义
  9. 加分:知道 v1.0 于 2026-04-09 发布、Linux Foundation 中立托管(截至 2026-08)

常见错误

「A2A 是要取代 MCP 的」或「MCP 也能做多 Agent 通信所以不需要 A2A」——分工没理清。
只会说"一个管工具一个管 Agent",追问"为什么不能把对方包成工具"就答不下去。
内部几个 Agent 就要上 A2A——过度设计,面试官很在意这条。
把 Agent Card 说成"文档/说明书",不知道它是可验签的能力声明与发现入口。
不知道签名要先做 JSON 规范化,或认为签了名就等于可信(忽略信任根与吊销)。
只讲协议要素,说不出跨组织带来的失败模式(超时、部分完成、补偿、定责)。
把不可逆的高危动作委托给外部 Agent 而不设执行侧闸门。

关联学习