生成式 UI:框架、协议与实现类型

00AgentUIGenUICoding

生成式 UI 是由 AI 根据用户的上下文、意图和数据,实时动态地创建和调整的用户界面,目标是提供适应用户需求与场景的个性化体验。

Generative UI 的核心是从”设计界面”转变为”设计能够生成界面的系统”。

GenUI 优点GenUI 挑战
个性化:提供针对用户角色、偏好和工作流程定制的界面。
快速原型设计:即时从提示生成 UI,加速设计迭代过程。
动态适应性:用户界面可根据上下文或用户行为实时改变。
设计到开发成本降低:缩小设计、开发和部署之间的差距。
质量控制风险:生成的 UI 不一定符合品牌或无障碍标准。
安全问题:运行时生成的动态用户界面引入了风险。
性能开销:若未经过优化,实时生成可能会拖慢性能表现。
用户体验一致性:若缺乏约束,界面体验可能不一致。

目前 GenUI 做得比较好的产品:

Gemini-Visual Layout灵光-全模态内容Gemini-Dynamic View灵光-闪应用
截图
260207-genui-1-s
互动杂志Server Driven UI/DSL实现(组件/模块级)
260207-genui-2-s
互动杂志HTML 实现(像素/标签级)
260207-genui-3-s
迷你 App
260207-genui-4-s
迷你 App
主要目标“看”:优化信息的阅读和浏览体验。“用”:通过交互来探索数据或完成任务。
原理将文本、图片、视频进行美学排版,整理成模块化卡片。LLM/Agent 实时编写代码,生成一个可交互可独立部署的 html, iframe 嵌入到页面中呈现
典型场景旅游攻略、产品对比、购物清单、灵感搜集。交互式图表、计算器、学习模拟器、个性化选品。

生成式 UI 如何工作

GenUI 解读意图(来自用户指令、系统状态或历史数据)并生成相应的界面组件。

  1. 用户输入或上下文触发:可以是文本指令、语音命令,或诸如用户行为、应用状态等上下文数据。
  2. AI 推理:模型解析输入,以理解用户的意图
  3. 界面生成:系统根据意图编排或直接生成定制的 UI 元素。
  4. 渲染与执行:使用前端框架(如 React)渲染 UI,并动态连接到业务逻辑或 API。

其中也包括自适应的界面更新 adaptive UI,根据不断变化的用户需求来调整界面。

关键要素

260207-genui-5

Agent 协议和框架

生成式 UI 的核心是 Agent 驱动的动态界面生成与交互。Agent 是决策核心,其框架定义了能力边界,协议则保障了交互的稳定性与扩展性。

维度框架/协议相关要素对应的生成式 UI 能力典型示例
核心驱动逻辑框架的核心模块(意图识别、任务规划、工具调用、上下文记忆)动态理解用户需求,智能规划界面组件与布局,实现个性化交互用户输入“生成数据分析仪表盘”,Agent 解析需求后规划图表、筛选器等组件生成适配界面
通信交互保障核心协议(Function Call、JSON Schema、gRPC)确保 Agent 与前端、后端、第三方工具的信息传递准确,界面渲染正常Agent 按 JSON Schema 输出组件描述,前端精准解析并渲染;多 Agent 协作时通过协议高效传递信息
场景适配扩展框架扩展性设计(模块化、插件机制、多记忆模块)适配多终端(PC/移动端)、多业务场景(电商/医疗/办公),对接多数据源Agent 加载数据库插件,使生成式 UI 对接业务数据库;切换记忆模块实现用户偏好记忆
可靠性与安全安全机制(权限校验、任务审核、上下文隔离);协议规范约束(参数校验、格式限制)规避生成内容不可控、权限滥用等风险,保障界面生成与交互安全通过协议限定 Agent 可调用工具列表;通过框架权限模块控制数据访问范围,防止恶意组件生成

Agent 协议

用来“让不同Agent/组件能互通”的消息/事件/数据格式规范——Agent 之间怎么对话、前后端怎么对话、UI 怎么描述、事件怎么流、用什么传输等等。

