Agent协议栈:MCP, A2A 和 AG-UI
大约 7 分钟
Agent协议栈:MCP, A2A 和 AG-UI
- Agent协议栈介绍:MCP, A2A 和 AG-UI
- A2A 协议的架构与核心组件
- A2A 协议中的典型交互流程
- AG-UI 的架构、工作流程与核心技术特点
Agent协议栈介绍
MCP (Model Context Protocol,模型上下文协议)
- 职责: 负责 Agent 与外部工具/数据之间的通信。
- 推出时间: Anthropic 公司于 2024 年 11 月推出。
- 功能: 为 AI 模型与外部资源(工具、数据源和系统)交互提供了一种标准化的方法,简化了集成过程,使得 AI Agent 无需定制连接器即可访问必要的资源。
A2A (Agent-to-Agent Protocol,智能体间协议)
- 职责: 负责 Agent 之间的通信。
- 推出时间: Google 于 2025 年 4 月推出。
- 功能: 致力于使 AI Agent 能够相互发现、沟通和协作。它规范了 Agent 在不同环境中共享任务、协商能力和协调行动的方式。
AG-UI (Agent-User Interaction Protocol,智能体用户交互协议)
- 职责: 负责 Agent 和用户界面之间的通信。
- 推出时间: CopilotKit 于 2025 年 5 月推出。
- 功能: 定位是 AI Agent 与前端应用的实时交互标准,让 Agent 与界面进行实时双向交互,将 Agent 生成的内容高效地展示给用户。
注意: 这三种协议并非竞争关系,而是构成一个互补的生态系统。


三种协议结合的优势
- 安全性: 每种协议都包含安全措施,确保 Agent 之间以及与外部系统之间进行安全且经过授权的交互。
- 模块化: 各个用户界面、Agent 和工具可以独立开发,专注于特定任务,之后再使用协议集成在一起。
- 可扩展性: 由于采用了标准化协议,因此无需彻底改造现有基础设施即可添加新的能力。
- 灵活性: 可以适配遵循协议的任何框架和工具。
A2A 协议
A2A 是一种用于远程 Agent 之间进行通信的协议 (例如不同公司的 Agent,或同一公司不同部门的 Agent 等)

Agent 通信的挑战
- 重复工作: 每次添加新的 AI Agent 时,都需要弄清楚它如何与生态系统的其他部分通信,这会导致冗余或“复制粘贴”的集成代码。
- 兼容性问题: 假设你的自然语言处理模型运行在 Python 上,而你的知识图谱托管在基于 Java 的微服务中。它们传递数据的方式可能不同,这使得它们难以协同工作。
- 扩展瓶颈: 随着引入更多专业化的 Agent(例如,图像识别、预测、机器人技术),复杂性会呈指数级增长。非标准化的沟通会变成一团乱麻,损害您快速创新的能力。
- 耦合: 传统的 Agent 整合方式需要针对每个服务的自定义接口进行编码,造成耦合。一旦逻辑发生变化,通常会破坏现有代码。
A2A 协议的愿景
- A2A = Agent-to-Agent: 一套共享的规则(例如 API 规范和底层数据模型),确保每个 Agent 以一致的方式“交流”。
- 低耦合,即插即用: 如果新部署的 Agent 遵循相同的 A2A 准则,它可以立即与系统的其余部分交换消息。
- 统一监控与安全: 标准协议通常集成安全功能(身份验证、授权)和日志记录,以便可以控制谁在何时何地做什么。
A2A 协议的架构与核心组件
- Agent Card(智能体名片): Agent 的自我描述文档,包含基本信息、API 端点、支持的能力和认证方案等,是 Agent 被发现和交互的基础。
- 身份信息(名称、版本、描述)
- 能力列表(支持的任务类型、模态,如 "文本 + 文件")
- 通信端点(URL、支持的传输方式:SSE/WebSocket)
- 认证要求(如 OAuth 2.0、API Key)
- Task(任务): 协作的核心单元,代表一个 Agent 委托给另一个 Agent 的工作请求,包含任务描述、状态、优先级等信息。
- Message(消息): Agent 之间交换的信息载体,可以包含多种类型的内容(如文本、图像、结构化数据等)。
- Artifact(工件/成果物): 任务执行的最终产出,可以是文档、数据集、分析结果等。

