模块 6Agent UX 与生成式 UI

Generative UI

模型选择 UI 能力,不拥有渲染器

  • 前端注册允许的组件和操作
  • 模型只输出组件类型、受限参数和数据引用
  • Renderer 决定真实 DOM、样式和行为
  • 未知组件或字段降级为安全文本/错误视图

UI 协议要表达结构但限制自由度

  • 判别联合类型和组件版本
  • Props Schema、数据类型和长度上限
  • 有限的布局容器与嵌套深度
  • 事件只引用白名单 Action,不传任意脚本

组件 Registry 是产品与治理边界

  • 组件用途、适用条件和无障碍契约
  • 允许的数据分类与交互权限
  • 版本、Owner、实验状态和废弃流程
  • 服务端/客户端能力协商

MCP Apps 把交互 UI 作为协议扩展交付

Server、Host 与 View 分担不同责任

  • MCP Server 声明 Tool 和 UI Resource
  • Host 决定是否信任、获取和承载 UI
  • View 在隔离环境中渲染并通过受控 Bridge 通信

UI Resource 与 Tool Result 解耦

  • 使用 ui:// 标识可审查和可缓存的模板资源
  • Tool 元数据关联所需 UI,但数据仍来自调用结果
  • 模板、数据与交互协议分别版本化

Host 拥有最终安全与体验边界

  • Sandbox iframe、CSP 和外部 Origin 白名单
  • 摄像头、麦克风等能力需要显式 Permissions
  • postMessage/App Bridge 校验来源、消息类型和会话

扩展能力必须协商并可降级

  • Host 不支持 UI 扩展时返回文本或结构化结果
  • 未知版本、资源失效和渲染失败不得阻断 Tool 事实结果
  • Server 升级前做跨 Host 兼容和供应链审查

数据与表现分离

  • 大型数据通过 Artifact/Resource ID 引用
  • 前端按当前用户权限重新获取
  • 格式化、排序和计算使用确定性代码
  • 禁止模型在展示参数中携带秘密或未验证 HTML

流式 UI 更新需要稳定 Patch 语义

  • 先创建占位节点,再增量更新内容
  • 按节点 ID 和版本应用 Patch
  • 拒绝指向不存在/过期节点的更新
  • 完成后做整树 Schema 与业务校验

用户交互回到 Agent 时保持语义

  • Action ID、组件上下文和用户输入
  • 再次校验身份、Schema 和当前状态
  • 乐观更新只用于可回滚动作
  • 防止重复提交和旧组件触发新状态

生成式 UI 的验收维度

  • 任务完成效率和信息匹配
  • 布局、响应式、无障碍和本地化
  • Schema 合法率、降级率和组件误选
  • XSS、URL、数据泄露和交互越权测试