目前主流的协议包括:

特性 / 协议MCPAgent2Agent (A2A)Agent Protocol
核心目标连接 LLM 与数据/工具 (Universal Adapter)Agent 间协作与发现(Interoperability)标准化 Agent 控制 API (REST Interface)
架构模式中心化 Client - Server:含 Host(统筹)、Client(通信代理)、Server(能力提供)三大组件去中心化 P2P 对等架构,以 Agent 为核心,通过 Agent Card 实现动态发现与直连任务导向的 Client-Server 模式,侧重于任务生命周期管理
通信协议Client - Host - ServerHTTP + JSONREST API (OpenAPI Spec)
传输层Stdio (本地), HTTP+SSE (远程)HTTP / WebSocketHTTP (REST)
典型用例让 Claude 读取本地 Git 仓库或 PostgreSQL多 Agent 寻找彼此并协作AutoGPT 跑分评测
主要维护者Anthropic (Open Source)Google / Linux FoundationAI Engineer Foundation

MCP:“Agent/AI 应用 ↔ 工具/数据”的连接协议

A2A:“Agent 彼此聊天协作”的 agent-to-agent 通信协议

Agent UI 协议

Agent 与 UI 层、上下游系统的 “通信规则”,确保各方数据传递和指令交互的一致性、准确性。

