精选·工具调用与协议

A2A 协议是什么?它要解决什么问题?

91学AI·2026/7/13·8 阅读

考察点

快手、阿里面过这道。面试官不指望你背规范细节,想看你能不能说清「为什么有了 MCP 还需要 A2A」。追问方向:A2A 的核心概念、push notification 解决什么、和 MCP 的关系。

参考答案

解决的问题:Agent 之间的对话

A2A(Agent2Agent,Google 2025 年开源,后捐给 Linux Foundation)瞄准的是 MCP 覆盖不到的空白:对等 Agent 之间的协作

真实企业场景里,AI 系统不是一个万能 Agent 加一堆工具,而是多个各有专长的 Agent:客服 Agent、数据分析 Agent、采购 Agent,可能还分属不同团队、不同厂商、不同技术栈。让这些 Agent 互相派活,面临的问题是:怎么知道对方会干什么(能力发现)?派过去的任务可能要跑几分钟甚至几天,不是一次 HTTP 请求能装下的(长任务管理)?中途需要补充信息怎么办(多轮交互)?A2A 就是为这组问题定的开放协议。

三个核心概念

Agent Card:每个 A2A Agent 在 /.well-known/agent.json 公布自己的名片——名字、能力描述、支持的技能、输入输出模态、鉴权方式。其他 Agent 读了名片就知道该怎么跟它打交道,这是能力发现机制,类似 MCP Server 的能力上报,但面向的是 Agent 而非工具。

Task:协作的基本单元。Client Agent 向 Remote Agent 发起一个 Task,任务有明确的生命周期状态机(submitted、working、input-required、completed、failed 等)。任务结果以 Artifact(产物)的形式交付,中间过程用 Message 沟通。这和工具调用的「请求-响应一次完事」完全不同——Task 是长期存在、可查询、可推进的对象。

Push Notification:针对长任务的异步通知。Agent 之间不适合让调用方挂着 HTTP 连接等结果——一个供应链分析任务可能跑两小时。Remote Agent 配了 webhook 后,任务状态变化(完成、失败、需要补充输入)会主动推给调用方,调用方收到通知再拉取结果。这解决的就是长任务下的连接管理和资源占用问题。

和工具调用的本质差别

理解 A2A 的一把钥匙:调工具是「执行一个函数」,调 Agent 是「委托一项工作」。函数调用是同步的、确定的、一次性的;工作委托是异步的、可能多轮的、对方有自己的规划和决策。所以 A2A 抽象的是 Task 而不是 function,交互里允许模糊(「帮我把这份合同审一下」),允许对方反问(input-required 状态),这些是工具协议没有的语义。

一个典型流程

主 Agent 收到用户「分析上个月销售下滑原因」,发现需要数据能力,读数据分析 Agent 的 Agent Card,确认它有 SQL 查询和报表技能,发起 Task;分析 Agent 干到一半发现需要指定时间口径,任务转 input-required 并推送通知;主 Agent 回填口径,任务继续;最终收到 completed 通知,拉取 Artifact(分析报告),整合后回复用户。

可能的追问

  • A2A 和 MCP 是竞品吗? 不是。MCP 管 Agent 调工具(垂直方向),A2A 管 Agent 调 Agent(水平方向),一个 Remote Agent 内部完全可以再用 MCP 接自己的工具。
  • A2A 的安全怎么保证? Agent Card 里声明鉴权方案(OAuth、API Key 等),Task 级别做权限校验和审计;跨组织协作时还要约定数据边界,名片里不该暴露内部实现细节。
  • 什么场景不该用 A2A? 自己系统内部几个紧密耦合的模块,直接函数调用或消息队列更划算。A2A 的价值在跨边界(跨团队、跨厂商、跨技术栈)协作,系统内用它反而引入不必要的复杂度。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.