Skip to content

高频面试题

A2A 协议的工作流程是怎样的?

流程题要按时间线讲清楚:发现谁能做、如何安全调用、任务怎么跑、进度怎么同步、结果怎么交付、失败怎么处理。

适合阶段:Agent 工程 / 协议落地面核心能力:End-to-End Workflow · Auth · Task State · Streaming · Failure Handling

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

  • A2A 完整工作流程是什么?
    考发现、认证、发消息、执行、状态更新、交付 Artifact。

  • 短任务和长任务、多轮交互怎么走?
    考同步、流式、push,以及 contextId、taskId、input-required。

  • 失败取消和安全审计怎么做?
    考超时、取消、校验、人审和 trace,而不是只讲 happy path。

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

text
A2A 的流程我会按七步讲:第一读 Agent Card 做能力发现;第二根据 security schemes 做认证和授权准备;第三裁剪上下文并发送 message/send 或 message/stream;第四远端 Agent 创建或推进 Task;第五远端在内部执行,可能调用自己的工具或 MCP;第六 Client 通过同步响应、流式事件、tasks/get、订阅或 push notification 跟踪状态;第七任务完成后接收 Artifact,并做校验、审计、失败处理和必要的人审。

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

工作流程要像讲一条真实链路,而不是背协议对象。可以用“发现 -> 授权 -> 发送 -> 执行 -> 更新 -> 交付 -> 收尾”来组织。

1. 发现阶段:读取 Agent Card

Client Agent 首先找到候选 Remote Agent,并读取它的 Agent Card。

text
GET /.well-known/agent-card.json
  -> name / provider / supportedInterfaces
  -> skills / capabilities
  -> inputOutputModes
  -> securitySchemes / security

在这一阶段,Client 要判断:

  • 远端 Agent 是否擅长当前任务。
  • 输入输出模式是否匹配。
  • 是否支持 streaming、push notification、extended card 等能力。
  • 应该使用哪个 endpoint 和协议绑定。
  • 需要什么认证方式。

2. 调用准备:认证、授权和上下文裁剪

进入调用前,Client 不应该把完整用户上下文直接丢过去,而是构造最小必要任务输入。

  • 获取或刷新访问凭证。
  • 确认用户、租户、scope 和任务权限。
  • 裁剪敏感上下文,只传远端完成任务所需的信息。
  • 为请求生成幂等键、traceId 或 correlationId。
  • 对高风险任务先做策略判断或用户确认。

这一步决定了 A2A 能不能安全落地。

3. 发送消息:创建或推进 Task

Client 使用标准操作发送 Message。短任务可以用普通发送,长任务可以直接请求流式返回。

text
message/send
  -> Remote Agent 接收 Message
  -> 创建 Task 或继续已有 Task
  -> 返回 Task / Message / Artifact

message/stream
  -> Remote Agent 接收 Message
  -> 持续返回状态事件和 artifact 更新

Message 里通常会包含 role、parts、messageId、contextId、taskId 和 metadata。第一次请求可能创建新 task;后续请求可以带 taskId 继续推进。

4. 执行阶段:远端 Agent 内部处理

Remote Agent 收到任务后,在自己的 runtime 中执行。它可能:

  • 调用 LLM 做规划或生成。
  • 调 MCP Server、数据库、SaaS API 或内部服务。
  • 请求用户补充信息。
  • 调用人工审批。
  • 生成中间结果或最终 artifact。

这些内部过程不暴露给 Client。Client 只看到标准任务状态和输出。

5. 状态同步:查询、流式、订阅和推送

任务执行中,Client 有几种同步方式:

  • 同步等待:适合很短的问答或轻量任务。
  • message/stream:适合需要实时展示进度的长任务。
  • tasks/get:适合轮询任务状态。
  • tasks/cancel:用户取消或超时时终止任务。
  • tasks/subscribe:对已有任务继续订阅更新。
  • Push Notification:客户端离线或不能保持连接时接收回调。

面试中可以强调:A2A 的流程不是固定只能一种通信方式,而是按任务长度和客户端能力选择。

6. 交付阶段:返回 Artifact

任务完成后,Remote Agent 返回一个或多个 Artifact。Artifact 可以是:

  • 文本报告。
  • 文件或下载引用。
  • 图片、音视频或多模态结果。
  • JSON、表格、表单或其他结构化数据。
  • 中间产物和最终产物的多个版本。

Client 接收后要做类型校验、权限检查、引用保存、UI 展示和后续汇总。

7. 收尾阶段:审计、失败恢复和治理

完整流程还要处理非 happy path:

  • 任务失败时记录错误码、可重试性和失败原因。
  • 超时后取消任务或进入后台任务。
  • 需要输入时向用户澄清,再用同一个 taskId 继续。
  • 高风险 artifact 或动作进入人工确认。
  • 记录 Agent Card 版本、请求参数摘要、状态变化、artifact 引用和最终结果。

面试官追问3个问题

追问一:如果远端 Agent 需要用户补充信息怎么办?

  • 考察点:多轮任务处理。
  • 回答方向:远端可以把 Task 状态置为 input-required,并返回需要补充的问题。Client 收集用户输入后,带上同一个 taskId 或 contextId 发送后续 Message。

追问二:客户端断线了任务怎么办?

  • 考察点:异步任务设计。
  • 回答方向:任务状态应由远端持久化。客户端恢复后可用 tasks/get 查询,或事先配置 push notification 接收异步更新。

追问三:什么时候用 stream,什么时候用 push?

  • 考察点:通信模式选型。
  • 回答方向:用户在线、需要实时进度时用 stream;任务很长、客户端不能保持连接或需要后台通知时用 push。

扩展知识

短任务和长任务的判断

  • 短任务:一次问答、简单分类、轻量转换,通常 message/send 同步返回足够。
  • 长任务:深度研究、文件生成、跨系统操作、人工审批,优先使用 streaming、查询或 push。

一个流程图式记忆

text
Agent Card
  -> Auth & Context
  -> Message
  -> Task
  -> Status Updates
  -> Artifact
  -> Audit & Cleanup

基于 MIT 协议开源