当地时间11月11日,谷歌宣布生成式UI开放协议 A2UI 1.0 稳定版上线,AI 智能体不再只回一段文字,而是直接返回可交互的原生界面,字节跳动已经用上了这套协议。 协议采用 Apache 2.0 开源,由谷歌创建,CopilotKit 与开源社区共同贡献。 这个热榜问题的直接答案是:“AI 生成恶意代码在你机器上运行”这个最大的口子已经被协议设计堵住了,真正需要警惕的是协议管不到的三层——宿主实现、服务端授权和数据架构。金融界IT之家知乎
协议堵住的口子:只能“点错菜”,不能“往厨房里塞东西”
A2UI 的路线不是让模型现场写 HTML 或 JavaScript 给应用执行:智能体发送声明式组件描述,客户端用自己的原生组件完成渲染,而不是执行智能体生成的任意代码。 换句话说,Agent 只能从宿主批准的组件目录里挑选卡片、输入框和按钮,目录之外的东西它没法要求渲染出去。知乎
这对普通用户意味着,信任边界从“信不信这个模型”变成了“客户端有没有守好白名单”:A2UI 是声明式的数据格式,不是可执行代码,客户端只渲染目录里预先批准的组件,降低了 UI 注入等风险。 只要宿主校验到位,无论 Agent 是自家的还是第三方的、有没有被提示词注入攻击,它能造成的损害最多是“点错菜”——展示错误的卡片、选错选项,而没法“往厨房里塞东西”。知乎
管不到的三层
但“协议是 JSON”不等于渲染天然安全,落地质量是第一层变量。如果宿主把 Agent 返回的字符串直接塞进可执行入口,或者让危险属性进入白名单,声明式格式救不了错误的实现。一个刚公开的本地最小实验恰好说明了边界在哪:XBSTACK 在 11 月 12 日做了一个不联网、不调用真实工具的最小实验,6 项 Node 规则测试和 1 项真实 Chrome 浏览器综合测试通过,一段看似 HTML 的文本被当纯文本渲染。知乎
作者本人也强调,这些测试只证明这份最小 Renderer 对该输入的处理方式,不能证明任何第三方渲染器都没有 XSS 问题,复杂 URL、富文本和扩展组件的攻击面并未覆盖。知乎
第二层是授权:审批按钮不等于工具授权。用户在一张退款预览卡片上点击“确认”,这个事件只证明他在该界面做过一次选择,并不证明请求一定属于当前用户、退款对象没被替换,或队列重试不会再退一次款。 点击按钮回传动作不代表动作就应该执行,客户端可能被篡改、消息可能重放、参数可能错误,真正的校验要落在服务端:当前用户是谁、是否有权操作这个对象、金额与资源是否匹配、请求是否过期、重复提交是否幂等。知乎知乎
第三层最容易漏掉:误导不需要恶意代码。一张卡片可以完全使用目录内组件、每个字段都通过 Schema,仍然可以把高风险按钮放在最醒目的位置,把费用变化藏在折叠区域,或者用含混文案诱导用户确认。 模型不注入任何东西,也能制造一次糟糕的交互。这意味着安全审查要从“代码是否合法”扩展到“组合是否合理”,高风险操作的固定布局、后果说明和二次确认应由宿主定义红线,而不是交给模型当次生成。知乎
还要注意,1.0 不只收风险,也扩了攻击面。新增的双向函数调用让渲染器可以调用智能体侧函数、智能体也可以调用渲染器侧函数,界面能就地核查,但“哪个函数、由谁调用、能否脱离用户操作自动触发”都成了逐项核对的对象;官方基础目录已经给 openUrl 这类函数加了约束,要求处于真实用户操作上下文,避免链接在界面渲染时自动打开。 这些护栏防止部分函数自动触发,但它们本身不是身份认证和授权系统。知乎
隐私:“敏感数值不进模型”是有前提的
发布材料中被反复引用的还有一句:敏感数值不进入模型。这句话需要加上架构前提——A2UI 确实提供了数据模型和客户端绑定的分离手段,但数据到底进不进模型,取决于团队把数据放在哪一侧、提示词里包含什么、函数参数如何设计,协议提供手段,不自动完成数据最小化。 1.0 还允许输入组件把用户填写的内容写回数据模型形成双向绑定,这些信息最终是否随消息上行到服务器,同样由应用的设计决定。知乎
“1.0 稳定”不等于“全端就绪”
评估风险时还要区分协议状态和生态状态。官方渲染器矩阵里,React、Lit、Angular 的 v1.0 支持标为稳定,Flutter 和 SwiftUI 的 v1.0 支持仍为 Alpha,Jetpack Compose 的 1.0 标注为 Planned。 企业侧同样存在时间差:字节跳动旗下的 Lynx 已提供 A2UI 渲染实现,但公开报道所列当前支持版本是 0.9,1.0 适配仍在推进。换句话说,双向函数调用这类与安全直接相关的机制,正在各端逐步落地,“官方披露”不等于“第三方生产环境审计”。知乎
所以这个问题没有简单的“有”或“没有”:A2UI 把“AI 生成代码注入”压缩成了协议层面的难题,而且解决得相当聪明;但界面生成、点击确认、执行授权是三件事,安全性最终取决于宿主有没有实现白名单校验、服务端在收到点击后还查不查、数据架构把敏感字段留在了哪一侧。对普通用户,一个可操作的观察信号是:使用 A2UI 类生成式界面时,看可点的东西是否只有宿主应用的组件、高风险操作在提交前是否重新展示了目标和金额。绿色确认按钮并不比一段长文字天然更可信——它只是把更多校验责任藏到了界面后面。