A2UI v0.9.1 数据流
A2UI 定义消息,不强制传输协议。服务端可以通过 A2A、AG-UI、SSE、WebSocket、MCP 或其他能够保持完整 JSON 对象与必要顺序的通道传输。
生命周期
服务端先创建 Surface,并指定协商的 Catalog:
{"version":"v0.9.1","createSurface":{"surfaceId":"status","catalogId":"https://a2ui.org/specification/v0_9_1/catalogs/basic/catalog.json"}}
然后发送扁平组件定义,其中一个组件按约定使用 root ID:
{"version":"v0.9.1","updateComponents":{"surfaceId":"status","components":[{"id":"root","component":"Column","children":["heading","value"]},{"id":"heading","component":"Text","text":"服务状态","variant":"h2"},{"id":"value","component":"Text","text":{"path":"/status"}}]}}
数据单独到达,并更新绑定组件:
{"version":"v0.9.1","updateDataModel":{"surfaceId":"status","path":"/status","value":"运行正常"}}
Surface 不再需要时由服务端删除:
{"version":"v0.9.1","deleteSurface":{"surfaceId":"status"}}
流式行为
每条消息必须完整且有效,才能改变渲染器状态。组件与数据到达时,界面可以逐步出现,但具体加载视觉由宿主负责。A2UI 不保证骨架屏、动画帧率,也不会自动恢复错误载荷。
渲染器应拒绝未知 Surface 的更新、活跃 Surface 的重复创建、不支持 Catalog、非法组件图、不安全 URL 与未授权 Action。消息顺序、重复、重连、背压和截断流的处理方式由外围传输层明确。
用户 Action
用户激活组件时,渲染器可以通过所选传输向 Agent 发送 Action 事件,并按客户端到服务端 Schema 提供来源信息和经过解析的允许上下文。宿主仍必须授权操作;Button 定义本身不代表权限。
双向数据绑定默认只在本地生效。只有配置同步或 Action 上下文时,客户端数据才发送到服务端。不得传输操作不需要的私有值。