首页 > 教程攻略 > ai教程 >一文讲清 CLI、MCP、A2A、A2UI 和 AG-UI

一文讲清 CLI、MCP、A2A、A2UI 和 AG-UI

来源:互联网 时间:2026-07-26 07:29:24

最近一年,AI Agent 圈子里冒出了大量缩写:CLI、MCP、A2A、A2UI、AG-UI……很多人第一次看到时会有一种错觉:这些到底是啥?怎么突然冒出这么多新东西?

实际上,如果把它们放在同一条技术演进线上看,会发现这些东西并不复杂。它们解决的是同一个问题:如何让 Agent 与外部世界协作。只是协作对象不同,因此出现了不同层次的协议。

从 CLI 开始:人与程序的交互协议

最早的软件世界里,并没有 Agent。程序之间协作最简单的方式就是:git clone xxxnpm installpython main.py。这就是 CLI(Command Line Interface,命令行接口)。

CLI 本质上是一种约定:输入参数、执行命令、返回结果。例如:ffmpeg input.mp4 output.mp3。你不需要知道 ffmpeg 内部怎么实现,只需要遵守它的参数规则即可。所以,它解决的是:人如何调用程序。

MCP:Agent 调用工具的协议

当 LLM 出现后,问题发生了变化。以前是人调用工具(比如 git commit),现在变成 Agent 调用工具:Agent 需要获取浏览器内容→ 调用 Browser Tool。

问题来了:Agent 怎么知道工具有哪些?工具参数是什么?返回结果长什么样?如果每个工具都自己定义格式(比如 {"tool": "browser"}{"action": "open_browser"}),Agent 根本无法通用。

于是 MCP 出现了。MCP(Model Context Protocol)可以理解为:无论是 Browser、GitHub、Notion、Figma 还是数据库,都通过统一协议暴露能力。例如:{"name": "search_docs", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}}}}。Agent 不需要提前适配每一个工具,只要支持 MCP(Agent → MCP Client → MCP Server → Tool)即可完成调用。

所以,MCP 解决的是:Agent 如何调用工具。

A2A:Agent 与 Agent 的协议

有了 MCP 之后,Agent 可以调用工具了。但很快又出现新问题。现实中的复杂任务往往不是一个 Agent 能完成的。例如:招聘助手 → 技术面试 Agent → 简历分析 Agent → 背景调查 Agent;或者:旅行规划 Agent → 机票 Agent、酒店 Agent、攻略 Agent。

这时候,Agent 不再只是调用工具,而是在调用另一个 Agent。于是 Google 提出了 A2A(Agent to Agent)。它关注的问题是:Agent 如何发现其他 Agent、如何发送任务、如何获取结果、如何持续跟踪任务状态。例如:Agent A 发送任务 → Agent B 执行完成 → 返回结果。

所以,A2A 解决的是:Agent 如何调用 Agent。

AG-UI:Agent 与前端的协议

很多人做 Agent 产品时都会发现一个问题:Agent 的输出并不是一次性完成的。例如:思考中... 调用搜索... 分析结果... 生成答案... 整个过程是流式的。如果后端只是返回 {"answer": "最终结果"},前端体验会很差。

因此出现了 AG-UI(Agent User Interaction Protocol)。它关注的是:Agent 运行过程中产生的事件如何传递给前端。例如:{"type": "thinking"}{"type": "tool_call"}{"type": "message"}{"type": "complete"}。前端收到后即可实时更新界面,比如显示“✓ 搜索完成 ✓ 数据分析完成 ✓ 正在生成报告”。

因此,AG-UI 解决的是:Agent 如何向界面发送运行事件。

A2UI:Agent 直接生成界面的协议

AG-UI 解决的是事件流问题,但没有解决另一个问题:Agent 如何生成更丰富的界面?例如用户问“北京未来七天天气”,理想情况不是返回一段文字“周一 30℃ 周二 29℃...”,而是直接返回天气卡片。再比如“查看销售数据”,更适合图表、表格、Dashboard,而不是纯文本。

于是出现了 A2UI(Agent to UI)。它强调:Agent 返回的不只是文字,而是结构化 UI。例如:{"component": "chart", "data": [...]}{"component": "weather-card"}。前端根据协议直接渲染。

因此,A2UI 解决的是:Agent 如何生成界面。

五者之间到底是什么关系?

如果画成一张图,大概是这样:

 ┌──────────┐
│   User   │
└────┬─────┘
     │
     ▼
┌──────────┐
│  Agent   │
└────┬─────┘
     │
┌────┼────────────┐
▼    ▼            ▼
MCP  A2A       AG-UI
│    │            │
Tool Agent    Frontend
│                 │
▼                 ▼
A2UI (UI Components)

换句话说:

协议解决的问题
CLI人如何调用程序
MCPAgent 如何调用工具
A2AAgent 如何调用 Agent
AG-UIAgent 如何向界面发送运行事件
A2UIAgent 如何生成界面

最后

如果把过去几十年的软件演进浓缩成一句话:CLI 时代是 Human → Software;AI 时代是 Human → Agent → World。而 MCP、A2A、AG-UI、A2UI,本质上都是在补齐这条链路上的不同环节。它们不是互相竞争的关系,而是分别回答了几个问题:

  • Agent 怎么用工具?(MCP)
  • Agent 怎么找 Agent?(A2A)
  • Agent 怎么通知前端?(AG-UI)
  • Agent 怎么生成界面?(A2UI)

至于 CLI?它并没有过时。很多 MCP Server 的底层,依然是在调用各种 CLI 工具。只不过以前是人敲命令,现在变成 Agent 替你敲了。