A2UI - 智能体自动生成 UI 界面的全新协议

A2UI 是什么?

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

a2ui

维度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 要解决什么问题?

智能体如何能安全地跨信任边界发送丰富的用户界面?

a2ui-solve-problem-s

A2A 协议给界面设计带来了挑战:如果智能体在应用里,它可以直接控制界面。但在多智能体协作的场景中,执行任务的智能体通常在远程(如后台服务或其他公司),无法直接控制界面,只能通过发送消息来交互。

传统做法是发送 HTML 或 JavaScript 代码,然后用 iframe 运行。但这会让系统变得复杂,界面看起来和应用不协调,而且安全管理也很麻烦。我们需要一种既安全(像传输数据那样),又灵活(像运行代码那样)的新方法。

解决方案:把界面当作消息来传输

A2UI 提供了一种标准格式,让 AI 智能体可以创建和更新用户界面。它支持通用组件和客户端自定义的组件,可以组合成完整的界面布局。这些布局用消息来传输,而不是直接运行代码,然后让客户端用原生 UI 组件进行渲染。这样客户端就能完全控制样式和安全。

agent-send-description-s

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

a2ui-analogy

A2UI 的工作原理

how-a2ui-work-s

A2UI 把 UI 当成一串 JSONL 消息(常用 SSE 传输),客户端进行**渐进式渲染,**降低等待感。

  • 服务器到客户端一共四类消息:surfaceUpdatedataModelUpdatebeginRenderingdeleteSurface

a2ui-message

  • 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,同时将渲染和安全控制权牢牢掌握在客户端手中,巧妙地平衡了灵活性与安全性。

© 00RSS