Skip to content

高频面试题

什么是 A2A 协议,它的核心架构及主要组件有哪些?

这道题不是让你背 A2A 的缩写,而是看你能否把“Agent 调 Agent”的架构边界、发现机制和任务模型讲清楚。

适合阶段:Agent 架构 / 多 Agent 系统面核心能力:Protocol Boundary · Agent Card · Task Lifecycle · Artifact

面试官角度分析,想考什么

  • 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 = 生产治理

基于 MIT 协议开源