A2UI 的工作流程分为五个核心步骤。首先,用户向AI智能体发送消息,智能体基于LLM生成A2UI JSON格式的消息流,描述UI组件结构和数据模型。其次,JSON消息通过传输层(SSE、WebSocket、A2A 协议等)流式传输到客户端应用程序。第三,客户端解析JSON消息,使用消息处理器管理A2UI状态,并将抽象组件定义映射到原生组件库。第四,客户端渲染器根据组件目录(Catalog)中的可信组件,将抽象组件渲染为原生UI元素。最后,用户与原生UI 交互,操作事件通过userAction消息路由回智能体,智能体根据交互结果更新UI或执行后续操作。
A2UI 采用JSON Lines(JSONL)格式进行消息传输,每条消息为独立的JSON对象,便于流式处理和增量解析。服务端到客户端的消息流包含四种核心消息类型:updateComponents(v0.9,替代v0.8的surfaceUpdate)用于定义或更新UI组件;updateDataModel(v0.9,替代v0.8的dataModelUpdate)用于更新应用状态;createSurface(v0.9,替代v0.8的beginRendering)用于向客户端发出渲染信号;deleteSurface用于删除UI表面。客户端到服务端的通信通过独立的A2A 消息处理,包含userAction(用户操作)和error(客户端错误)两种类型,保持主数据流单向性。
A2UI 协议将关注点分离为三个 distinct 层。UI结构层通过updateComponents消息(v0.9核心消息)定义组件树,描述界面的外观和结构。应用状态层通过updateDataModel消息(v0.9核心消息)定义数据模型,存储动态数值(如文本、布尔值、列表等)。客户端渲染层负责将A2UI 消息映射为原生组件并实现渲染。这种架构分离实现了数据绑定、响应式更新、可重用模板和清晰的架构边界,使智能体和客户端之间的职责划分明确。