Agentic AI 架构入门(九):Agent 通信协议全景------ACP/A2A/AG-UI/MCP
课程:《Agentic AI Architectures with Patterns, Frameworks and MCP》笔记整理(第 431--463 页)
1. 协议问题与解决方案
1.1 「协议问题」
- 我们已能在封闭系统内让 Agent 推理、用工具、协作
- 但当我们的 Agent 要跟你们的 Agent 说话呢?OpenAI 的 Agent 要消费 LlamaIndex 团队构建的工具呢?
- 不同团队、不同平台、不同公司构建的 Agent 怎么互相对话?
1.2 「显而易见」的答案:自定义 REST API?------「巴别塔」
各服务说着自己的「方言」(Function-calling dialect、Microsoft Agent Framework dialect、Custom REST API......),混乱不堪。短期修复,长期架构债务巨大:
- 供应商锁定:OpenAI 的 Agent 被锁进 OpenAI 生态
- N 平方问题 :连接 100 个 Agent 需要约 5,000 个自定义集成
- 根本上不可扩展:无法扩展到全球 Agent 网络
1.3 解决方案:什么是「Agent 协议」?
正式规范(「共同语言」/「社会契约」),定义自主 Agent 和工具如何:
- 发现彼此(Discover)
- 描述能力("这是我的工具和它们做什么")
- 通信("请帮我跑这个任务")
- 交换上下文(状态、记忆、用户 ID)
目标:互操作性(Interoperability)------把「Agent(大脑)」和「Tool(功能)」解耦。
1.4 路线图:四大新兴标准
| 协议 | 全称 | 专注点 |
|---|---|---|
| ACP | Agent Communication Protocol | 广泛全面的标准(一切 Agent 交互) |
| A2A | Agent-to-Agent | Agent 对话 |
| AG-UI | Agent-User Interaction | Agent 到 UI 交互 |
| MCP | Model-Context Protocol | Agent 到工具集成 |
2. ACP(Agent 通信协议)------「一统江湖」
2.1 定义
- 广泛的开源规范 ,目标是成为所有基于 Agent 交互的通用「语言」
- 类比:HTTP 是网页的协议,ACP 想成为「任务/目标」的协议
- 是规范(specification)不是实现(implementation)------一个谁都能照着构建的蓝图
- 野心:全面互操作性------成为整个生态的单一「通用语(lingua franca)」
2.2 ACP 实际定义了什么规则?
- Task Management(任务管理):标准定义「任务/子任务/目标」
- State Synchronization(状态同步) :标准方式报告任务状态(Pending 待处理 / Running 运行中 / Completed 已完成 / Failed 失败)
- Discovery & Capabilities(发现与能力):标准 "manifest" 宣传工具/技能
- Artifact & Data Exchange(工件与数据交换):标准方式在 Agent 间传递数据(文件、数据库行、文本)
2.3 小结
- 全面的开源规范,目标:任务委派、发现、状态管理的单一通用标准
- 范围:野心大------覆盖 A2A(Agent对Agent)、A2T(Agent对工具)、A2E(Agent对环境)、A2H(Agent对人)
- 状态:新兴标准,由 AI 领袖们的协作协议支持
3. A2A(Agent 到 Agent 协议)------「Agent 聊天标准」
3.1 定义
- ACP 太全面,「一刀切」方案实现起来复杂
- A2A = 专注的通信标准 ,专为两个以上 Agent 之间的对话协作设计
- 专注点:标准化协作「群聊」或「交接」中的消息
- 类比:ACP 像完整业务流程标准,A2A 更像即时消息标准(如 XMPP)或邮件------不关心工具怎么跑,关心 Agent 怎么通信
3.2 A2A 标准化了什么?
- Message Schema(消息模式) :JSON 结构------
{"sender_id": "Agent_A", "recipient_id": "Agent_B", "session_id": "12345", "content": "{...}"} - Speech Acts(言语行为/标准「动词」) :定义意图的消息类型------REQUEST(请求) :"请执行这个任务"、INFORM(告知) :"这是......"、PROPOSE(提议)......
3.3 何时用 A2A?
- 当你的主要问题是协作,不只是工具使用
- 理想模式:Group Chat / Debate、Router & Specialist(交接对话)、Reflection(CriticAgent 给 WriterAgent 的消息)
- 核心收益:构建联邦式 Agent 系统------不同团队的 Agent 无需互相了解就能协作
- 缺口 :A2A 解决了 Agent 对 Agent------但最常见的场景是 Agent 对非 Agent(人类) 呢?
4. AG-UI(Agent 用户交互协议)------「店面前台」
4.1 定义
- ACP 全面、A2A 管 Agent 对话------还差一个关键参与者:人类
- Agent 怎么给用户发送不只是纯文本的东西?怎么动态生成按钮、表单、图表?
- 类比:A2A 是「后台办公室」标准,AG-UI 是「店面前台」标准------Agent 与用户相遇的界面
- 定义:定义 AI Agent 如何动态渲染丰富、交互式 UI 的标准和模式集合
- 转变:超越「文本进文本出」(聊天机器人)→ 目标:「生成式 UI(Generative UI) 」------Agent 根据上下文当场生成界面
- 例子:Adaptive Cards (微软,交换卡片内容的标准)、Vercel AI SDK (RSC)(从 Agent 到客户端流式传输 React 组件)
- 它是「智能体时代的 HTML」
4.2 AG-UI vs A2A/MCP:前端缺口
- BACKEND(A2A & ACP):Agent 间 JSON 通信,标注"为机器对机器(M2M)优化"
- FRONTEND(AG-UI):面向人的界面层
- ①平台无关渲染(Platform Agnostic Rendering) :Agent → 标准 Adaptive Card 消息(JSON)→ 在 Teams / Slack / Web / Mobile 上分别渲染------"Agent 不知道如何画按钮,它只是声明'我需要一个按钮'"
- ②"Human-in-the-Loop" UI:Agent 发送 → 人机交互界面(HITL 确认)
4.3 小结
- AG-UI 标准化 Agent 与人类之间的界面------启用随对话自适应的生成式 UI
- 对安全(HITL)和用户体验至关重要
5. MCP(模型上下文协议)------「Agent 的 OpenAPI」
5.1 定义
- Agent 怎么跟我现有系统 说话?怎么消费 E-Shop 微服务、产品数据库、支付 API?------这些不是"Agent",是"工具(Tools)"
- MCP = 专注、轻量的协议 ,标准化 Model(如 LLM Agent)与 Context(工具、API、数据源) 的交互
- 类比:A2A 是"Agent 的邮件",MCP 是"Agent 的 OpenAPI/Swagger"
- 核心解决的问题:Agent 到工具(A2T)通信
- 重要玩家:LlamaIndex 等专注"数据集成"问题的团队
5.2 小结
- 轻量协议:Agent 到工具通信;用标准 manifest.json 做工具发现和 schema
- 企业集成的标准------把 Agent 从专有工具中解耦
- 目标:任何工具/微服务都能被任何 Agent 消费
6. 架构师视角:协议地图与决策
6.1 三大协议不是竞争,是解决不同问题
| 协议 | 定位 | 类比 |
|---|---|---|
| ACP | 野心勃勃的「重量级」标准,统管所有 Agent 交互 | 「全套业务流程标准」 |
| A2A | 专注的「轻量级」标准,Agent 对话协作 | 「邮件/即时消息」 |
| MCP | 实用的「集成」标准,Agent 消费工具和 API | 「OpenAPI/Swagger」 |
架构师视角有 2 个截然不同的问题(协作问题 vs 集成问题)------它们不是同一个:
- Problem 1 Collaboration(A2A):"怎么让机器人协作?"(联邦群聊)
- Problem 2 Integration(A2T):"怎么让机器人与工具沟通?"(API/数据库)
- ACP → 两者都解决,是「超集协议」(全面一站式生态)
对大多数企业架构师来说,最直接最痛苦的问题是:集成(Integration)
6.2 架构师决策矩阵
IF 我的主要目标是...... 让我的现有 API 能被任何 Agent 消费
THEN 实现一个 MCP server
IF 让我的自有 Agent 团队(Writer 和 Critic)协作
THEN 用 A2A 风格内部标准
IF 从零构建一个完整、全新、全面的 Agentic 生态
THEN 评估采用完整 ACP 规范
大多数企业会从 MCP 开始
6.3 完整协议栈(现代 Agentic 系统三件套)
#mermaid-svg-kwkvmf33cTVy6OgX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kwkvmf33cTVy6OgX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kwkvmf33cTVy6OgX .error-icon{fill:#552222;}#mermaid-svg-kwkvmf33cTVy6OgX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kwkvmf33cTVy6OgX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kwkvmf33cTVy6OgX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kwkvmf33cTVy6OgX .marker.cross{stroke:#333333;}#mermaid-svg-kwkvmf33cTVy6OgX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kwkvmf33cTVy6OgX p{margin:0;}#mermaid-svg-kwkvmf33cTVy6OgX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kwkvmf33cTVy6OgX .cluster-label text{fill:#333;}#mermaid-svg-kwkvmf33cTVy6OgX .cluster-label span{color:#333;}#mermaid-svg-kwkvmf33cTVy6OgX .cluster-label span p{background-color:transparent;}#mermaid-svg-kwkvmf33cTVy6OgX .label text,#mermaid-svg-kwkvmf33cTVy6OgX span{fill:#333;color:#333;}#mermaid-svg-kwkvmf33cTVy6OgX .node rect,#mermaid-svg-kwkvmf33cTVy6OgX .node circle,#mermaid-svg-kwkvmf33cTVy6OgX .node ellipse,#mermaid-svg-kwkvmf33cTVy6OgX .node polygon,#mermaid-svg-kwkvmf33cTVy6OgX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kwkvmf33cTVy6OgX .rough-node .label text,#mermaid-svg-kwkvmf33cTVy6OgX .node .label text,#mermaid-svg-kwkvmf33cTVy6OgX .image-shape .label,#mermaid-svg-kwkvmf33cTVy6OgX .icon-shape .label{text-anchor:middle;}#mermaid-svg-kwkvmf33cTVy6OgX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kwkvmf33cTVy6OgX .rough-node .label,#mermaid-svg-kwkvmf33cTVy6OgX .node .label,#mermaid-svg-kwkvmf33cTVy6OgX .image-shape .label,#mermaid-svg-kwkvmf33cTVy6OgX .icon-shape .label{text-align:center;}#mermaid-svg-kwkvmf33cTVy6OgX .node.clickable{cursor:pointer;}#mermaid-svg-kwkvmf33cTVy6OgX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kwkvmf33cTVy6OgX .arrowheadPath{fill:#333333;}#mermaid-svg-kwkvmf33cTVy6OgX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kwkvmf33cTVy6OgX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kwkvmf33cTVy6OgX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kwkvmf33cTVy6OgX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kwkvmf33cTVy6OgX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kwkvmf33cTVy6OgX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kwkvmf33cTVy6OgX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kwkvmf33cTVy6OgX .cluster text{fill:#333;}#mermaid-svg-kwkvmf33cTVy6OgX .cluster span{color:#333;}#mermaid-svg-kwkvmf33cTVy6OgX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kwkvmf33cTVy6OgX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kwkvmf33cTVy6OgX rect.text{fill:none;stroke-width:0;}#mermaid-svg-kwkvmf33cTVy6OgX .icon-shape,#mermaid-svg-kwkvmf33cTVy6OgX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kwkvmf33cTVy6OgX .icon-shape p,#mermaid-svg-kwkvmf33cTVy6OgX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kwkvmf33cTVy6OgX .icon-shape .label rect,#mermaid-svg-kwkvmf33cTVy6OgX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kwkvmf33cTVy6OgX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kwkvmf33cTVy6OgX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kwkvmf33cTVy6OgX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} AG-UI
前端层:生成式 UI + 人类反馈
A2A
后端层:内部协作与编排
MCP
集成层:连接企业数据与服务
人类 User
Agent
其他 Agent
工具/微服务/数据源
ACP 全面标准
(超集:A2A/A2T/A2E/A2H)
- BACKEND(A2A):内部协作与编排
- INTEGRATION LAYER(MCP):连接企业数据与服务
- FRONTEND(AG-UI):渲染生成式 UI 并处理人类反馈
7. 小结
本段精华:
- 协议问题 :没有共同语言 → 「巴别塔」------各服务说着自己的「方言」→ 供应商锁定 + N² 问题(100 Agent 要 5,000 集成)+ 不可扩展
- Agent 协议 = 「社会契约」:发现彼此 / 描述能力 / 通信 / 交换上下文------目标互操作性、解耦大脑与功能
- 四大协议各管一段:ACP(一切,重量级)/ A2A(Agent 对话,轻量)/ AG-UI(Agent 到人界面)/ MCP(Agent 到工具集成)
- ACP 四大规则:任务管理 + 状态同步(Pending/Running/Completed/Failed)+ 发现与能力(manifest)+ 工件与数据交换------覆盖 A2A/A2T/A2E/A2H
- A2A :「Agent 的邮件」------消息 schema + 言语行为(REQUEST/INFORM/PROPOSE),专为群聊/交接/反思协作;能建联邦式系统
- AG-UI :「智能体时代的 HTML」------生成式 UI:Agent 声明"我需要一个按钮",卡片在 Teams/Slack/Web/Mobile 各自渲染(平台无关);对 HITL 安全和体验至关重要
- MCP :「Agent 的 OpenAPI」------manifest.json 工具发现;企业集成的解耦关键
- 协议地图:协作问题(A2A)+ 集成问题(A2T)= 两个不同问题;ACP 是「超集」两者都解决
- 决策矩阵 :让 API 被任何 Agent 消费→MCP ;自家团队协作→A2A 内部标准;从零建生态→ACP。大多数企业从 MCP 开始
- 完整协议栈三层:BACKEND(A2A 协作)+ INTEGRATION(MCP 工具)+ FRONTEND(AG-UI 界面)
- 下一段预告 :MCP 深潜------4 层拓扑(Host/Client、Protocol、Server、数据源)、核心概念、生命周期、设计模式与案例