A2UI - 智能体自动生成 UI 界面的全新协议
A2UI 是什么?
A2UI 是由 Google 开源的一个“UI 语言 + 传输/渲染协议”。智能体可以根据对话内容,自动从组件库中生成定制化的 UI。

| 维度 | A2UI 是什么 | A2UI 不是什么 |
|---|---|---|
| 本质定义 | 一种面向 AI 智能体的开源协议和标准格式,让智能体能够生成跨平台的交互界面。 | 它不是一个独立的 UI 设计工具或终端应用程序,而是智能体与前端通信的“语言”。 |
| 数据格式 | 采用声明式 JSON 描述界面的意图、结构和数据。 | 它不是可执行代码,严禁智能体发送任意脚本。 |
| 渲染方式 | 原生优先。由宿主应用将抽象描述映射为本地原生组件(如 Flutter 挂件或 React 组件)。 | 它不是 iframe 或不透明的沙盒网页,不会产生视觉割裂感,能继承宿主应用的设计风格。 |
| 安全机制 | 基于白名单的安全设计。智能体只能调用组件目录中预先批准的受信任组件。 | 它不是不受控的 UI 注入。通过禁止执行代码,从根本上杜绝了 XSS 等安全风险。 |
| 交互体验 | 动态且流式的。支持基于 ID 的增量更新,允许界面随大模型推理过程“渐进式渲染”。 | 它不是静态的“文本墙”或简单的 Markdown 表格,而是具备交互能力的实时应用界面。 |
| 平台兼容性 | 框架无关。一份 JSON 描述可以在 Web、移动端和桌面端通用渲染。 | 它不绑定于特定的生态系统。虽然由 Google 发起,但支持 Angular、Flutter、Lit 等多种前端框架。 |
| 生态角色 | 它是基础设施协议。可以与 AG-UI 或 Vercel AI SDK 等框架协同工作,解决跨信任边界的 UI 传输问题。 | 它不是一个框架。它专注于解决“意图如何描述”,而非“如何管理对话状态”。 |
这是一个类似实时对讲机式的界面传输协议。
A2UI 要解决什么问题?
智能体如何能安全地跨信任边界发送丰富的用户界面?

A2A 协议给界面设计带来了挑战:如果智能体在应用里,它可以直接控制界面。但在多智能体协作的场景中,执行任务的智能体通常在远程(如后台服务或其他公司),无法直接控制界面,只能通过发送消息来交互。
传统做法是发送 HTML 或 JavaScript 代码,然后用 iframe 运行。但这会让系统变得复杂,界面看起来和应用不协调,而且安全管理也很麻烦。我们需要一种既安全(像传输数据那样),又灵活(像运行代码那样)的新方法。
解决方案:把界面当作消息来传输
A2UI 提供了一种标准格式,让 AI 智能体可以创建和更新用户界面。它支持通用组件和客户端自定义的组件,可以组合成完整的界面布局。这些布局用消息来传输,而不是直接运行代码,然后让客户端用原生 UI 组件进行渲染。这样客户端就能完全控制样式和安全。

- 不传可执行代码,而是传声明式 JSON;客户端用自有组件渲染,所以样式/可访问性/安全都可控。
- A2UI 是一种“UI 语言”,或者说是一个可被 agent 驱动的状态机外壳,而不是一个 UI 框架。
A2UI 的工作原理

A2UI 把 UI 当成一串 JSONL 消息(常用 SSE 传输),客户端进行**渐进式渲染,**降低等待感。
- 服务器到客户端一共四类消息:
surfaceUpdate、dataModelUpdate、beginRendering、deleteSurface。

- 用
surfaceId管理多个 UI 区域(例如:聊天流里每条 agent 回复各一个 surface,右侧再有一个持久侧栏 surface)。并且 每个 surface 有自己的 data model,避免键名冲突。 - 用扁平组件列表,靠
id引用组织层级(adjacency list),因为嵌套 JSON 树对 LLM 太容易出错,也不利于局部更新。这是为 LLM 的生成特性量身定做的:更容易增量生成、也更容易按 id patch。
A2UI 的优势:设计即安全,模型友好,框架无关,渐进式渲染
安全
直接运行 AI 生成的代码很危险。A2UI 只是数据格式,不是代码。你的应用有一个预先批准的组件清单(比如卡片、按钮、输入框),智能体只能使用这些组件。这样可以防止恶意攻击。
- agent 只能“请求渲染”客户端 catalog 里预批准的组件,不能注入任意脚本。
- 可以有标准 catalog,也可以自定义/扩展;并且有 catalog negotiation:server 在 Agent Card 里声明支持哪些 catalog,client 在每条消息 metadata 里声明自己能渲哪些 catalog。
适合 AI 且可以逐步更新
界面用带编号的组件列表来表示,方便 AI 一步步生成,用户体验更流畅。随着对话继续,智能体可以根据新需求快速调整界面。
跨平台通用
A2UI 把界面结构和具体实现分开。智能体发送组件描述和数据,应用负责用自有控件来显示。同一份 A2UI 数据,可以在不同技术的应用(网页组件、Flutter、React、SwiftUI)上显示。
小结
A2UI 所倡导的“Agent 驱动界面”范式,为解决长期存在的交互复杂性问题提供了 一把锋利的“奥卡姆剃刀”。它将 UI 生成能力下放给最理解上下文的 Agent,同时将渲染和安全控制权牢牢掌握在客户端手中,巧妙地平衡了灵活性与安全性。