AG-UI

先说结论
AG-UI 对我最大的启发,不是又多了一个协议名,而是它把 Agent 和前端 UI 之间的边界讲清楚了:模型怎么想是一层,工具怎么调是一层,运行过程怎么让用户看见、确认和接管,又是另一层。
如果要做可视化里的 Agent UI,这个分层很值得参考。前端不能只等一个最终结果,它需要知道任务开始了没有、模型正在说什么、工具调用到了哪一步、是否需要用户批准、状态有没有被更新。
The Agent–User Interaction (AG-UI) Protocol 是一个开放的、轻量级的标准协议,旨在解决 AI Agent(智能体)与前端用户界面(UI)之间通信标准化的难题。
在目前的 AI 代理生态系统(Agentic Ecosystem)中,AG-UI 被视为**“最后一公里”的连接协议——它不负责 Agent 如何思考(模型层),也不负责 Agent 如何调用工具(那是 MCP 协议的事),而是专门负责Agent 如何与人类用户进行实时、多模态的交互**。
这个三层职责值得参考,我们算是可视化的AG-UI:DataV AG-UI。
以下是对 AG-UI 协议的详细技术讲解:
1. 核心定位:Agent 协议栈的“三驾马车”
为了理解 AG-UI,首先需要明确它在现代 AI 架构中的位置。在 2025 年后的 AI 开发范式中,通常存在三大核心协议:
-
MCP (Model Context Protocol): Agent ↔ 外部世界。由 Anthropic 主导,标准化 Agent 如何连接数据源、API 和工具(给 Agent“手”)。
-
A2A (Agent-to-Agent): Agent ↔ Agent。标准化 Agent 之间如何协作、分包任务(给 Agent“团队”)。
-
AG-UI (Agent-User Interaction): Agent ↔ 人类用户。标准化 Agent 如何将思考过程、工具状态、生成的内容流式传输给前端 UI(给 Agent“嘴”和“脸”)。
2. AG-UI 的核心机制:事件驱动流 (Event-Driven Stream)
AG-UI 抛弃了传统的 REST API(请求-响应)模式,采用了**事件驱动(Event-Sourcing)**架构。这是因为 Agent 的运行通常是长时间、多步骤且不确定的,前端不能傻等一个最终结果。
-
传输层: 通常基于 Server-Sent Events (SSE) 或 WebSockets。
-
数据格式: 一系列结构化的 JSON 事件。
标准化的事件生命周期
AG-UI 定义了约 16 种标准事件类型,主要分为五大类:
-
生命周期事件 (Lifecycle Events):
-
RUN_STARTED/RUN_FINISHED: 告诉 UI 一个任务流程开始了或结束了。 -
RUN_ERROR: 错误处理。
-
-
消息流事件 (Text Message Events):
TEXT_MESSAGE_START/_CONTENT/_END: 用于流式传输 LLM 生成的文本(Token-by-token),让用户感觉响应是实时的。
-
工具调用事件 (Tool Call Events):
-
这是 AG-UI 的精华。当 Agent 决定调用一个工具(如“查询天气”或“运行代码”)时,它会发送
TOOL_CALL_START。 -
前端表现: UI 可以据此渲染一个“正在查询…”的加载条,或者显示具体的参数,甚至弹出一个确认框让用户批准(Human-in-the-Loop)。
-
-
状态管理事件 (State Management Events):
STATE_UPDATE/STATE_DELTA: 同步后端 Agent 的内存状态与前端 UI 的显示状态。
3. 关键特性详解
A. Human-in-the-Loop (人机协同)
AG-UI 原生支持“中断”和“审批”。
-
场景: Agent 想要执行一个敏感操作(如“删除数据库”)。
-
流程: Agent 发送一个
REQUEST_APPROVAL事件 -> UI 渲染“批准/拒绝”按钮 -> 用户点击 -> UI 将结果发回 Agent -> Agent 继续执行。 -
这在传统的 Chat 接口中很难实现,但 AG-UI 将其标准化了。
B. Generative UI (生成式 UI)
AG-UI 不仅仅传输文本,它支持 Agent 动态控制 UI 组件。
-
机制: Agent 可以发送包含 UI schema 的事件(类似于 Vercel 的 AI SDK RSC 或 Adaptive Cards)。
-
例子: 当用户问“股票行情”时,Agent 不只是通过文本回答,而是通过 AG-UI 协议指示前端渲染一个特定股票的
ChartComponent(图表组件)。
C. 状态同步 (Shared State)
Agent 和前端共享同一个“上下文对象”。
-
如果 Agent 在后端更新了任务列表,它会发送一个 JSON Patch(增量更新)。
-
前端自动接收并更新 React/Vue 组件的状态,无需手动轮询。
4. 为什么需要 AG-UI?(解决了什么痛点)
在没有 AG-UI 之前,开发者连接 Agent 和前端非常痛苦:
-
痛点 1: 需要自己手写 WebSocket 逻辑来处理流式文本。
-
痛点 2: 很难在前端优雅地展示“Agent 正在思考”或“Agent 正在调用工具 A、工具 B”的中间状态。
-
痛点 3: 更换后端框架(如从 LangChain 换到 Pydantic AI)通常意味着要重写前端代码。
AG-UI 的价值在于解耦:前端开发者只需要对接 AG-UI 标准接口,后端无论用 LangGraph、CrewAI 还是 Autogen,只要输出符合 AG-UI 标准的事件流,前端都能完美展示。
5. 总结
AG-UI Protocol 是连接智能体后端与现代前端的通用语言。
-
对于后端开发: 你只需要关注 Agent 的逻辑,通过 AG-UI SDK 发出事件。
-
对于前端开发: 你得到的是一个清晰的事件流,可以轻松渲染出类似 ChatGPT 或 Claude Artifacts 那样丝滑的交互界面。