A2A 协议中的典型交互流程
- 服务发现: 客户端 Agent 通过获取远程 Agent 的 Agent Card 了解其能力和接口。
- 身份验证: 确保只有授权 Agent 才能相互通信。
- 通信
- 任务创建: 客户端 Agent 向远程 Agent 发送任务请求,包含任务描述和必要参数。
- 任务执行: 远程 Agent 接收任务并开始处理,可能涉及多轮消息交换。
- 状态更新: 远程 Agent 定期或在关键节点向客户端 Agent 报告任务进展。
- 结果交付: 任务完成后,远程 Agent 将成果物返回给客户端 Agent。



AG-UI 协议
为什么 Agentic 应用需要 AG-UI
- Agent 应用程序打破了 Agent 时代之前主导前端后端开发的简单请求/响应模型:客户端发出请求,服务器返回数据,客户端渲染数据,交互结束。
- Agentic 应用的特点:
- Agent 程序运行时间长,并且会持续进行中间工作——通常需要经过多个回合的会话。
- Agent 是非确定性的,可以以非确定性的方式控制应用程序用户界面。
- Agent 同时混合结构化和非结构化 I/O (例如文本和语音,以及工具调用和状态更新)。
- Agent 需要用户交互组合:例如,它们可以调用子 Agent,通常是递归调用。
- AG-UI 是一种基于事件的协议,它支持 Agent 系统的前端和后端之间的动态通信。它构建于 Web 的基础协议(HTTP、WebSocket)之上,作为一个专为 Agent 时代设计的抽象层,弥合了传统客户端-服务器架构与 AI Agent 动态、有状态特性之间的差距。
AG-UI 是 Agentic UI 的通用适配器
可以将 AG-UI 视为通用适配器,它允许任何 Agent 后端与任何前端进行通信。


AG-UI 的架构
AG-UI 采用客户端-服务器架构,实现了 Agent 和应用程序之间通信的标准化。

- Application: 面向用户的应用
- AG-UI Client: 通用的通信客户端(如 HttpAgent 或用于连接现有协议的专用客户端)
- Agent: 后端 AI Agent,用于处理用户请求并生成流式响应
- Secure Proxy: 提供额外功能并充当安全 Agent 的后端服务
AG-UI 的工作流程


AG-UI 的核心技术特点
- 事件驱动的实时交互: AG-UI 定义了标准化的事件模型,支持前后端之间保持持续的事件流通信。Agent 的一举一动(发送消息、调用工具、状态更新等)都会以事件形式推送给前端;用户的操作(输入消息、点击按钮等)也作为事件发送给后端。前端通过订阅事件流可以实时获取 AI 的进展,不用频繁轮询;后端通过监听事件可以即时响应用户输入。
- 双向协作: AG-UI 支持真正的双向协同。Agent 能够连续输出内容给用户,也能根据用户反馈调整自己的行为(Human-in-the-Loop);而前端也可根据 Agent 的状态实时渲染 UI(比如显示处理进度、工具调用的结果等),或把 UI 上的动作实时反馈给 Agent。这使得 AI 更像一个随时互动的助手而非被动回答的机器。
- 人机协作(Human-in-the-loop collaboration): 允许用户干预人工智能决策过程,适用于需要人工确认或指导的复杂工作流程。
- 标准化事件: 定义了 16 种事件类型(例如 TEXT_MESSAGE_CONTENT、TOOL_CALL_START),简化了开发过程。
- 流式传输
- 框架无关
- 实施工具进度更新
- 共享可变状态
- 快速搭建用户界面,即插即用
Reference
https://github.com/copilotkit/copilotkit
https://docs.ag-ui.com/introduction
https://google-a2a.wiki/technical-documentation/
https://www.ibm.com/cn-zh/think/topics/agent2agent-protocol
