AI Agent四大协议A2A与AG-UI等关系详解
时间:2026-07-06 16:03
AIAgent四大协议组成分层协议栈:MCP负责Agent调用外部工具,A2A实现Agent间协作通信,AG-UI标准化后端到前端的实时事件流,A2UI声明式定义Agent生成的UI组件。它们并非竞争关系,而是互补协同,可按需渐进采用,共同构建智能体生态。
2026年的AI Agent生态,协议迎来集中爆发。
去年大家只需要掌握一个MCP就足够——Agent如何调用工具,MCP统一搞定。但今年突然涌现出一批“A2X”协议:A2A、A2UI、AG-UI——这些名字像是同一位产品经理在不同情绪下随手命名的,差异细微到让人怀疑人生。
更关键的是,这几个协议由不同公司推出,分别解决不同层面的问题,但其名称和描述高度相似。一旦混淆,不仅失面子,更可能在架构选型上酿成大错。
今天这篇文章,一次性帮你理清:这四个协议各自解决什么问题、处于哪一层、如何协同工作,以及你的项目该如何选择。
一、先用一个类比厘清整体格局
在深入技术细节之前,先用一个所有人都能理解的类比,把四个协议的相互关系说清楚。
想象你正在经营一家公司:
| 协议 | 类比 | 解决的问题 |
| MCP | 员工使用的办公工具(Excel、打印机、数据库) | Agent如何访问外部工具和数据 |
| A2A | 部门之间的协作流程(跨部门审批、任务委派) | Agent之间如何通信与协作 |
| AG-UI | 公司跟客户的实时通话(电话、视频会议) | Agent后端如何与前端实时交互 |
| A2UI | 发给客户的报价单模板(格式化文档、表单) | Agent如何生成用户界面组件 |
用一句话概括它们的关系:MCP解决“用什么工具干活”,A2A解决“找谁一起干活”,AG-UI解决“干完活如何实时汇报给用户”,A2UI解决“汇报时展示成什么样子”。
注意:它们并非竞争关系,而是协议栈的不同层次——就像TCP、HTTP、HTML不是竞争关系一样。
二、MCP:Agent的“工具箱”
2.1 一句话定义
这是四个协议中最为成熟、采纳范围最广的一个。如果你只想记住一个,那就是MCP。
2.2 核心能力
MCP具体定义了哪几种资源类型?三类。
| 类型 | 控制方 | 说明 | 类比 |
| Tools | 模型控制 | Agent可调用的函数 | 员工用打印机打印文件 |
| Resources | 应用控制 | 只读数据源 | 员工查看公司知识库 |
| Prompts | 用户控制 | 可复用的提示词模板 | 标准化的工作流程SOP |
2.3 传输方式
有两种方式:stdio,适用于本地进程间通信,开发调试阶段非常顺手;Streamable HTTP,生产环境推荐,支持远程调用。
2.4 生态支持
MCP是“全票通过”级别的协议——Anthropic、OpenAI、Google、Microsoft以及所有主流AI框架均支持。在AI Agent的世界里,MCP就像HTTP一样,不支持它你就无法参与游戏。
三、A2A:Agent之间的“通信协议”
3.1 一句话定义
如果说MCP解决的是“人和工具”的关系,那么A2A解决的是“人和人”的关系——只不过这里的“人”是Agent。
3.2 为什么需要A2A?
没有A2A的世界:
```
你的Agent(用LangGraph写的)
↓ 想调用同事的Agent(用CrewAI写的)
↓ 但两个框架的API完全不同
↓ 你得写一堆适配代码
↓ 换一个框架就得重写
```
有了A2A的世界:
```
你的Agent → A2A协议 → 同事的Agent
↑不管用什么框架,通信格式统一
```
用人话说:A2A就是AI Agent世界的“普通话”——无论你是用LangGraph、CrewAI还是AutoGen开发的Agent,大家都能用同一种语言沟通。
3.3 核心机制
**Agent Card(名片机制)**
每个Agent在 `/.well-known/agent.json` 路径发布一张“名片”,声明自己是谁、能做什么、如何认证:
```
{
"name": "OrderQueryAgent",
"version": "1.0",
"skills": ["查询订单", "修改地址"],
"auth": "OAuth2",
"endpoint": "https://api.example.com/agent"
}
```
用人话说:这就是Agent的LinkedIn资料——别人看一眼就知道你能做什么、怎么联系你。
**Task Lifecycle(任务生命周期)**
A2A定义了完整的任务状态机:
```
submitted → working → completed
↘ input-required(需要更多信息)
↘ failed(失败)
↘ canceled(取消)
```
**通信方式**
| 方式 | 协议 | 适用场景 |
| 同步请求 | JSON-RPC 2.0 over HTTP | 简单快速的任务 |
| 流式响应 | SSE(Server-Sent Events) | 长时间运行的任务 |
| 异步回调 | Webhooks | 任务完成后通知 |
3.4 核心设计原则:不透明性(Opacity)
A2A有一个重要的设计哲学:Agent之间只暴露能力,不暴露内部实现。
你只需要知道“订单Agent能查订单”,不需要知道它内部是用LangGraph还是CrewAI写的、用的是GPT还是Claude、数据库是MySQL还是MongoDB。
用人话说:你叫外卖,只需要知道餐厅能做宫保鸡丁,不需要知道厨师用什么锅、什么油。
四、AG-UI:Agent到用户的“实时直播”
4.1 一句话定义
AG-UI解决的是“最后一公里”问题——Agent在后端计算完毕,如何实时、结构化地传给前端展示?
4.2 为什么需要AG-UI?
没有AG-UI的时候,Agent到前端的通信没有标准:有人直接WebSocket推文本,有人用SSE推JSON,有人轮询REST API——每个框架一套格式,前端适配到崩溃。
AG-UI做的事情:定义一套标准的事件类型,所有Agent框架都按这个格式推送,前端只需要适配一次。
4.3 16种标准事件类型
AG-UI定义了16种事件,分为5大类。具体分类方式如下:状态事件、文本消息事件、UI蓝图事件、错误事件和系统事件。每种事件都有明确的语义和字段定义,确保不同框架之间的互操作性。
4.4 Snapshot-Delta模式
状态管理采用了“快照 + 增量”的模式——与React的Virtual DOM Diff思路类似:初始时发送完整的STATE_SNAPSHOT(全量状态),后续只发送STATE_DELTA(变化的部分)。
为什么这样设计?因为Agent执行过程中状态变化非常频繁(比如代码编辑器里的光标移动),每次都发全量数据太浪费带宽。只发增量,效率提升10倍以上。
4.5 传输协议
AG-UI基于SSE(Server-Sent Events)——不是WebSocket,不是gRPC,就是最朴素的SSE。
为什么选SSE而不是WebSocket?因为SSE基于标准HTTP,不需要额外的协议升级,穿透力强(防火墙友好),而且内置断线重连。对于Agent到前端的单向事件流来说,SSE是最合适的选择。
五、A2UI:Agent生成的“UI蓝图”
5.1 一句话定义
A2UI和AG-UI名字只差一个字母,但做的事情完全不同。
5.2 AG-UI vs A2UI:到底差在哪?
这是最容易搞混的两个协议,所以需要重点讲清楚。
AG-UI是“管道”——负责传输;A2UI是“包裹”——负责内容。
| 维度 | AG-UI | A2UI |
| 本质 | 运行时传输协议 | 声明式UI规范 |
| 解决的问题 | 事件如何从后端传到前端 | 传过去的UI长什么样子 |
| 类比 | 快递公司(顺丰) | 包裹里的货物(商品) |
| 数据流向 | 后端 → 前端(事件流) | Agent → 宿主应用(组件蓝图) |
| 协议类型 | 事件驱动(SSE) | 声明式JSON |
| 创建者 | CopilotKit | Google |
| 样式控制 | 不管样式 | 宿主应用控制样式 |
用人话说:AG-UI定义的是“怎么把东西送到你面前”,A2UI定义的是“送到你面前的东西长什么样”。
它们是互补关系——A2UI的UI蓝图,可以通过AG-UI的事件流传输到前端。Oracle、Google和CopilotKit已经发布了联合集成方案。
5.3 A2UI的核心思路
传统做法:开发者为Agent预先构建UI界面。
A2UI做法:Agent自己声明需要什么UI组件,宿主应用按自己的风格渲染。
```
Agent返回:
{
"type": "form",
"fields": [
{ "name": "orderId", "label": "订单号", "type": "text" },
{ "name": "action", "label": "操作", "type": "select", "options": ["查询", "退款", "修改地址"] }
]
}
↓
Web端:渲染为React Material UI风格的表单
移动端:渲染为Flutter原生表单
桌面端:渲染为Electron桌面组件
```
关键词:声明式 + 宿主控制样式。Agent只说“我需要一个表单,有两个字段”,不管最终长什么样——具体样式由你的应用决定。
5.4 A2UI vs MCP Apps
顺便说一下另一个容易搞混的概念——MCP Apps。
| 维度 | A2UI | MCP Apps |
| UI控制权 | 宿主应用控制 | MCP Server控制 |
| 渲染方式 | 原生组件 | iframe沙箱 |
| 跨平台 | Web/移动/桌面 | 仅Web |
| 适用场景 | 动态UI,融入应用风格 | 第三方完整体验 |
用人话说:A2UI是“你给我菜谱,我用自家厨房做”;MCP Apps是“你直接给我做好的外卖,我只管吃”。
六、四个协议如何构成完整的Agent协议栈
把四个协议放在一起,看看它们如何从底层到顶层构成完整的Agent协议栈。
6.1 分层架构
```
┌─────────────────────────────────┐
│ A2UI(UI层) │ Agent生成什么样的界面
├─────────────────────────────────┤
│ AG-UI(交互层) │ Agent和用户如何实时通信
├─────────────────────────────────┤
│ A2A(协作层) │ Agent之间如何发现和协作
├─────────────────────────────────┤
│ MCP(工具层) │ Agent如何访问工具和数据
└─────────────────────────────────┘
```
类比网络协议栈:
| Agent协议栈 | 网络协议栈 | 职责 |
| A2UI | HTML/CSS | 定义内容和样式 |
| AG-UI | HTTP | 传输协议 |
| A2A | TCP | 可靠通信 |
| MCP | 网卡驱动 | 底层接口 |
6.2 一次完整请求的数据流
```
用户在前端点击"查询订单"
↓
AG-UI(RUN_STARTED事件)
前端→Agent后端
↓
MCP(调用订单数据库工具)
Agent→数据库
↓
A2A(委派给物流Agent查快递)
订单Agent→物流Agent
↓
MCP(物流Agent调用快递API)
物流Agent→快递API
↓
A2A(返回结果给订单Agent)
物流Agent→订单Agent
↓
A2UI(生成订单详情 + 物流时间线的UI蓝图)
Agent生成UI声明
↓
AG-UI(STATE_DELTA + TEXT_MESSAGE流式推送)
Agent后端→前端
↓
前端渲染
用户看到订单状态和物流时间线
```
四个协议各司其职,一个不多,一个不少。
七、选型指南:你的项目该用哪些?
7.1 决策树
```
你的Agent需要调用外部工具/数据吗?
└── Yes → 上MCP ✅(必选)
你需要多个Agent协作吗?
└── Yes → 上A2A ✅
└── No → 不需要A2A
你的Agent有用户界面吗?
└── Yes → 上AG-UI ✅
└── 需要Agent动态生成UI吗?
└── Yes → 加上A2UI ✅
└── No → AG-UI就够了
你的Agent纯后台运行,没有UI?
└── MCP + A2A就够了
```
7.2 按项目类型推荐
| 项目类型 | 推荐协议 | 说明 |
| 单Agent + CLI | MCP | 只需要工具调用 |
| 单Agent + Web UI | MCP + AG-UI | 加上实时交互 |
| 多Agent后台系统 | MCP + A2A | Agent间协作 |
| 多Agent + 用户交互 | MCP + A2A + AG-UI | 完整三层 |
| 动态UI生成应用 | MCP + A2A + AG-UI + A2UI | 四层全上 |
7.3 采纳建议:渐进式
不要一开始就四个协议全上。推荐的采纳顺序:
第一步:MCP → 90%的Agent项目都需要,先让Agent能调用工具
第二步:AG-UI → 当你要给Agent做前端时加入,标准化事件流
第三步:A2A → 当你有多个Agent需要跨框架协作时加入
第四步:A2UI → 当你需要Agent动态生成跨平台UI时加入
八、常见误区澄清
误区一:“A2A和MCP是竞争关系”
错。MCP管的是Agent和工具之间的关系(纵向),A2A管的是Agent和Agent之间的关系(横向)。它们处在不同维度,完全正交。
一个Agent可以同时:通过MCP调用数据库工具,通过A2A委派任务给另一个Agent。
误区二:“AG-UI和A2UI是竞争关系”
错。AG-UI是传输管道,A2UI是内容格式。A2UI生成的UI蓝图,通过AG-UI的事件流送达前端。它们是管道和货物的关系。
CopilotKit(AG-UI的创建者)甚至参与了A2UI的设计,AG-UI对A2UI有Day-Zero兼容性。
误区三:“我用了MCP就不需要A2A了”
看场景。如果你的系统只有一个Agent调用多个工具——MCP够了。但如果你有多个Agent需要互相发现、互相委派任务——你需要A2A。
判断标准:你的Agent需要“找别人帮忙”吗?需要就上A2A。
误区四:“这些协议太多了,等标准统一再上”
等不起。MCP已经是事实标准,所有主流厂商都支持。A2A由Google推出、50+合作伙伴支持。AG-UI被Microsoft、Oracle等采纳。它们不是会被淘汰的实验品——它们就是正在形成的标准。
等等党这次要输。
九、一张表做个终极总结
| 维度 | MCP | A2A | AG-UI | A2UI |
| 创建者 | Anthropic | Google | CopilotKit | Google |
| 解决的问题 | Agent↔工具 | Agent↔Agent | Agent↔前端 | Agent→UI组件 |
| 协议层次 | 工具层 | 协作层 | 交互层 | UI层 |
| 通信方式 | JSON-RPC / stdio | JSON-RPC / SSE / Webhook | SSE事件流 | 声明式JSON |
| 类比 | 办公工具 | 跨部门协作 | 客户电话 | 报价单模板 |
| 网络类比 | 网卡驱动 | TCP | HTTP | HTML |
| 成熟度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 是否必选 | 几乎必选 | 多Agent必选 | 有前端必选 | 动态UI必选 |
| 主要支持者 | 全部主流厂商 | Google + 50家 | CopilotKit + MS + Oracle | Google + CopilotKit |
### 写在最后
2026年的AI Agent协议栈,本质上是在重演20年前Web协议栈的标准化过程。
20年前,Web世界也经历过类似的混乱期——各种通信协议、数据格式、UI标准百花齐放,最终收敛为TCP/HTTP/HTML/CSS/JavaScript这套协议栈。
现在的MCP/A2A/AG-UI/A2UI,就是AI Agent世界的TCP/HTTP/HTML。方向已经很清晰了,只是各层的具体标准还在不断演进。
对开发者来说,最实用的建议是:从MCP开始,按需叠加。不要被四个协议的名字吓到——它们各管各的,井水不犯河水。搞清楚每一层解决什么问题,选型就变成了一道简单的“对号入座”题。
一句话总结:MCP是必修课,A2A是多Agent的入场券,AG-UI是做前端的标配,A2UI是锦上添花。四个协议不是选择题,是叠加题——你的系统有多复杂,就叠多少层。