0

A2UI 协议详解:让 Agent 安全地生成跨端原生界面

A2UI Agent GenUI AI

A2UI 是什么

A2UI(Agent to UI)是 Google 主导的一个开放协议,专为"Agent 驱动的界面"设计。它让 AI Agent 能够生成丰富、可交互的界面,并在 Web、移动端、桌面端原生渲染——而无需执行任何任意代码。它于 2025 年 12 月 15 日以 Apache 2.0 许可证发布。

它的核心定位可以用一句话概括:A2UI 传输的是声明式数据,而不是可执行代码。 正因为只描述"界面意图"而不描述"实现",它天生就是安全且框架无关的——同一份 Agent 输出,可以在 Web、Flutter、Android、iOS 上各自用本地可信组件渲染出原生外观。

协议机制:一条 JSON 流

A2UI 的官方规范(a2ui.org,v1.0,状态为 Candidate)把它定义为"一个基于 JSON 的流式 UI 协议"。其运作方式是:

  • 通信通过一连串 JSON 对象进行,本质上是 JSON Lines(JSONL)流。
  • 渲染器把每个 JSON 对象当作一条独立消息来解析,增量地构建或更新界面。
  • 协议强调 UI 结构应用数据 的干净分离,使得渲染器每处理一条消息就能渐进式地往屏幕上"长"出界面。

Agent 到渲染器的协议定义了四种消息类型,其中 createSurface 用于通知渲染器创建一个新的"surface(界面表面)"并开始渲染。

为什么这种结构对 LLM 友好

A2UI 用了一种扁平的邻接表(adjacency-list)结构来描述界面,这恰好契合 LLM 的生成特性:

  • 扁平的组件列表——便于增量生成,模型不必先想清楚整棵嵌套树。
  • 基于 ID 的引用——出错时容易定位和修正。
  • 可流式的格式——支持渐进式渲染。
  • 结构化输出——天然契合现代模型的 structured generation / JSON 约束生成能力。

换句话说,协议的形状是顺着模型"一边想一边吐"的方式设计的,而不是逼模型一次性产出一大块完整 JSON。

安全模型:least-privilege UI

A2UI 的安全性来自一个朴素但关键的决定:模型从不"画像素",也不生成原始 UI 代码。

模型只负责输出声明式 JSON,描述"我想要哪些组件、怎么布局";真正的渲染交给客户端那套预先审计过、原生可信的组件库完成。模型在这里扮演的是"编排者(orchestrator)"——从一个已验证的组件库里挑选具体组件,再由 SDK 正式组装并渲染。

这直接化解了 GenUI 最大的安全隐患——UI 注入:即便提示注入诱导模型去"渲染恶意代码",由于客户端只认预批准的组件、只把传过来的数据填进去,恶意代码根本没有落脚点。这就是所谓的"最小权限 UI(Least Privilege UI)"模型。

在 Agent 协议栈里的位置

A2UI 不是孤立的,它是 2026 年 Agent 协议栈的一块拼图。一个好记的划分是:

  • Agent 与 Agent 对话 → A2A
  • Agent 调用工具与系统 → MCP
  • Agent 与用户对话 → AG-UI
  • Agent 描述界面 → A2UI

A2UI 常被拿来和 CopilotKit 的 AG-UI 比较,但二者更多是互补而非竞争:AG-UI 是前后端之间通用的、双向的连接协议,负责复杂的状态同步;A2UI 则专注于"界面内容"那一层——用一种受约束的声明式格式描述 UI 结构,让宿主应用能跨平台安全渲染。学术视角下,A2UI 代表的是"界面生成"这一分支:它把界面构造本身当作一种受治理的输出,而不是放任模型吐出类 HTML 的自由文本。

版本现状的一点提醒

不同来源对版本号说法略有出入:官方 a2ui.org 规范把 v1.0 标为 "Candidate"(创建于 2025-11-20,最近更新到 2026-06-08);而 2025 年 12 月的一些资料还停留在 v0.8 Public Preview,并提示稳定版 v1.0 的目标是 2026 年 Q4。如果要以权威信息为准,认准官方规范地址 a2ui.org/specification/v1.0-a2ui/ 即可。


标题:A2UI 协议详解:让 Agent 安全地生成跨端原生界面
作者:Larry
地址:http://www.zhangyucode.top/articles/2026/06/24/1782408655198.html