Skip to content

高频面试题

A2A 协议的工作原理是怎样的?

工作原理要讲“为什么能互操作”:靠 Agent Card 自描述、标准消息模型、任务生命周期、异步更新和安全边界把远端 Agent 封装起来。

适合阶段:Agent 协议 / 系统原理面核心能力:Discovery · Message Model · Task State · Async Update · Security

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

  • A2A 为什么能让不同 Agent 协作?
    考自描述发现、标准协议对象和 opaque execution。

  • 一次请求内部发生什么?长任务怎么跟?
    考 Message 绑定 Task,再用流式、查询或推送同步状态。

  • 多轮和安全边界在哪?
    考 contextId、taskId;认证授权、Card 信任和审计。

可直接抄走的 30 秒参考答案

text
A2A 的原理可以分成四步:先通过 Agent Card 做能力发现和安全协商;然后 Client Agent 用标准 Message 把任务发给 Remote Agent;Remote Agent 在内部运行时执行任务,并把它映射成一个有生命周期的 Task;最后通过同步响应、流式事件、任务查询或推送通知返回状态和 Artifact。关键点是远端 Agent 的内部模型、工具和 workflow 对调用方是 opaque 的,调用方只依赖协议契约。

面试回答详解,知其所以然

“工作原理”比“工作流程”更偏机制:为什么两个互不了解内部实现的 Agent 能合作?答案是 A2A 把协作边界标准化,把内部执行保持封装。

1. 第一层原理:自描述发现

A2A 的起点是 Agent Card。远端 Agent 用 Agent Card 声明:

  • 自己是谁,由谁提供。
  • 对外 endpoint 和支持的协议绑定。
  • 有哪些 skills,适合处理什么任务。
  • 支持哪些输入输出模式和能力。
  • 需要什么认证方式。

Client Agent 读取这些元数据后,不需要硬编码远端私有 SDK,就能做能力匹配和调用准备。

2. 第二层原理:标准消息模型

A2A 不要求 Agent 共享内存、prompt 或工具,只要求它们交换标准 Message。Message 里可以包含一个或多个 Part,Part 再承载具体内容。

text
Message
  -> role
  -> messageId
  -> contextId / taskId
  -> parts: text / file / data
  -> metadata

这样做的好处是:自然语言、多模态内容和结构化数据都能在同一套消息模型里传递。Client Agent 不需要知道远端 Agent 内部如何理解任务,只需要把任务表达成协议认可的消息。

3. 第三层原理:任务生命周期

远端 Agent 收到 Message 后,可能立即完成,也可能创建或继续一个 Task。Task 是 A2A 的核心状态对象。

text
submitted -> working -> input-required -> working -> completed
                       -> failed / canceled / rejected

Task 让协作不再是黑盒同步调用:

  • Client 可以查询当前任务状态。
  • Remote Agent 可以表示正在处理、需要输入、已完成、失败或取消。
  • 长任务可以分阶段产出 artifact。
  • 同一个上下文里的多轮消息可以继续推进同一任务。

4. 第四层原理:异步更新

Agent 任务经常比较长,A2A 因此提供多种更新方式:

  • 同步返回:短任务直接通过 message/send 返回 Task 或 Message。
  • 流式返回:长任务通过 message/stream 发送状态更新或 artifact 增量。
  • 任务查询:Client 通过 tasks/get 查询状态。
  • 任务订阅:Client 订阅已有任务的后续更新。
  • 推送通知:Client 不保持连接时,由 Remote Agent 按配置回调通知。

这些机制共同实现 async-first:任务执行和客户端连接不必强绑定。

5. 第五层原理:opaque execution

A2A 最重要的抽象之一是远端执行保持 opaque。也就是说:

  • Client 不知道远端用哪个模型。
  • Client 不知道远端有哪些 MCP tools。
  • Client 不知道远端 prompt、memory、workflow 和重试策略。
  • Client 只依赖 Agent Card、Message、Task、Artifact 这些外部契约。

这使得远端 Agent 能独立升级内部实现,只要对外协议不破坏,协作方就不用改。

6. 第六层原理:安全与治理嵌入协议

A2A 的工作原理还包括安全控制链:

  • 发现阶段校验 Agent Card 的来源、签名、版本和缓存。
  • 调用阶段按 Agent Card 声明的认证方式获取凭证。
  • 服务端按用户、租户、任务和 scope 做授权。
  • 执行阶段隔离上下文,最小化传入敏感数据。
  • 返回阶段校验 artifact 和 message,记录 trace。

成熟系统会把来自其他 Agent 的内容视为不可信输入,而不是因为走了 A2A 就自动相信。

面试官追问3个问题

追问一:A2A 如何判断一个 Agent 是否支持 streaming?

  • 考察点:能力发现和 capability validation。
  • 回答方向:Client 应先读取 Agent Card 中的 capabilities,只有远端声明支持对应能力时才使用流式、推送或扩展 card 等操作。

追问二:为什么需要 contextId 和 taskId?

  • 考察点:多轮交互和任务追踪。
  • 回答方向:contextId 用于关联一组上下文交互,taskId 用于定位具体任务。它们让澄清、补充输入、查询状态和继续任务成为可能。

追问三:远端 Agent 返回的 Artifact 能直接执行吗?

  • 考察点:安全意识。
  • 回答方向:不能默认直接执行。Artifact 应先做类型校验、权限检查、内容扫描和用户确认,尤其是脚本、配置、邮件、交易或写操作。

扩展知识

工作原理和工作流程的区别

  • 工作原理:解释 A2A 为什么能互操作,重点是对象模型、状态机、异步机制和封装边界。
  • 工作流程:解释一次任务从发现到完成的步骤顺序,重点是先做什么、后做什么。

A2A 的互操作不是共享上下文

A2A 不要求两个 Agent 共享 memory。相反,它通过 Message、Task 和 Artifact 显式传递必要上下文。这样更适合跨组织协作,也更容易做权限和审计。

基于 MIT 协议开源