概念MCPMCP AppsA2AA2UIAG-UI
作用定义 Agent 如何调用外部工具 / 数据源(tool/data)把 “工具返回交互 UI” 标准化进 MCP(ui://、可审计、双向通信)让不同 AI Agent 互相发现、握手并协作完成任务的通信协议Agent 输出 JSON 描述意图,客户端用原生组件渲染(跨端、安全、非任意代码)让 Agent App 可靠地 “边跑边同步”:生命周期、文本流、工具调用、状态快照 / 增量等统一成事件流
生态位工具连接层 (Connector)能力提供方 (Provider)协作层 (Network)渲染层标准 (Spec)展示层 (Vision)
层级Agent ↔ 工具的连接层MCP 的 UI 标准Agent 间协作层UI 描述 / DSL 层运行时交互 / 会话协议层
简单类比“Agent 的工具插座:Agent 想查数据,MCP 帮它插对数据库的接口”“带 USB 接口的智能设备:比如支持 AI 读取的数据库软件,既能返回数据也能给 Agent 展示操作界面”“AI 界的微信 / Slack:我不会订票,但能发消息给‘订票 Agent’让它做”“Agent 发乐谱 (JSON),浏览器用钢琴 (React/Flutter) 把它弹出来”“魔法报纸:内容和排版根据看报人的操作自动变化,边看边更新”

Agent 框架

用来“写/跑 agent 逻辑”的代码库或运行时——编排、多 agent 协作、工具调用、状态/记忆、容错、部署等

  • LangChain / LangGraph:面向生产的 agent 编排/运行时与图式工作流。
  • AutoGen:多 agent 会话/协作框架。
  • CrewAI:多 agent 编排框架。
  • Google ADK:Google 的 agent 开发/部署框架。

Agent UI 框架

是界面开发的 “骨架” 与 “能力引擎”,定义了 Agent 如何与 UI 组件联动、如何驱动界面动态生成和交互

Agent UI 框架/SDK

  • Vercel AI SDK(含 UI 能力):更偏“AI 应用开发工具箱”,把工具调用结果映射到前端 UI 的路径很成熟,但它本身不等同“agent 编排框架”。
  • assistant-ui / CopilotKit / Tambo / Crayon:主要解决“怎么把 agent 交互做成产品级 UI”,属于 UI SDK/前端框架范畴。
  • Chainlit / Streamlit / Gradio:更像“快速把 agent 跑起来给人用”的 UI 容器/原型框架。
  • Open WebUI:成品外壳/平台型 UI。

生成式 UI 的实现类型

A. 客户端代码生成 (Micro-App)B. 服务的驱动的结构化 UI (SDUI / DSL / Catalog)C. 工件编辑器 (Canvas Editor)
核心逻辑写代码填参数改文档(Edit Artifact)
代表产品 / 框架/协议Claude Artifacts;Gemini Dynamic View;蚂蚁灵光-闪应用
img
Gemini Visual Layout;蚂蚁灵光-对话;A2UI
img
Gemini Canvas;OpenAI Canvas
img
LLM 输出什么可执行前端代码结构化 JSON/DSL:组件树 / 布局 / 数据绑定 / 动作(输出意图和参数,不是代码)对文档 / 代码状态的编辑指令(diff/patch/ 重构)、可运行的代码 / 内容
前端渲染什么沙箱里跑的独立小应用本地预置的组件库(Design System)拼装出的 UI 原生 / 网页编辑器 + 运行容器
交互闭环怎么做UI 事件在沙箱内部处理;需要时把状态 / 结果回传对话UI 事件编码成结构化消息回给 agent;agent 决策后输出新的 JSON/patch用户选区 / 标注 → 模型做局部修改 → 持续迭代
实现模式iframe/webview sandbox;CSR 运行 + 热更新- CSR 映射(客户端服务器渲染映射); - 跨端 native renderer; - RSC stream 也能做但少见LLM 拥有对文档 / 代码状态的读写权限。编辑器模型 + 预览容器;Web 常是 CSR;代码预览可能用 sandbox / 容器
优势自由度极高:能做新交互、游戏、复杂可视化稳定、安全、品牌统一、跨端、可治理;在 schema 约束下低幻觉、可校验最适合长任务、局部编辑、版本化与协作
代价- 稳定性(代码报错 / 样式崩) - 安全(执行不可信代码) - 一致性(风格分裂) - 成本(token / 推理)- 创造力受组件库限制; - 要维护 catalog/schema/renderer; - 复杂交互要扩展协议- 不一定 “每轮都生成 UI”; - 更像创作环境; - 实现细节复杂
  • CSR(Client-Side Rendering):客户端渲染模式下,LLM 输出 JSON 数据,前端根据预定义映射表决定渲染哪个组件。逻辑位于客户端。
  • RSC(React Server Streaming):在服务器模式下,LLM 在服务器生成 React 组件并流式传输到前端渲染结果。客户端无需将数据映射到组件,只需接收 UI 树。

Q&A

MCP Apps 和 A2UI 有什么不同?

  • MCP Apps:先定义组件/App。
  • A2UI:由模型实时驱动生成的动态 UI 的协议。
维度MCP AppsA2UI
基本形态在 MCP 上扩展获取 “UI 资源” 能力Agent 输出声明式 JSON UI 蓝图,客户端以本地组件库渲染
架构以 HTML/JS 为主的 “远端 UI”,把可交互页面作为一种可获取的资源,嵌入 Agent 对话 / 工作流中数据描述 UI + 客户端原生渲染为核心,确保跨端一致性与安全可控
功能定位让工具调用不仅返回文本和数据,也能返回可交互界面告诉前端“要什么样的界面”(声明式、跨端渲染),让应用能够接入可由 Agent 生成的界面。
适用于更适合“工具侧提供 UI 模板”,Host 加载呈现;可做“开箱即用”的工具 UI。更适合“Agent 按上下文生成 UI 意图”,Host 负责渲染与交互闭环。
设计表现力UI 作为资源(页面)返回,表现力可以接近 Web 上限(图表、动画、媒体、复杂布局均可)组件树声明式 JSON,Agent 能直接“表达 UI 意图”。表现力取决于 Host 组件库丰富度。更适合做“增量更新 UI”(修改某字段、局部刷新、动态添加组件)。
关键机制- MCP Server 预声明 UI 资源,并把 UI 与 Tool 元数据关联 - Host 在需要时拉取 UI 内容(text/html)并渲染 - UI 通常以 iframe 沙箱方式运行,隔离宿主环境 - UI 与宿主 / 工具之间通过 MCP 的 JSON-RPC 通道进行双向通信- Agent 回复不发送 HTML / 可执行代码,而是发送 UI 组件树的 JSON 描述(结构、属性、事件等) - Host / 客户端内置组件目录和渲染器,将 JSON 映射为 Web/Flutter/iOS/Android 等平台的原生组件 - 传输层可与 A2A、AG-UI 或其他消息管道结合,强调 “格式标准化 + 传输解耦”
典型场景对话内嵌业务 UI:权限配置、审批流、客服信息收集、运维操作面板等。 工具结果可视化:数据分析图表、报表、仪表盘的交互呈现。 复杂输入收集:多字段表单、多步骤 wizard、批量选择等。即时生成表单/控件:预订、填报、筛选、对比等对话场景中动态生成 UI。 跨端一致体验:同一套 UI 描述可落地到 Web/Flutter/移动原生。 多代理协作:子代理能产出 UI 蓝图,被主代理/宿主理解与组合(更利于互操作)。
开发优势- 前端门槛低,Web 技术栈成熟。 - UI 表达力强,易做复杂界面与快速迭代。 - 对已有 MCP 系统可渐进增强(兼容纯文本)。Host 提供组件库与渲染器,Agent 输出 JSON 蓝图: - 原生渲染一致性好,可访问性与平台体验更统一。 - 组件化扩展清晰:新增组件类型即可扩展表达力。 - 可用模板 + 数据减少 LLM 结构生成难度。
挑战跨宿主一致性与样式融合需要额外工程。安全审核与沙箱策略需要严格执行。需要理解并实现组件映射/渲染层(初期成本较高)。规范早期阶段可能存在变动,需跟进版本演进。
  • MCP 解决 Agent 如何调用外部工具/数据源的问题,属于 Agent ↔ 工具 的连接层。
  • A2UI 让 agent 输出声明式 JSON UI 意图,客户端用本地组件库渲染,属于UI 描述/DSL 层

两者可以同时存在:一个用于“工具自带的交互面板”,一个用于“Agent 临场生成的跨端界面”。

260207-genui-6-s

Agent skills 和 A2UI 有什么不同?

  • Agent skill:让 agent “会做事”(把任务变成可复用、可执行、可观测的能力单元)。
  • A2UI:让 agent “会表达界面”(把 UI 变成可控的声明式意图,让客户端拼装)。
维度Agent skillA2UI
核心问题任务怎么做、怎么稳定做、怎么复用UI 怎么说、怎么安全渲染、怎么交互闭环
所在层行为/流程层(planning → tool use → state)呈现层(UI intent → renderer → event loop)
面向对象Agent 自身能力(步骤、策略、边界、容错)客户端 UI 组件目录(catalog)+ UI 描述(DSL/JSON)
输出形态通常是:计划/步骤、工具调用、状态更新、产物通常是:组件树描述、数据绑定、事件定义、增量 patch
稳定性来源SOP/策略约束、工具契约、重试回退、测试与监控schema 约束、catalog 白名单、renderer 控制、事件协议
失败模式做错事:调用错工具、流程跑偏、状态不一致表达不对:组件选错、参数不对、布局不佳(但不会“跑崩”)
治理方式版本管理、评测、回放、权限/工具白名单schema 校验、catalog 版本、渲染兜底、禁用任意代码
Token 成本主要花在推理与工具编排主要花在 UI 描述(可通过短 ID/patch 大幅压缩)
典型用途把“复杂任务”封装成可调用能力(像函数/流程)把“下一步交互”变成 UI(卡片/表单/对比/向导等)

Skill = 行为逻辑 + UI 合约(A2UI 风格)+ 事件回路

把 A2UI 当作某些 skill 的“输出/交互壳”:

  • skill 负责:识别意图 → 拉数据/调用工具 → 产出“候选方案/状态”
  • A2UI 负责:把候选方案变成 UI(对比卡、筛选器、Stepper、确认面板)
  • 用户点选/提交 → 事件回流 → skill 继续执行下一步
© 00RSS