A2UI 1.0 是谷歌开源的生成式界面协议首个稳定版,它让智能体直接返回可渲染的界面数据而不是一段文字。协议规定了四类消息、六个主流渲染器入口和双向函数调用机制,开发者安装一条 npm 命令就能让模型输出的界面直接用自家应用的原生组件画出来。
谷歌在 2025 年底公布 A2UI(Agent-to-User Interface)协议,2026 年 11 月 11 日(北京时间 11 月 12 日)正式发布 1.0 稳定版,把这条从实验走向生产的路线补上了最后一块协议缺口。协议本身以 Apache 2.0 许可证开源,由谷歌创建,CopilotKit 与开源社区共同贡献维护。
A2UI 是什么,1.0 解决了哪个具体问题
过去智能体和用户之间的界面表达能力几乎全靠模型自由发挥。模型返回一段文本,应用自己猜这段文本该渲染成按钮还是表格。结果是同一个请求在不同应用里长得完全不一样,用户想点一个选项,得先读完一整段描述再手动回一句。
A2UI 把这层约定固定下来。智能体负责描述要显示什么,应用负责用自己的原生组件把它画出来。协议传的是数据而不是可执行代码,渲染器负责把数据映射成本地框架的控件。
1.0 相比此前的 0.9 系列补齐了三块,双向函数调用、单消息完成整屏实例化,以及主题解耦带来的品牌自主权。规范文档记录创建于 2025 年 11 月 20 日,最后更新于 2026 年 6 月 8 日。
| 维度 | v0.9 / v0.9.1 | v1.0 |
|---|---|---|
| 双向函数调用 | 不支持 | 新增 callRendererFunction、callAgentFunction、rendererFunctionResponse、agentFunctionResponse 四类消息 |
| 整屏实例化 | 需多条消息逐步下发 | createSurface 可在单条消息里带上完整组件树与数据模型 |
| 目录混用 | 一个 surface 只用一个 catalog | 支持按组件级 @catalogId 混用多个目录 |
| 主题处理 | 协议层带主题属性 | 移除刚性主题,带 theme 的 createSurface 判定为非法 |
| 动态绑定与信封键 | 前缀不统一 | 动态绑定加 @ 前缀(@path、@call),组件信封新增 @catalogId、@accessibility、@metadata、@checks |
| 命名规范 | 未强制统一 | 执行 Unicode UAX #31 命名规则,@ 命名空间保留给系统上下文求值 |
四类消息构成完整的一次界面生命周期
A2UI 的通信模型是单向流。智能体向渲染器下发一串 JSON 对象,渲染器逐条解析、增量构建界面。用户交互走另一条通道回到智能体,智能体再补发新的界面更新。
| 消息类型 | 方向 | 作用 | 典型用法 |
|---|---|---|---|
| createSurface | 智能体到渲染器 | 声明一个新界面区域开始渲染 | createSurface(surfaceId: main) 并可在 1.0 里直接带组件树 |
| updateComponents | 智能体到渲染器 | 向指定 surface 追加或更新组件定义 | 下发 Card、Text、Button 等组件及其属性 |
| updateDataModel | 智能体到渲染器 | 写入或替换界面绑定的数据 | updateDataModel(path: /user, value: Alice) |
| deleteSurface | 智能体到渲染器 | 显式移除某个界面区域 | deleteSurface(surfaceId: main) 清空整屏 |
| action | 渲染器到智能体 | 用户点击等交互事件回传 | action(name: submit, context: {…}) |
传输层不绑定具体协议,规范要求实现方满足四条契约:消息按生成顺序可靠送达,因为状态化更新依赖顺序;必须有明确帧分隔,JSONL 换行、WebSocket 帧或 SSE 事件都行;必须支持元数据附加,用于数据模型同步和能力协商;返回通道虽属可选,但交互应用都需要一条回传 action 的通道。
常见绑定有四种。AG-UI 面向智能体与前端的低延迟共享状态消息传递,是最常用的传输绑定。A2A 扩展把 A2UI 映射到智能体到智能体协议上,标准化元数据位置与双向数据模型同步。MCP 绑定让 A2UI 搭在工具调用、工具输出或资源订阅上传输。SSE 加 JSON RPC、WebSocket、REST 也能跑,REST 简单但没有流式能力。
渲染器矩阵:六个主流框架加社区补充
A2UI 最有价值的部分在于渲染层覆盖面。一个智能体服务可以同时把同一份界面数据送到网页端和移动端,各端用各自的框架控件绘制,用户看不到差别。
| 平台 | 渲染器 | 状态 | 安装方式 |
|---|---|---|---|
| 网页 React | @a2ui/react | 官方 | npm install @a2ui/react @a2ui/web_core |
| 网页 Lit | @a2ui/lit | 官方 | npm install @a2ui/lit @a2ui/web_core |
| 网页 Angular | @a2ui/angular | 官方 | npm install @a2ui/angular @a2ui/web_core |
| Flutter | a2ui_flutter | 官方,覆盖移动、网页、桌面 | flutter pub add a2ui_flutter a2ui_core |
| iOS | A2UISwiftUI | 官方 | Swift Package Manager 引入 A2UISwiftCore、A2UISwiftUI、BasicCatalogSwiftUI |
| Android | Jetpack Compose 渲染器 | alpha,1.0 官方支持即将到位 | androidx.compose.material3:material3-a2ui、androidx.a2ui.compose:compose-ui、androidx.a2ui:a2ui-model |
| 字节跳动 Lynx | 社区渲染器 | 2026 年 6 月随框架发布 | 随 Lynx 主仓分发 |
| 终端 | Go Bubble Tea、Ink | 社区 | Go 与 Node 生态自取 |
智能体 SDK 与推理格式:让模型少写冗长 JSON
Agent 侧有三套官方 SDK 覆盖主流语言。Python 有 a2ui-core、a2ui-agent-sdk、a2ui-a2a(接 A2A 协议)和 a2ui-adk(接 Agent 开发套件)。TypeScript 有 @a2ui/web_core 与 @a2ui/agent。Dart 有 a2ui_core、a2ui_agent 和 a2ui_flutter。安装方式分别是 pip install a2ui-agent-sdk、npm install @a2ui/agent、dart pub add a2ui_agent。
协议把线上传输格式和模型生成格式分开了。渲染器收到的永远是标准 A2UI JSON,模型写什么由服务端编译层转换。这个解耦带来一个直接收益:让模型直接吐线格式 JSON 成本很高,重复的 id、component、@path 键和手写组件标识会让原始 JSON 大约长到三倍,把完整 JSON Schema 塞进系统提示消耗的输入 token 大约是紧凑组件签名的两倍,嵌套括号和引号在小模型上尤其容易出错。
| 推理格式 | 哨兵标签 | SDK 支持 | 界面表示方式 |
|---|---|---|---|
| Express | <a2ui>…</a2ui> | TypeScript、Python、Dart,默认格式 | 紧凑位置式 DSL,嵌套组件调用配 $/path 数据赋值,编译为扁平线格式 JSON |
| Direct JSON | <a2ui-json>…</a2ui-json> | TypeScript、Python、Dart | 模型直接输出标准 A2UI 线格式 JSON,服务端剥离 Markdown 围栏并做增量字符串修复 |
| Custom | 自定义 | TypeScript、Python、Dart | 按 InferenceFormatFactory 契约实现的领域专用语法 |
与 MCP 的四种集成模式
MCP 是当前智能体生态最热的协议,A2UI 没有绕开它,而是把它当作一种传输绑定,并定义了四种不同的组合方式。选哪一种取决于谁持有外层宿主,以及 MCP 服务返回的是纯数据、可复用布局模板,还是沙箱化的 HTML 应用。
| 目标 | 外层宿主 | MCP 服务输出 | 适用场景 |
|---|---|---|---|
| 从 A2UI 界面调用无头 MCP 工具 | 自建 A2UI 网页应用 | JSON 或纯文本工具结果 | 界面上的按钮直接触发远程工具调用 |
| 从 MCP 服务返回可复用的 A2UI 布局 | 自建 A2UI 网页应用 | a2ui:// 模板,类型 application/a2ui+json | 服务端发布声明式组件布局,按调用返回紧凑的 dataModel 更新 |
| 在 A2UI 界面里嵌第三方交互 HTML 控件 | 自建 A2UI 网页应用 | ui:// HTML 应用,text/html;profile=mcp-app | 双 iframe 沙箱内挂载第三方组件 |
| 在 Claude Desktop、Cursor、VS Code 里显示 A2UI 界面 | 外部 MCP 应用宿主 | ui:// HTML 包内含 A2UI 渲染器 | 外部宿主不支持 A2UI 时,把网页渲染器打包进 HTML |
如果关心 MCP 客户端与服务端的实际搭建方式,站内已有 FastMCP 改名后 MCP 服务怎么起 一篇从安装到起服务的实测,以及 阿里云上线 One Key MCP 讲的 API Key 统一管理方案。
安全边界:目录就是护栏
A2UI 的安全模型建立在两个约束上。第一,界面用数据表达,不用可执行代码。协议规定智能体生成的每一项能力,要么是框架内置的标准安全能力,要么是应用开发者显式授予的。这一点在信任边界场景里尤其重要,比如智能体根本不该接触到信用卡号、个人身份信息或财务数据。
谁已经在用:Atlassian、Alation 与字节跳动
官方博客给出了三个具体落地案例。
Atlassian 正把 A2UI 引入 Jira。团队可以把工作项指派给 AI 智能体,当智能体需要补充细节或做决策时,会在工作项内部以交互卡片的形式向团队提问,成员直接在 Jira 里作答,不用跳转到另一个聊天窗口。
Alation 用 A2UI 构建了指标卡与图表信息流,每张图表可以展示背后的 SQL 查询与数据。用户向 Claude 询问盈利产品信息流时,这条信息流直接在对话里渲染出来,同一条信息流在 Alation 自家数据产品应用里看到的布局也几乎一致。
三条生成式界面路线怎么选
官方文档用一个航班改签场景把三条路线摆在一起对比,差别很能说明问题。
| 路线 | 模型产出 | 宿主形态 | 优势 | 代价 |
|---|---|---|---|---|
| 预构建控件 | flight_card({flight: UA 418, gate: B12}) | 宿主应用硬编码模板 | 百分之百由宿主掌控,完全继承本地样式与安全模型 | 锁死在预置视图,模型只能填数据槽,新流程必须等应用发版 |
| 组合式目录 | FlightCard + ChoiceChips + Button | 宿主应用原生目录 | 能适配每一次提示词,组件组合现场生成,原生且默认安全 | 需要先把常用组件注册进目录 |
| 代码生成 | iframe 沙箱内的 HTML、CSS、JS | 宿主内嵌沙箱 | 自定义视觉不受限,适合 2D/3D 画布、交互地图、完整小程序 | 与设计系统隔离,绑死网页与 WebView,载荷更重 |
A2UI 与谷歌的应用分发路线同源。Google Connected Apps 上线 讲的是 50 多个应用接入 Gemini 与搜索,A2UI 是同一个脉络上的下一步,把模型能力继续往下游的界面层推。应用分发决定入口在哪,界面协议决定入口长什么样。
常见问题
A2UI 和 AG-UI 有什么区别
两者是互补关系,AG-UI 是传输层绑定,负责把消息在智能体与前端之间传递,A2UI 定义的是消息本身的内容结构。一个 AG-UI 流可以承载 A2UI 界面,也可以承载纯文本对话。A2UI 另外还有 A2A 与 MCP 两种绑定方式。
接入 A2UI 需要模型支持什么能力
不需要模型有专门的 A2UI 模式。Express 格式用紧凑的位置式 DSL 和 $/path 路径赋值来降低模型负担,官方文档明确提到这种设计能减少小模型上的语法与引用错误。协议也支持在服务端用分类器、状态机或宏直接构造界面消息,完全绕过大模型生成环节。
没有 React 和 Flutter 的团队能用吗
可以。官方提供了 Python、TypeScript、Dart 三套智能体 SDK,渲染端除六大主流框架外还有字节跳动 Lynx、Svelte、Vue、Compose Multiplatform、Go Bubble Tea、Ink 等社区渲染器,Go 和 Node 生态都有。协议本身与传输层无关,接 WebSocket 或 SSE 就能跑。不过零成本迁移不成立,官方渲染器才是完整实现,自己写渲染器要实现目录校验、数据绑定与消息状态机三件事。
小结
A2UI 1.0 的核心贡献是把智能体输出界面这件事标准化了。协议用数据加目录锁死了智能体的能力边界,用四类消息和多种传输绑定覆盖了从工具调用到 MCP 应用的完整链路,用六大官方渲染器把跨框架一致性做成了开箱即用的事实。
对已经在做智能体接入的团队,这份规范最直接的价值是提供了一个同时满足安全要求与原生体验的选项。协议以 Apache 2.0 开放,CopilotKit 与社区持续参与,加上 ByteDance、Atlassian、Alation、彭博社已经在用,生态密度足够高。接下来半年值得盯的是 1.0 在主流 MCP 宿主与云平台上的支持进度,这决定了它是实验性选项还是默认选项。
上手路径:三条命令与两个零安装工具
想立刻试一下协议本身,有三条路可选。
最快的是给编程助手装技能。一条 npx skills add a2ui-project/a2ui 命令就能把协议规则、SDK 集成指南和目录编写流程装进 Claude Code、Gemini CLI、Cursor、Codex 或 Windsurf,之后直接让它按步骤写。
零安装的有两个。A2UI Composer 是可视化工作台,用图形编辑器拼界面并导出 JSON 塞进智能体提示词,适合先把交互原型设计出来。A2UI Playground 是浏览器沙箱,本地什么都不装就能试协议和组件目录。
要跑全栈示例,官方 Quickstart 用一个 Python 服务同时托管智能体、一个 React 网页客户端和一个 Flutter 移动客户端,官方给的时间是大约五分钟。需要注意这个 Travel A2UI 示例位于 A2UI Labs 仓库的 samples 目录下,是学习用途的样例,官方明确说明它不适合生产环境使用。
相关阅读
- FastMCP 改名后 MCP 服务怎么起:pip 装 2.3 实测
- 阿里云上线 One Key MCP:统一百炼 API Key 一键调用生态 MCP 服务
- Google Connected Apps 上线:50+ 应用接入 Gemini 与搜索
- 腾讯 Agent 四层栈怎么搭:40 场发布拆出 4 个数据断点
- ComfyUI 正式支持 MCP:把 AI 生图引擎装进 AI 助手
延伸阅读
- Gemini 4 Argon 安卓榜第五:通过率 21.3%2 周前
- 谷歌开源TorchTPU:挑战英伟达AI生态,PyTorch原生支持TPU加速3 周前
- Gemini 4 Carbon 重回世界第一:Alphabet 股价跌 10%1 周前
- 谷歌 Antigravity 上线化学技能 1 小时筛完数千种化合物1 周前
继续读
同一批更新里这几篇值得一看:
- FastMCP 改名后 MCP 服务怎么起:pip 装 2.3 实测2026-11-11
- 谷歌为 Anthropic 190 亿美元租约兜底:401 兆瓦与 TPU 绑定2026-11-05
- Google Connected Apps 上线:50+ 应用接入 Gemini 与搜索2026-10-30
