A2A 协议的架构的核心组件是:
Agent Card 是一个 JSON 格式的元数据文档,通常发布在智能体服务域名的 /.well-known/agent.json 路径下。它描述了智能体的身份信息(名称、描述、服务提供方)、服务端点 URL、支持的协议版本、能力声明(是否支持流式响应、推送通知)、技能列表(智能体可执行的具体能力及其输入输出模式)以及安全要求(认证方案、权限需求)。客户端通过解析 Agent Card 来判断某个智能体是否适合执行特定任务以及如何安全通信。
Task 是 A2A 协议中的核心动作单元,代表一项需要跟踪的工作。每个 Task 拥有唯一标识符(id)、所属上下文(contextId)、当前状态(status)、产出物(artifacts)和交互历史(history)。Task 的生命周期由明确的状态机定义:SUBMITTED(已提交)→ WORKING(执行中)→ COMPLETED(已完成)→ FAILED(已失败)→ CANCELED(已取消)→ REJECTED(已拒绝)→ INPUT_REQUIRED(等待输入)→ AUTH_REQUIRED(等待认证)。一旦 Task 进入终态(COMPLETED / FAILED / CANCELED / REJECTED),便不可重启,后续操作必须在同一 contextId 下创建新的 Task。
Message 表示客户端与智能体之间的一次通信,包含一个角色标识(role),值为 "user"(客户端发送)或 "agent"(服务端发送),以及一个或多个 Part 对象。每个 Message 拥有唯一标识符(messageId),用于传达指令、上下文、问题、回答或状态更新。Message 是 Task 生命周期中的交互载体。
Part 是 Message 或 Artifact 中的基本内容的单位,每个 Part 具有特定类型,可以携带不同种类的数据:TextPart 包含纯文本内容;FilePart 表示文件,可通过内联 base64 编码字节或 URI 引用传输,包含文件名和媒体类型等元数据;DataPart 携带结构化 JSON 数据,适用于表单、参数或任何机器可读信息。
Artifact 代表远程智能体在执行任务过程中生成的有形输出或结果,例如生成的文档、图像、电子表格、结构化数据结果或任何其它自包含的信息片段。Task 处于 COMPLETED 状态时,应使用 Artifact 对象将生成结果返回给客户端。Artifact 由一个或多个 Part 对象组成,支持增量流式传输。