📌 项目地址:ag-ui-protocol/ag-ui | ⭐ 17,260 颗星 | 🔧 TypeScript

后端协议卷疯了,前端没人管
过去一年,Agent 侧的协议一直在猛进:MCP 解决了 Agent 调工具的问题,A2A 解决了 Agent 之间互相通信的问题。但还有一个空白:Agent 怎么跟用户界面打交道?
这个问题每个做 AI 应用的团队都自己扛过。流式输出怎么传、前端状态和 Agent 状态怎么同步、工具调用过程要不要在界面上展示、关键操作怎么让人审批。这些活儿没有标准,各写各的,写完还和别人的 Agent 对不上。
AG-UI(Agent-User Interaction Protocol)就是冲着这个空白来的。官方对三者关系的说法很清楚:MCP 给 Agent 工具,A2A 让 Agent 互通,AG-UI 把 Agent 带进用户应用。三者互补,不重叠。
这个项目来自 CopilotKit 和 LangChain、CrewAI 的合作,本质上是把 CopilotKit 内部的 Agent 交互基础设施抽出来做成了开放协议。目前一万七千多 star(截至发稿)。
设计有多克制
AG-UI 的核心约定只有两条:
- Agent 后端在执行过程中,发出与 AG-UI 约 16 种标准事件类型兼容的事件(流式文本、状态更新、工具调用等)
- Agent 后端接受几种简单的 AG-UI 兼容输入作为参数
注意”兼容”这个词。它不要求事件格式逐字节一致,中间件层支持宽松的事件格式匹配,所以不同框架实现的 Agent 和前端之间可以互通。传输层也不绑定:SSE、WebSocket、webhook 都行。
官方还附带了一个参考 HTTP 实现和默认 connector,核心包发在 npm 上,叫 @ag-ui/core。
六个特性,对应六类实际痛点
README 列的特性不多,但每条都对应一个真实麻烦:
- 实时流式对话:最基本的打字机输出
- 双向状态同步:前端状态和 Agent 状态互相更新,不是 Agent 单向吐字
- 生成式 UI 与结构化消息:Agent 可以决定界面渲染什么,而不只是回一段文本
- 实时上下文增强:Agent 能感知用户当前的界面状态和操作
- 前端工具集成:把前端函数暴露给 Agent 调用
- Human-in-the-loop:关键操作暂停,等人确认后继续
这六件事自己从零实现,随便挑一件都不轻松。
上手只要一条命令
npx create-ag-ui-app my-agent-app
几个配套资源:
- 快速开始(构建 AG-UI 应用):docs.ag-ui.com/quickstart/applications
- 为新框架构建 AG-UI 集成的贡献指南
- AG-UI Dojo(dojo.ag-ui.com),官方的实践演示环境
- Discord 社区,集成生态的变动在那边最及时
集成生态
AG-UI 把集成分成”一方”和社区两类。一方的定义是:平台内置了 AG-UI,并且提供官方接入文档。LangChain 和 CrewAI 是协议诞生时的合作方,属于起点生态。具体框架支持表格更新很快,建议直接看 README 或官方文档拿最新状态。
谁该看这个项目
两类人值得花时间。一是要在自己产品里嵌 Agent 交互的前端/全栈团队,AG-UI 能省掉大量重复造轮子。二是 Agent 框架的开发者,接上 AG-UI 意味着你的框架能直接对接一批现成前端。
也要摆正预期:它给的是协议加参考实现,不是拿来就能跑的完整产品。你得理解事件模型才能用好它。如果你的痛点是”Agent 缺工具”,那是 MCP 的地盘,AG-UI 帮不上。
我的判断:随着 Agent 从命令行工具走进真实产品,Agent 和界面的标准化连接会越来越重要,这个方向上 AG-UI 目前是最认真的答案之一。