A2UI(Agent-to-User Interface) 是一个由谷歌主导的开放、声明式 UI 协议,其核心目标是使人工智能代理(AI Agents)不仅仅返回文本或可执行代码,而是能够直接生成安全、结构化、可交互的用户界面描述。这些由代理生成的界面可以在 Web、移动端以及桌面端以原生方式渲染,而无需执行任何来自代理端的任意代码,从而在提升交互能力的同时显著降低安全风险。
在传统的 AI 应用架构中,LLM 的主要输出形式仍然是文本,开发者通常需要在前端解析文本、编写业务逻辑、拼装 UI,从而把模型能力转化为真正可用的产品功能。如果希望让 AI“驱动界面”,往往只能通过代码生成、脚本注入等方式实现,这不仅增加了系统复杂性,同时也带来了巨大的安全隐患,例如远程代码执行、沙箱逃逸以及不可控的 UI 行为等问题。
因此,我们需要一种新的能力栈: 既具备安全设计, 又对 LLM 友好, 与具体框架实现解耦, 并且支持 渐进式渲染与流式交互。
问题如下: 仅使用文本进行人机交互效率低下:
markdownUser: "Book a table for 2 tomorrow at 7pm" Agent: "Okay, for what day?" User: "Tomorrow" Agent: "What time?" ...
sequenceDiagram
participant Server
participant Client
participant UI
Note over Server,Client: 1. 建立 SSE 连接(JSONL Stream)
Server->>Client: SSE 连接建立
loop 2. Client Buffering
Server-->>Client: surfaceUpdate
Server-->>Client: dataModelUpdate
Note right of Client: 客户端解析并缓存<br/>组件结构和数据模型
end
Note over Server,Client: 3. 服务器发送 beginRendering 信号
Server->>Client: beginRendering
Note right of Client: 4. Client-Side Rendering<br/>构建 Widget Tree<br/>解析数据绑定<br/>从 Widget Registry 实例化组件
Client->>UI: 渲染 UI
Note over UI: (UI 可交互)
Note over UI,Client: 5. 用户交互
UI->>Client: userAction
Note over Client,Server: 6. Event Handling
Client->>Server: userAction (A2A 消息)
Note over Server: 处理事件
loop 7-9. Dynamic Updates
Server-->>Client: surfaceUpdate
Server-->>Client: dataModelUpdate
Client->>UI: 触发 UI 重建
end


本文作者:MapleCity
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!