主题
高频面试题
什么是 A2A 协议,它的核心架构及主要组件有哪些?
这道题不是让你背 A2A 的缩写,而是看你能否把“Agent 调 Agent”的架构边界、发现机制和任务模型讲清楚。
面试官角度分析,想考什么
A2A 是什么?核心架构怎么画?
考 Client/Server Agent、Agent Card、Task、Message、Artifact。主要组件各自干什么?
考发现、发消息、跟踪任务、交付产物。为什么强调 opaque?和普通 REST 差在哪?
考调用方不控制内部模型和工具,只依赖任务协议和生命周期。
可直接抄走的 30 秒参考答案
text
A2A 是 Agent2Agent Protocol,主要解决独立 Agent 之间如何发现能力、委托任务、交换消息、跟踪状态和交付产物。它的架构里通常有 Client Agent 和 Remote Agent:Client 读取远端的 Agent Card,判断能力和认证方式,然后通过 A2A Server 发送 Message 或创建 Task;Remote Agent 在自己的运行时里执行任务,过程中更新 TaskStatus,最后返回 Artifact。核心组件包括 Agent Card、Skill、Message、Part、Task、TaskStatus 和 Artifact。重点是远端 Agent 对调用方保持 opaque,只暴露协作契约,不暴露内部实现。面试回答详解,知其所以然
A2A 的核心不是“多几个 HTTP 接口”,而是把跨团队、跨框架、跨厂商的 Agent 协作抽象成标准协议。调用方只看远端 Agent 对外声明的能力和任务接口,不需要知道它内部怎么推理和调工具。
1. A2A 的定位
A2A 解决的是这个问题:
text
一个 Agent 想委托另一个独立 Agent 完成任务
-> 先发现能力
-> 再发送任务和消息
-> 再跟踪状态
-> 最后接收 artifact它适合跨组织、跨产品、跨框架的协作。比如企业助理把“审合同”交给法务 Agent,把“查客户记录”交给 CRM Agent,把“生成总结”交给写作 Agent。每个远端 Agent 可以用不同模型、不同工具、不同运行时,但对外遵守同一套协作协议。
2. 核心架构
一个典型 A2A 架构可以这样理解:
text
User
-> Client Agent / Coordinator
-> 读取 Agent Card 做能力发现
-> A2A 请求:message/send 或 message/stream
-> Remote Agent / A2A Server
-> Agent Runtime
-> Task Store / State Store
-> Tools / MCP / 内部 API
-> Artifact Store- Client Agent:发起协作的一方,负责理解用户目标、选择远端 Agent、构造消息、跟踪任务和汇总结果。
- Remote Agent:接收委托的一方,负责执行任务、维护状态、返回消息或 artifact。
- A2A Server:远端 Agent 对外暴露的协议入口,承载发送消息、查询任务、取消任务、订阅更新等操作。
- Agent Runtime:远端 Agent 内部真正执行任务的运行时,可能是 ADK、LangGraph、AutoGen 或自研系统。
- Task Store:保存任务状态、上下文、历史消息、重试和取消信息。
- Artifact Store:保存报告、文件、结构化结果、多模态内容等交付物。
3. 主要协议对象
A2A 的组件可以按“发现、交互、执行、交付”四组记:
- Agent Card:Agent 的能力名片,描述名称、提供方、endpoint、能力、技能、输入输出模式、安全方案和支持的协议绑定。
- Agent Skill:Agent Card 中更细的能力条目,用来说明这个 Agent 擅长处理哪些任务。
- Message:Agent 间交换的信息,通常带 role、messageId、parts、contextId、taskId 等字段。
- Part:Message 或 Artifact 的内容单元,可以表达文本、文件、结构化数据等多种内容。
- Task:一次委托任务的生命周期实体,包含 taskId、contextId、status、history、artifacts 等。
- TaskStatus / TaskState:任务当前状态,例如已提交、处理中、需要输入、完成、失败、取消等。
- Artifact:任务产物,可以是最终报告、文件、图片、表格或结构化数据。
- Streaming Event:长任务的实时状态或 artifact 增量更新。
- Push Notification Config:客户端不适合保持长连接时,用通知方式接收任务更新。
4. 为什么这些组件重要
A2A 的架构设计服务于几个工程目标:
- 发现可标准化:Agent Card 让调用方先知道谁能做、怎么连、需要什么认证。
- 任务可追踪:Task 不是一次函数返回,而是可查询、可取消、可恢复的生命周期。
- 内容可扩展:Part 和 Artifact 让协议不局限于纯文本。
- 执行可封装:Remote Agent 内部可以隐藏模型、prompt、工具和策略。
- 长任务可承载:Streaming 和 Push 支持从秒级问答到小时级研究或人工审批。
5. 生产落地的架构边界
生产里不能只把 A2A Server 暴露出去就算完事。还需要:
- 对 Agent Card 做来源校验、签名验证、版本管理和缓存策略。
- 对每个 A2A 请求做身份认证、租户隔离、任务级授权和审计。
- 对 Message 和 Artifact 做输入输出校验,防止 prompt injection 和数据泄露。
- 对长任务做超时、取消、幂等、重试、补偿和人工确认。
- 对 Remote Agent 的内部工具调用做最小权限,避免一个 Agent 拿到过宽能力。
面试官追问3个问题
追问一:Agent Card 和 Task 谁更核心?
- 考察点:是否理解发现和执行的关系。
- 回答方向:两者都核心。Agent Card 是协作前的发现和契约,Task 是协作中的生命周期对象。没有 Card 难以路由,没有 Task 难以跟踪长任务。
追问二:为什么 A2A 要支持 Artifact,而不是只返回文本?
- 考察点:多模态和生产交付意识。
- 回答方向:真实任务常输出报告、文件、图片、表格、结构化对象等。Artifact 让结果有身份、类型、版本和可引用性,比纯文本消息更适合工程系统。
追问三:A2A Server 是否等于 Agent Runtime?
- 考察点:协议入口和执行引擎的边界。
- 回答方向:不等于。A2A Server 是对外协议层,Agent Runtime 是内部执行层。Runtime 可以换框架,只要对外协议契约稳定。
扩展知识
A2A 不是单纯的 API Gateway
API Gateway 通常管理接口流量,A2A 更关注 Agent 协作语义。它不仅要能发送请求,还要表达能力发现、任务生命周期、多轮交互、状态更新和 artifact 交付。
A2A 和内部多 Agent 框架的区别
- 内部框架:适合单一代码库内的 planner、worker、critic 等角色编排。
- A2A 协议:适合独立部署、独立权限、独立团队维护的 Agent 之间互操作。
一张图记住组件关系
text
Agent Card = 能力发现
Message + Part = 协作沟通
Task + TaskStatus = 生命周期管理
Artifact = 结果交付
Security + Trace = 生产治理