跳转至

第48章 Generative UI 与富交互


DataAgent 工作台里的“富交互”不能理解成多输出几张图、让模型生成几段 HTML。图表如果没有指标口径,表格如果没有字段权限,按钮如果绕过审批,Artifact 如果覆盖证据链,界面越丰富,事故越难复盘。毛利异常分析这类 ChatBI 原型很快会暴露这个问题。用户问“华东区本月毛利异常来自哪些 SKU”,原型返回一段文字和一张柱状图。试点一周后,业务团队会要求筛选门店和品类,财务要把异常分析保存成月度经营说明,数据治理团队要回放 SQL、指标口径、审批记录和导出动作,安全团队会检查敏感字段是否因为模型“画表格”而泄漏。对话框在这个过程中变成工作台,模型输出也变成可操作界面的一部分。富交互层处理的是另一组约束:图表、表格、表单、Artifact 和审批卡片怎样承接消息流、工具进度和前端协议。工具结果不能只是被推送到前端,还要进入可操作、可审计的界面对象。

很多团队在原型阶段会让模型返回一段 Markdown 表格,或者直接让模型生成 ECharts 配置。演示时这很快,生产时问题也很快:表格字段没有经过权限裁剪,图表轴含义和指标口径没有绑定,用户修改筛选器后没有回写上下文,导出按钮绕过了审批,后续复盘时也不知道用户看到的是哪一版图表。界面越“智能”,平台越要能说明它展示了什么、允许用户做了什么、哪些动作被拒绝、哪些证据进入了报告。

Generative UI 的关键,是让 Agent 在受控协议内选择、填充和编排平台登记过的组件,而不是让模型随手生成界面。模型可以建议“这里适合柱状图”“这里需要审批卡片”“这份报告可以形成 Artifact”,但最终渲染必须经过组件白名单、字段权限、数据引用和服务端策略。否则富交互会从用户体验优势变成新的攻击面和审计盲区。对 DataAgent 来说,富交互还承担“把分析变成工作”的责任。文字回答可以结束一次对话,图表和 Artifact 往往会进入下游流程:业务负责人要保存经营说明,财务要修改措辞并提交审批,区域经理要继续筛选门店,数据团队要回放 SQL 和指标口径。每个动作都要成为事件,进入 trace、审计和评估样本,而非停留在浏览器里的临时状态。本章讨论 Generative UI、可编辑产物、结构化渲染、审批控件、前端契约和 XSS 防护。读者需要把富交互理解成 Agent 平台的一层治理界面:工具调用结果要映射到受控组件,可编辑产物要保留证据链,审批控件要能流转状态,渲染层还要防止脚本注入、越权动作和敏感字段泄漏。从对话 UI 进入 Generative UI 后,界面对象会分化为五类。

表48-1:从对话 UI 到 Generative UI 的能力递进。来源:本书整理。

第47章 已具备的能力 业界代表 第48章 需要补上的富交互能力 企业落地边界
流式消息和工具进度 Vercel AI SDK 将工具结果映射为图表、表格、表单等白名单组件 JSON 渲染之外,还要绑定字段权限、数据引用和审计
生产级对话组件 assistant-ui 在消息流旁承载可折叠工具卡片、引用面板和操作入口 对话组件解决基础交互,不负责业务组件注册、审批和证据链
应用内 Copilot 与共享状态 CopilotKit 让 Agent 读写业务页面状态,并触发表单、筛选器和人在回路卡片 组件动作必须和业务系统权限、租户边界、审批策略绑定
Agent 与前端事件协议 AG-UI 用事件表达 UI patch、工具渲染、共享状态和 interrupts 协议只能统一交互语义,企业仍要定义组件白名单、策略和观测字段
对话旁独立工作区 Claude Artifacts / OpenAI Apps SDK 把报告、图表组合、MCP 工具组件做成可编辑、可保存的产物空间 需要版本、协作、数据来源、组件安全和访问控制治理

表 48-1 指向一个基本判断:Generative UI 的价值不在视觉效果,而在工作界面。它把对话流里的工具过程、业务对象、审批判断和可编辑产物,变成用户能够验证、调整、确认和复用的对象。

表 48-1 保留为能力递进表,是为了把第47章的事件流、消息和工具状态,接到本章的可操作对象上。缺少这个递进关系,团队容易把富交互误解为“把消息渲染得更漂亮”;关系明确后,平台就能逐项检查:组件是否登记,数据是否引用,动作是否鉴权,用户修改是否回写,审计是否能回放。

设计评审时,可以直接把一条工具结果拿来走查:它进入了哪个组件,组件能展示哪些字段,用户能做哪些动作,动作是否需要二次确认,失败后状态如何恢复。只要其中一步回答含糊,富交互就还停留在原型阶段。


48.1 国内企业 Generative UI / DataAgent UI 对比

国内企业 Agent 产品也在从“对话生成答案”转向“对话驱动任务界面”。第47章已经讨论了对话入口、应用模式和流式状态,这里更关注工具和组件如何进入可控界面:腾讯元器把 MCP 插件作为可配置能力接入,阿里云百炼 Model Studio 在创建应用时区分 Agent Application 与 Workflow Application,Coze Studio 则把节点输入、变量和试运行表单做成受控配置面。这些界面的共同点不在视觉风格,而在治理方式:模型能力先收敛到工具契约、流程节点、参数表单和运行状态,再进入用户可操作的界面。

腾讯元器的插件广场和 MCP 插件表单,体现的是“外部能力先登记,再进入界面”的路径。DataAgent 的查询、导出、通知和工单动作也应先进入工具注册表,再映射成 UI 卡片,不能让模型在对话中临时拼接任意外部调用。MCP 插件接入只解决协议和发现问题,租户鉴权、动作审批、审计留痕仍属于企业平台边界。阿里云百炼 Model Studio 把 Agent Application 与 Workflow Application 放在创建入口,强调任务容器的差异。自主决策型任务适合在对话中生成组件,流程明确的任务更适合进入工作流工作台和节点状态回放。Coze Studio 的节点试运行表单则说明,表格、图表、表单和审批卡片都应能回到工具输入、输出和日志,而非只在最终消息里展示一个静态结果。

图48-1:腾讯元器接入 MCP 插件的配置表单

图48-1:腾讯元器接入 MCP 插件的配置表单。来源:产品界面截图。Alt text:表单展示 MCP 服务地址、鉴权方式、工具列表等配置项,体现国产 Agent 平台集成外部工具的典型 UI 交互方式。

把工具能力放进界面之前,平台要先知道这个工具是谁、能做什么、暴露哪些参数。图 48-1 把名称、描述、URL 和高级选项都做成受控字段,正好对应企业 DataAgent 的工具注册要求:模型不能临时拼接任意外部调用,工具注册、Schema 校验、权限和渲染组件要在同一条链路里绑定。

图48-2:阿里云百炼 Model Studio 的应用类型创建界面

图48-2:阿里云百炼 Model Studio 的应用类型创建界面。来源:产品界面截图。Alt text:界面展示对话助手、工作流助手等应用类型卡片,每类标注适用场景,体现企业 Agent 平台按任务形态提供差异化模板的 UI 设计。

任务形态不同,界面容器也不同。图 48-2 把 Agent Application 和 Workflow Application 的分流放在创建阶段,这个细节对平台设计很有价值:自主决策型任务适合对话内组件,流程明确的任务更适合工作流工作台和节点状态回放。Generative UI 要先判断任务该落在哪种容器里,不能把所有组件都塞进聊天窗口。

图48-3:Coze Studio 单节点试运行表单

图48-3:Coze Studio 单节点试运行表单。来源:产品界面截图。Alt text:表单展示节点名称、输入参数填写区、运行结果展示区,体现低代码平台对工作流节点的调试 UI,输入参数、看输出结果、验证单步逻辑。

调试体验也应围绕契约展开。图 48-3 把输入、变量类型和运行按钮放在同一个单节点试运行表单里,给企业工作台一个很具体的参照:Schema、表单、运行结果和日志要能被同一个工具节点串起来。把工具日志原样塞回对话气泡,只会让调试和审计都变得更难。


48.2 任务化交互界面

企业 Agent UI 的演进通常从任务化交互开始,而非从聊天框直接跳到“自动生成完整应用”。用户要完成的是业务任务:分析异常、生成报告、提交审批、导出数据、修正字段映射、确认下一步动作。企业 DataAgent 工作台可以拆成六类任务入口。任务入口要和组件生命周期绑定。异常分析里的图表可能只服务当前会话,也可能被保存进经营报告;参数修正里的表单会影响下一次工具调用;审批确认会改变 Run 状态;协作交接会把上下文带到工单或消息系统。前端如果只把这些对象当作消息附件处理,用户看起来能操作,后台却无法知道哪个动作改变了业务状态。更稳的方式是让每个组件都有 component_iddata_refallowed_actionsstatetrace_id,用户动作都通过 Runtime 或 Policy 回写。

富交互也会改变错误处理方式。普通文本回答出错,前端可以展示重试;图表出错,系统要区分是查询失败、图表配置错误、字段权限不足,还是数据量太大;Artifact 保存失败,用户需要知道草稿是否还在本地、是否已经进入审阅、是否会覆盖旧版本;审批卡片失败,则要明确审批请求有没有送达、是否超时、是否可以转派。Generative UI 越接近业务动作,错误状态越要细。

表48-2:DataAgent 工作台任务入口。来源:本书整理。

任务入口 用户真实意图 Generative UI 承载什么 下游系统
异常分析 找出毛利、库存、履约异常的原因 图表、表格、口径说明、钻取入口 数据仓库、指标平台、告警系统
经营报告 把分析结果整理成月报或周报 可编辑 Artifact、图表引用、版本记录 报告系统、文档系统
参数修正 修改时间范围、门店、品类、指标口径 筛选器、表单、推荐参数 Semantic Layer、Tool Registry
审批确认 执行导出、下发任务、触发补货建议 审批卡片、影响范围、证据列表 Policy、Workflow、审计系统
数据核验 确认字段映射、异常数据、缺失口径 表格、字段解释、质量提示 数据治理平台
协作交接 转交给财务、运营或区域负责人 评论、任务状态、引用上下文 工单、消息系统、任务系统

表 48-2 的分层把讨论拉回业务任务。企业工作台的每一个控件都可能连接工具、权限、数据和审计。图表背后有 data_ref、指标口径和查询快照;按钮背后有动作权限、审批策略和 trace;Artifact 是可编辑、可复用、可归档的业务产物,不是更大的消息气泡。

在企业语境里,Generative UI 可以定义为:Agent 在受控协议内选择、填充和编排平台已登记的 UI 组件。模型不负责写前端代码;它负责把工具结果以业务对象的形态送进界面。这个定义还隐含一个产品约束:组件必须少而稳。早期平台不需要支持几十种图表、复杂画布和任意自定义控件。它更需要把少数高频组件做扎实:图表能说明口径和数据来源,表格能处理权限和大结果,表单能回写参数,Artifact 能保留版本和证据,审批卡能记录责任。组件数量过多会让模型选择更难,也会让安全审计和回放成本上升。

组件白名单还要配合设计系统。企业工作台里的图表、表格、审批卡和 Artifact 不应由每个业务团队各画一套,否则用户在不同 Agent 之间切换时会重新学习状态含义,安全团队也很难统一审计。平台应给每类组件定义统一的空状态、加载态、错误态、权限拒绝态和审批态。这样富交互不会变成一组漂亮但互不兼容的页面,而是能被复用、测试和监控的平台能力。

48.3 工具调用渲染模式

Generative UI 的边界必须在 L1 就讲清楚。企业平台不应让模型直接决定 DOM、脚本、下载链接或业务动作,而应让模型输出结构化意图,再由前端和服务端共同校验后渲染白名单组件。

表48-3:Generative UI 渲染契约与治理边界。来源:本书整理。

概念 定义 与相邻概念的区别
Generative UI LLM 或 Agent 根据任务上下文选择并填充受控 UI 组件 不等同于模型生成任意前端代码
工具调用渲染 将 Tool Call 的输入、状态和输出映射为卡片、图表、表格或表单 不等同于把工具日志原样展示给用户
Artifact 对话之外的可编辑、可保存、可复用产物,如报告、分析说明、代码或图表组合 不等同于消息附件,它有生命周期和版本
业务控件 与业务动作绑定的筛选器、按钮、表单和审批组件 不等同于装饰性 UI,它会触发权限和审计
组件白名单 平台允许 Agent 引用的组件类型、字段、版本和动作集合 不等同于前端组件库全集,默认应最小化暴露
审批卡片 在高风险动作前展示影响范围、证据和确认入口 不等同于普通确认弹窗,它需要留痕和策略绑定

工具结果到 UI 的最小链路应是:工具执行产生结构化结果,Runtime 为结果附加权限和证据,Render Contract 决定可渲染组件,前端根据组件白名单和用户权限渲染,用户动作再回到 Policy 和 Observability。任何一步跳过,都会让界面变成安全薄弱点。Render Contract 还要处理“看得见”和“能操作”的差异。用户可以看到一张聚合图,不代表可以下载明细;可以编辑报告草稿,不代表可以发布到外部;可以看到审批卡,不代表可以批准。组件契约里应把 visible_fieldsavailable_actionsapproval_requiredaudit_level 分开。这样前端不会把权限简化成一个布尔值,后端也能在用户点击动作时再次校验。企业渲染对象通常分成五类。

表48-4:工具结果可映射的受控渲染对象。来源:本书整理。

渲染对象 典型输入 用户动作 必要控制
图表 聚合数据、图表规格、指标口径 切换维度、钻取、导出图片 显示口径、限制维度、保留数据快照
表格 查询结果、字段解释、脱敏状态 排序、筛选、复制、下载 字段级权限、行数上限、导出审批
表单 工具参数、业务动作参数 修改参数、提交任务 Schema 校验、服务端二次鉴权
Artifact 报告、方案、代码、长分析 编辑、保存、提交审阅、导出 版本管理、证据链、协作权限
审批卡片 高风险动作、影响范围、证据列表 批准、拒绝、转派、补充意见 强制留痕、策略绑定、状态回放

表 48-4 划出的边界很直接:模型可以建议组件和数据绑定,但不能绕过组件注册表;模型可以建议动作,但不能直接执行高风险动作;模型可以生成报告草稿,但不能覆盖底层证据。这条边界对安全很关键。模型生成的 Markdown 里可以写“点击这里导出全部客户明细”,但真正的导出按钮必须来自组件注册表和策略引擎;模型可以在报告里建议“下发补货任务”,但补货动作必须进入审批卡和工作流;模型可以解释某张图的异常,但图表数据仍要通过 data_ref 受控读取。把文字建议和业务动作拆开,富交互才不会变成 prompt 注入的放大器。

48.3.1 受控渲染容易被绕开的地方

受控渲染最容易在五个位置被绕开。第一,让模型直接生成 HTML/JS,原型很快,但生产环境会引入 XSS、越权动作和审计缺口;模型应只输出组件意图,平台按白名单渲染。第二,用图表数量制造专业感,但没有口径、来源和样本范围的图表会放大错误结论;每张图都要绑定指标口径、数据快照和证据引用。第三,把 Artifact 当成消息附件,报告一旦进入业务流程,就会缺少版本、权限和审批记录;Artifact 必须独立管理生命周期。另外两个问题更偏工程治理。高风险按钮如果只在前端隐藏,用户或脚本仍可能绕过界面直接调用动作,所以所有业务动作都要在服务端二次校验。历史消息回放也不能忽略,组件升级后如果旧消息不可读,审计就无法复现当时用户看到的内容。平台要保留组件版本,必要时把旧组件降级为静态摘要。


48.4 Artifacts 与可编辑产物

Generative UI 位于 Tool Registry、Policy、Runtime、Observability 与 Console 的交汇处。后端负责工具执行、权限判断、结果结构化和审计留痕;前端负责按白名单渲染、展示证据链、收集用户确认和反馈。稳定架构不应让模型输出直接进入页面,而应由 Render Gateway 或 Conversation API 把内部事件转换成受控渲染契约。

图48-4:Generative UI 在企业 Agent 平台中的位置

图48-4:Generative UI 在企业 Agent 平台中的位置。来源:本书自绘。Alt text:分层图中 Generative UI 位于 Agent 与用户之间,向下订阅工具调用结果和状态事件,向上展示富内容并把用户编辑回写给 Agent,标出它比普通对话 UI 多出的渲染与交互职责。

图 48-4 展示了三个边界。Tool Registry 返回的是工具能力和结构化结果,不是前端组件;组件选择要经过 Render Contract,避免工具开发者把内部日志、敏感字段或调试参数直接暴露给用户。Policy 不只管后端工具执行,也要管前端动作;导出、提交审批、转派任务、保存 Artifact、复制明细都属于业务动作,必须和用户、租户、数据范围、风险级别绑定。Observability 还需要记录用户看到的界面状态,平台要知道用户看到了哪张图、展开了哪张表、修改了哪个参数、批准了哪个动作。

48.5 业务控件与数据可视化

企业 Generative UI 的组件划分建议保持克制。组件越多,表达力越强,但越难治理。早期可以从 charttableformartifactapproval_card 五类开始。

表48-5:Generative UI 组件职责与失败模式。来源:本书整理。

组件 职责 输入 输出 失败模式
Render Gateway 定义工具结果到 UI 组件的映射 tool name、Schema、result、policy 渲染契约 Schema 不匹配、组件缺失
Component Registry 维护允许 Agent 引用的组件白名单 component type、版本、权限 组件定义 版本冲突、越权组件
Chart Renderer 渲染图表和数据摘要 数据集引用、图表规格、口径 图表卡片 数据过大、图表误导
Table Renderer 渲染表格、字段说明和脱敏状态 行列数据或 data_ref 表格卡片 敏感字段暴露、浏览器卡顿
Artifact Workspace 编辑和保存长产物 Artifact 文档、证据引用、版本 草稿、审阅件、导出件 覆盖证据、冲突编辑
Approval Flow 高风险动作确认和审批 动作、影响范围、证据 审批状态 审批绕过、状态不一致
UI Telemetry Adapter 记录前端交互和渲染状态 trace、组件状态、用户动作 指标、日志、回放索引 trace 断链、隐私字段泄漏

示例渲染契约如下。它描述的是后续实现可以采用的接口形态,不代表当前仓库已经实现完整 API。

{
  "render_id": "render_margin_chart_001",
  "conversation_id": "conv_20260609_001",
  "message_id": "msg_042",
  "tool_call_id": "call_margin_analysis_01",
  "tool_name": "analyze_margin_by_sku",
  "component": "chart",
  "component_version": "1.0",
  "title": "华东区毛利异常 SKU 分布",
  "data_ref": "dataset://retail-demo/margin-analysis/20260609/run_001",
  "spec": {
    "chart_type": "bar",
    "x": "sku_name",
    "y": "gross_margin_delta",
    "color": "category",
    "limit": 20
  },
  "evidence": {
    "metric": "gross_margin_delta",
    "time_range": "2026-06-01/2026-06-09",
    "sql_ref": "sql://trace_abc/query_003"
  },
  "actions": ["drill_down", "export_png"],
  "policy": {
    "mask_fields": ["customer_phone"],
    "requires_approval": false,
    "allowed_roles": ["retail_manager", "finance_analyst"]
  },
  "trace_id": "trace_abc"
}

工具结果到受控组件的映射如下。

图48-5:工具结果到受控组件的渲染契约

图48-5:工具结果到受控组件的渲染契约。来源:本书自绘。Alt text:工具调用返回 JSON 结构,前端按 type 字段分发到对应渲染组件(表格、图表、代码块、表单),契约约束双方不得越权改写彼此的数据,体现前端与 Agent 的解耦。

这里最容易被低估的是 data_ref。小表格可以直接随消息返回,大结果必须走引用。data_ref 让服务端在用户展开、筛选、导出时重新做权限和脱敏判断,也避免把大量明细塞进消息流和浏览器内存。

48.5.1 Artifact 生命周期与工作区

Artifact 的生命周期建议独立于消息生命周期。消息是交流记录,Artifact 是业务产物。一次对话可以生成多个 Artifact,一个 Artifact 可以被后续对话继续引用,也可以进入审批、导出、归档或废弃流程。经营分析 Artifact 至少要记录四类信息。

图48-6:Artifact 生命周期状态机

图48-6:Artifact 生命周期状态机。来源:本书自绘。Alt text:状态机含 generating、generated、editing、committed、archived 等节点,箭头标出用户编辑、提交、归档触发的迁移,体现可编辑产物的完整生命周期管理。

表48-6:经营分析 Artifact 必需记录。来源:本书整理。

Artifact 信息 示例 为什么需要
正文块 经营说明、异常原因、行动建议 支持用户编辑和协作
证据块 SQL、图表参数、指标口径、数据快照 支持审计和复现
编辑记录 模型生成、用户修改、审批意见 区分机器建议与人工判断
状态记录 draft、reviewing、approved、exported、archived 支持工作流和追责

可编辑产物不应覆盖原始证据。DataAgent 生成的经营分析报告可以允许用户修改措辞,但 SQL、指标口径、数据快照和图表生成参数必须作为证据链保留。业务可以润色表达,审计时仍能回到当时的事实基础。

48.6 UI 安全与审批流程

工具调用渲染比纯文本回答风险更高,因为它会诱导用户点击按钮、提交表单、导出数据或保存结论。高风险 UI 必须由策略引擎约束,而非由模型自由决定。

图48-7:UI 安全与审批时序

图48-7:UI 安全与审批时序。来源:本书自绘。Alt text:时序图展示 Agent 产生高风险动作时前端弹出审批控件、用户确认或拒绝、确认后 Runtime 继续执行,拒绝后任务暂停,体现审批在 UI 层的完整交互。

Generative UI 的故障常见于组件授权、契约版本、图表口径、审批绕过和导出权限。表 48-7 将风险放到渲染、审批和导出链路中,便于前端按统一策略处理。这条安全边界的核心原则是:模型可以表达意图,平台决定是否允许;前端可以呈现入口,服务端决定是否执行;用户可以编辑产物,但证据链不能被覆盖。

表48-7:Generative UI 风险点与平台处理方式。来源:本书整理。

风险点 触发条件 平台处理方式
组件越权 模型请求渲染未授权组件或动作 拒绝渲染,降级为安全摘要
Schema 漂移 工具输出字段与组件版本不匹配 使用版本化契约,前端展示兼容错误
图表误导 模型选择不合适图表或隐藏分母 显示图表规格、指标口径和样本范围
审批绕过 前端直接调用业务动作 所有动作服务端二次校验,前端只提交意图
Artifact 污染 文档内容中的提示注入被写入报告 标记生成来源,高风险段落要求人工确认
数据泄漏 表格导出绕过字段脱敏 下载走服务端导出任务,按权限重算数据
旧版本不可回放 组件升级后历史消息渲染失败 组件版本保留兼容层,必要时降级为静态摘要

图48-8:模型输出与前端渲染之间的安全边界

图48-8:模型输出与前端渲染之间的安全边界。来源:本书自绘。Alt text:模型输出经过 HTML 转义、CSP 限制、沙箱隔离等安全层才渲染到 DOM,箭头标出每道过滤关卡,防止模型生成的恶意脚本执行。

48.6.1 渲染安全的产品与工程约束

模型生成代码与组件白名单

生产系统不应让模型直接生成任意 HTML/JS。它表达力强、原型快,但安全边界差,权限审计和漏洞复盘都很困难,只适合隔离沙箱内的实验。企业默认路径应是组件白名单与模型生成配置结合:模型输出受控 JSON,前端只渲染平台允许的图表、表格、表单、报告块和审批卡片;表达力受限的问题,通过持续扩展组件库解决,而非把执行权交给模型生成代码。

对话内卡片与独立 Artifact 工作区

对话内卡片适合小图表、短表格和审批提示,因为上下文连续、用户理解成本低;独立 Artifact 工作区适合报告、方案、代码和长分析,因为这些产物需要编辑、审阅、导出、版本和权限;外部系统跳转适合成熟 BI/ERP 操作,但会带来上下文割裂和 trace 拼接成本。DataAgent 工作台应同时支持前两种形态:小结果留在消息流,长报告进入 Artifact,外部系统只在复用已有业务能力时使用。

前端直接渲染数据与数据引用渲染

前端可以直接携带小型摘要表,以换取首屏速度;但大结果、敏感字段和可导出数据应使用 data_refdata_ref 多一次数据获取,却能在渲染时重新计算权限、分页、脱敏和下载审计,适合企业数据分析。静态截图可以用于报告归档和外部分享,但不可交互、难审计,不应替代数据引用。这个边界要写进渲染契约,否则前端很容易为了体验把完整工具结果直接塞进消息 JSON。

前端工具调用与后端工具渲染

前端工具调用可以读取页面状态、切换筛选器和完成低风险 UI 动作,但它很容易绕过后端治理。涉及数据查询、导出、写入、审批和外部系统调用时,应由后端工具执行并返回受控渲染对象,前端只负责展示和确认。业务系统内 Copilot 可以采用混合模式:前端提供当前页面状态,后端决定可执行动作并记录审计。这个模式契约更复杂,但能同时保留体验和治理边界。

48.7 富交互产物的版本治理

Generative UI 把 Agent 输出从文本扩展为图表、表格、表单、Artifact 和审批卡片,随之而来的问题是版本治理。组件版本、渲染契约、数据引用、用户编辑和审批状态都会影响最终产物。若这些信息没有记录,历史消息在组件升级后可能无法重现,报告也无法说明当时依据的图表配置。富交互链路应从工具结果开始,而非从模型“想渲染什么”开始。工具返回结构化结果和证据引用,Render Gateway 根据 ToolSpec、Policy、组件白名单和用户权限生成渲染契约,前端按契约渲染图表、表格、Artifact 或审批卡片。模型可以建议“这里适合折线图”或“需要审批卡片”,但最终能否渲染、渲染哪些字段、哪些按钮可点击,都由平台决定。这样,UI 组件才和工具契约、权限系统、Trace 保持一致。

异常路径要和正常路径同等重要。组件版本缺失时,前端应降级为只读摘要和证据链接;数据引用过期时,应提示重新计算或请求授权,而非静默显示旧数据;用户权限变化后,历史 Artifact 可以保留文本摘要,但敏感表格和下载按钮必须重新鉴权;审批状态冲突时,前端只能展示当前后端状态,不能根据本地旧状态继续提交动作。Generative UI 一旦能触发业务动作,就必须把这些恢复路径写入渲染契约。

组件白名单要和工具契约一起维护。工具返回什么结构,前端允许渲染什么组件,用户可以触发哪些动作,三者必须匹配。模型不能直接指定任意组件或按钮,Render Gateway 应根据 ToolSpec、Policy 和用户权限生成渲染契约。这样即使模型输出异常,也只能落到安全摘要或兼容错误,而不会直接进入 DOM 或业务动作。Artifact 的编辑记录要区分机器和人工。模型生成草稿、用户修改措辞、审批人调整结论、系统重新生成图表,这些动作都应保留版本。业务报告进入外部会议或归档后,平台要能说明哪些结论来自数据计算,哪些文字经过人工修改,哪些证据在发布后发生过变化。富交互还需要降级策略。组件加载失败、权限变化、历史版本不兼容时,前端应能降级为静态摘要、证据链接或只读报告,而非让整条消息不可读。这个策略会影响审计体验,也会影响长期知识沉淀。Generative UI 的成熟度,不在组件数量,而在产物能否长期可读、可审计、可复用。

从运行角度看,Artifact 还要参与 Trace。一个经营分析报告被生成、编辑、审批、导出后,Trace 中应能串起原始问题、工具调用、图表规格、数据引用、用户编辑、审批意见和导出记录。否则 Artifact 会变成对话之外的孤岛:用户看到的是正式报告,平台看到的却只是一段已经结束的聊天消息。富交互的真正价值,是把 Agent 输出变成可持续维护的业务产物,而非把消息渲染得更漂亮。这能减少误解。

48.8 Artifact 发布边界与长期维护

Artifact 一旦离开对话窗口,就进入企业内容治理。经营分析报告可能被发到会议系统,报价草稿可能进入审批流,SQL 草稿可能被保存成指标查询,图表可能被嵌入周报。发布边界要在生成时就设计清楚:哪些产物只能留在会话里,哪些可以保存到个人空间,哪些可以进入团队空间,哪些可以对外导出,哪些必须经过审批。若这些边界只靠用户习惯判断,Generative UI 会把模型生成的临时内容推到正式业务流程里,后续很难追溯责任。

发布前应做两类检查。第一类是证据检查:Artifact 中引用的数据、文档、指标、SQL、图表和人工修改是否仍然可见,是否有版本,是否存在权限变化。第二类是动作检查:发布、导出、发送、归档这些动作是否由后端确认,是否带有审批状态和审计记录。一个报告编辑器可以允许用户改写表达,但不能让用户通过复制粘贴绕过指标口径和数据权限。一个图表可以允许切换展示方式,但不能让用户隐藏分母、样本范围或筛选条件。富交互越接近正式产物,越需要把证据和动作分开治理。

长期维护还要处理“旧产物如何继续可读”。组件库会升级,图表库会替换,数据引用会过期,权限会变化。平台不能因为前端组件升级就让历史报告打不开,也不能因为用户权限降低就继续展示敏感明细。可行做法是同时保存渲染契约和只读摘要:当旧组件仍兼容时按原样渲染;当组件不兼容时展示静态摘要、证据链接和重新生成入口;当权限变化时保留产物元信息,但重新鉴权敏感数据。这样历史产物既不会完全失效,也不会突破新的安全边界。

Artifact 的反馈也要进入平台。用户编辑某段结论、删除某张图、改写一条建议、驳回一次导出,都说明模型或工具链存在可改进之处。平台应把这些反馈与 run id、artifact id、component type、evidence ref 和用户角色关联起来,供评测和产品运营使用。若多数用户都删除某类图表,可能是图表选择策略有问题;若用户频繁改写指标解释,可能是语义层说明不足;若审批人反复退回同类导出,可能是风险文案和权限策略需要调整。Generative UI 的长期价值,来自这些产物维护记录,也来自生成界面本身。

早期平台可以先建立最小 Artifact 发布协议。协议只需要覆盖几件事:产物类型、产物版本、来源 Run、证据引用、可执行动作、审批要求、导出策略和回滚方式。每个富交互产物都按这份协议进入工作区,前端组件和后端治理就有了共同语言。后续无论扩展更多图表、表单、报告块还是审批卡片,都能沿着同一套生命周期管理,而不会让每个业务系统各自定义一套临时交互规则。

48.9 富交互产物的运营复盘

Generative UI 上线后的复盘范围要覆盖渲染成功率和产物使用情况。一个图表被生成后,用户是否改了指标、隐藏了某个维度、删除了图表、导出了报告、提交了审批;一个报价草稿生成后,哪些字段被销售修改,哪些折扣被审批人退回,哪些证据链接被打开;一个 SQL 草稿进入 Artifact 后,是否被保存成可复用查询,是否因为权限或口径问题被拒绝。这些行为比一次生成结果更能说明组件契约是否合理。

运营复盘应把反馈落回平台能力。用户频繁删除某类图表,可能说明图表选择规则不合适;用户频繁改写指标解释,可能说明语义层说明不足;审批人反复退回同类导出,可能说明风险提示和审批条件不清;历史 Artifact 经常打不开,说明组件兼容和静态摘要策略不足。复盘材料应包含 run_idartifact_id、组件版本、数据引用、证据引用、用户编辑和审批结果。这样前端团队、平台团队和业务 owner 才能围绕同一份证据改进。

富交互产物还需要维护责任。组件库升级由前端团队负责,但旧产物是否可读由平台和内容治理共同负责;指标解释来自数据团队,图表呈现来自前端,导出权限来自安全策略,审批状态来自 Runtime。若这些责任没有写清,Artifact 会变成跨团队无人真正维护的产物。早期可以先要求每种 Artifact 类型都有 owner、保留期限、导出策略和兼容策略。这个要求看似简单,却能防止 Generative UI 从漂亮界面退化成不可复盘的临时内容。

48.10 富交互组件的兼容测试与降级策略

富交互组件上线前,需要准备兼容测试。图表、表单、报告块、审批卡片、数据表格和可编辑 Artifact 都依赖组件版本、浏览器能力、数据结构、权限状态和后端事件。组件在开发环境能渲染,不代表历史消息、旧报告、移动端、只读模式和权限变化后仍然可用。兼容测试要覆盖旧组件版本、旧数据引用、权限降低、证据失效、导出失败和审批状态变化。

降级策略要写进渲染契约。组件加载失败时,可以展示静态摘要、证据链接和重新生成入口;数据引用过期时,可以提示重新计算或申请权限;审批状态不一致时,应以服务端状态为准;历史版本无法兼容时,应保留只读快照和变更说明。前端不能因为某个组件失败就让整条消息不可读,也不能为了保持界面完整而绕过权限。

兼容测试还要服务长期维护。组件库升级、图表库替换、数据域迁移、报告模板调整,都应先跑一组历史 Artifact 样本。样本中要包含不同租户、不同权限、不同组件类型和不同发布状态。通过这套测试,Generative UI 才能从一次生成体验变成可长期保存的业务产物。

48.11 富交互界面的复核职责

Generative UI 生成的控件越多,复核职责越要清楚。图表、筛选器、审批卡片、报告段落、导出按钮和任务状态看起来都在同一个界面里,但它们背后的责任来源不同。数据团队负责指标和数据引用,Runtime 负责状态和审批,前端负责组件渲染和可访问性,安全团队负责导出和敏感信息,业务 owner 负责最终发布。界面如果把这些责任混成一个“AI 生成结果”,用户会误以为所有内容都可以像文本一样自由编辑。

复核职责应通过组件契约表达。可编辑段落允许用户改写;指标卡片允许查看口径和刷新;审批卡片只能由有权限的人提交决策;导出按钮要绑定 artifact、权限和保留策略。组件契约越清楚,用户越容易理解哪里可以修改,哪里只能申请变更,哪里必须回到源系统。Generative UI 的长期可用性,取决于这种责任边界能否在界面里自然呈现。

上线验收可以抽查几类风险操作:用户是否能通过修改文本改变指标事实,是否能绕过审批导出 artifact,是否能在权限变化后继续查看敏感图表,是否能从历史报告中追溯数据来源。若这些问题没有被组件契约覆盖,富交互界面会把治理问题隐藏在漂亮的交互层里。

48.12 富交互产物的权限再校验

富交互产物保存后,权限还会变化。用户生成报告时有权限查看某张图表,不代表一个月后仍然可以打开同一份 artifact。部门调整、项目结束、客户权限变化和数据脱敏策略更新,都会影响历史产物的可见范围。Generative UI 如果只在生成时校验权限,历史报告和可编辑产物会变成绕过权限的缓存。

权限再校验需要区分元数据和内容。artifact 的标题、创建时间、版本和审批状态可以保留给审计;图表数据、明细表、敏感字段和外部导出则要按当前权限重新判断。若当前用户失去权限,界面可以显示产物存在,但隐藏敏感视图,并提供重新申请或重新生成入口。这样历史材料仍可管理,敏感内容也不会因为曾经生成过而长期可见。

早期可以在打开 artifact、导出 artifact、发布 artifact 三个动作上做再校验。每次校验记录用户、权限版本、artifact 版本和处理结果。富交互界面越接近正式业务材料,这类再校验越重要。

48.13 Artifact 工作区的运行证据

Artifact 工作区需要运行证据,因为用户往往会把它当成正式业务产物。生成的报告、可编辑图表、审批卡片或报价草稿,可能比创建它的对话存活更久。平台应记录产物如何创建、使用了哪些证据、哪些用户编辑改变了内容、哪些审批已经完成、后来导出到哪里。没有这些证据,工作区即使看起来完整,一旦离开聊天界面就很难审计。

运行证据要把产物状态和会话状态分开。会话可以归档,报告仍然处于活跃状态;Run 可以结束,Artifact 继续被编辑;用户可能在产物生成后失去源数据权限。因此 Artifact 需要独立生命周期:草稿、复核中、已批准、已发布、已归档、已撤回或已重新生成。每次状态迁移都要记录操作者、原因、时间、策略版本和受影响的证据引用。

这些记录也能帮助产品团队。用户反复重新生成同一类图表,说明默认图表选择可能有问题;复核人认可报告文字却拒绝导出,说明产物在工作区内可用,但还不适合对外分发;业务用户在多份报告里修改同一段指标解释,说明语义层说明需要改进。这些信号比笼统满意度更有价值,因为它们能指向具体组件、动作或证据链路。

工作区还要降低支持成本。用户询问导出的产物为什么和对话内容不一致时,支持人员应能比较 artifact 版本、数据引用、权限结果、人工编辑和导出策略。若每次都要开发人员临时查多个系统,Generative UI 还没有真正进入生产能力。早期的运行证据可以保持轻量,但结构上要让 Trace、Eval、策略复审和客户支持读到同一份产物历史。

48.14 Artifact 多人协作与冲突处理

Generative UI 进入企业工作流后,artifact 往往会被多人编辑和复核。一个销售报价草稿可能由 Agent 生成、销售修改、法务加批注、财务确认折扣,最后由经理批准导出。若平台仍把 artifact 当作单人会话里的临时组件,后续冲突会很难解释:谁改了数字,谁删了证据,谁批准了导出,哪个版本被发给客户。多人协作要求 artifact 拥有独立权限、版本、锁定、评论和发布记录。

冲突处理要按内容类型区分。普通文字段落可以允许多人编辑并保留修订历史;图表配置要绑定数据引用和指标版本,不能只保存可视化参数;审批结论、报价金额、合同条款和导出设置这类高风险字段,应使用明确 owner 或锁定机制。若两个用户同时编辑同一图表,平台应能判断是展示层冲突、数据引用冲突还是审批状态冲突。不同冲突需要不同处理方式:展示冲突可以合并,数据引用冲突要重新复核,审批冲突要回到责任人。

Agent 也可能参与协作。用户让 Agent “根据最新意见重写报告”时,Agent 不能直接覆盖人工复核过的段落。更安全的方式是生成候选修改,标注影响的证据引用和字段,再由 owner 接受或拒绝。对于已经发布或审批中的 artifact,Agent 只能创建新版本或修订建议,不能修改原版本。这样可以保留人工责任链,也能避免模型把已确认材料悄悄改掉。

早期可以把 artifact 协作控制在少量规则内:每个 artifact 有 owner,每次编辑形成版本,每次高风险字段变更要求复核,每次导出绑定版本号和权限结果。多人协作能力不必一开始就做成复杂办公套件,但必须保证关键动作可追踪、可回退、可解释。否则富交互界面越像正式业务工具,潜在责任越模糊。

48.15 Artifact 撤回与通知链路

Artifact 一旦被下载、导出、嵌入报告或分享给其他团队,就不再只是工作区里的一个组件。后续发现数据口径错误、权限变化、人工审批撤回、图表解释有误或源证据失效时,平台必须能撤回或标记旧版本。没有撤回机制,富交互产物会像普通文件一样在组织里继续流转,用户看到的界面很现代,治理能力却停留在邮件附件阶段。

撤回不等于删除。已发布 artifact 可能需要继续保留审计证据,同时禁止作为当前结论使用。平台应区分“隐藏内容”“标记过期”“撤销发布”“替换新版本”“通知接收者”几类动作。内部草稿可以直接过期,已审批报告需要保留旧版本和撤回原因,外部导出材料需要记录通知对象和补救方式。对于已经被嵌入其他页面或会议材料的 artifact,平台还要能找到引用位置,避免只撤回原始工作区。

通知链路要按影响范围设计。普通图表样式修正可以只通知编辑者;指标口径错误要通知报告 owner 和复核人;权限泄漏或外部导出错误要通知安全、合规和业务负责人。通知内容应说明受影响版本、原因、建议动作和替代版本,而不是泛泛写“产物已更新”。用户需要知道自己是否要重新下载、重新审批、替换会议材料或停止使用旧链接。

早期可以把撤回能力做得简单但明确:每个 artifact 记录发布范围、引用位置、导出记录和接收者;撤回时生成新状态和通知任务;支持人员能从 artifact id 查到影响范围。这样 Generative UI 产物即使进入正式业务流,也仍然能被追踪和纠正。富交互界面的生产价值,不在于生成得快,还在于出错后能按业务责任把影响收回来。

48.16 交互产物的发布前验收

Generative UI 产物发布前,应把验收对象从“页面能渲染”提升到“产物能被业务使用”。验收要检查数据引用是否存在、图表是否绑定指标版本、用户编辑是否留下版本、导出是否重新校验权限、审批状态是否来自后端、撤回和通知是否可执行。只看组件是否显示,会漏掉产物生命周期中的责任问题。

验收还要覆盖降级显示。图表渲染失败时,是否能展示表格或数据摘要;权限不足时,是否能保留元数据并隐藏敏感内容;证据失效时,是否能标记结论过期;多人冲突时,是否能提示用户选择版本。富交互界面如果没有降级路径,任何一个组件失败都可能让用户无法继续任务。

早期可以把发布前验收写成 artifact 样本集。每个样本包含输入证据、组件 schema、权限状态、编辑动作、审批动作和预期导出结果。这样设计师、前端、后端、数据和安全团队可以围绕同一个产物样本讨论,而不是分别检查界面、接口和策略。

48.17 Artifact 权限元数据与导出重检

富交互产物的权限不能只绑定在整个文档上。一个报告里可能同时包含公开指标、部门敏感指标、客户明细、人工批注和模型摘要;一个仪表盘里可能有可分享的趋势图,也有只能在原租户内查看的明细表。若平台只给 artifact 一个总权限,导出和分享时就会过度放行或过度拦截。更合理的做法是把权限元数据绑定到组件、字段和证据引用上,再由文档级策略做外层约束。

导出重检要重新计算可见范围。用户生成 artifact 时有权查看某些数据,不代表一周后仍然有权导出,也不代表接收者有权查看。平台应在分享、下载、嵌入、发送外部邮件和生成 PDF 时重新校验权限、证据有效期、数据脱敏状态和审批状态。若只有部分组件不满足条件,系统可以生成降级版本:隐藏敏感表格、保留图表摘要、替换为脱敏字段,或要求审批后再导出。

权限元数据还要支持审计和撤回。一个 artifact 被撤回时,平台要知道是哪个组件、哪个证据引用或哪个导出动作导致风险。若只是整份文档标记异常,后续修复会很粗糙;若能定位到具体组件,就可以局部替换、重新审批或通知特定接收者。这样富交互产物的治理粒度才能跟上它的表达能力。

早期可以为每个组件记录四类信息:数据来源、权限级别、证据引用和导出策略。导出前,后端根据这四类信息生成可下载版本,并把校验结果写入 Trace。前端负责展示状态,不能绕过后端重检。这样 Generative UI 不会因为界面更灵活而削弱原有数据权限边界。

48.18 Artifact 模板的复用与失效

Artifact 模板会随着业务流程积累。报告段落、指标卡、审批卡、图表布局、导出表单和证据卡片,都可能从一次生成沉淀为复用模板。复用能降低生成成本,也能让用户看到更稳定的产物形态;但模板失效后,错误会被批量复制。一个旧指标口径、旧审批字段或旧导出说明,如果继续出现在新 artifact 中,会让界面看起来规范,内容却不再适用。

模板复用要绑定适用条件。每个模板应记录适用任务、数据域、指标版本、权限要求、组件 schema、最后复审时间和 owner。Agent 选择模板时,应先检查任务条件是否匹配,而不是只根据自然语言相似度挑选。若模板缺少证据引用、权限元数据或降级渲染,就不适合进入正式工作区。

早期可以把模板状态分为草稿、试点、标准、冻结和退役。草稿模板只在当前任务使用;试点模板用于少量场景;标准模板进入平台组件库;冻结模板等待口径复核;退役模板保留迁移说明。这样 Generative UI 的复用会形成资产管理,而不是把一次成功生成复制到所有场景。

48.19 Artifact 生命周期的前端治理

Generative UI进入生产后,平台需要把 artifact 状态、模板版本、数据来源、编辑历史、权限、撤回和发布渠道放进统一证据口径。证据口径会减少事后解释成本,让业务、平台、数据、安全和运营团队能够围绕同一组事实讨论问题。没有这些材料,故障发生后只能凭经验判断;有了这些材料,团队可以知道哪些输入有效、哪些动作已经执行、哪些产物可以继续使用、哪些结果需要撤回。

这类证据应和第36章报告、第38章 Trace 和第52章合规连起来。上游章节提供能力基础,下游章节使用运行结果,本章则负责说明中间环节如何被验证。若某个能力只在本章看起来完整,却无法进入 Trace、Eval、发布记录或合规证据包,生产系统仍然会出现断点。读者在实现时应把章节之间的接口看成工程契约,而不是阅读顺序上的相邻关系。

常见风险包括用户把草稿当成正式结果、模板升级改变历史展示、编辑后证据引用失效。这些问题通常不会在一次成功演示中暴露,因为演示样本往往干净、短小、路径明确。真实业务会带来旧数据、异常输入、权限变化、用户撤回、预算限制和长时间运行状态。平台如果没有把这些情况纳入样本和台账,后续扩展场景时就会重复遇到同类问题。

Artifact 前端应表达草稿、复核、发布和撤回状态,使生成式 UI 能被审计。执行记录至少要说明 owner、版本、样本、影响范围、处置动作和复查时间。记录不需要写成流程报告,但要足够让后来者理解当时的判断。对于高风险能力,还应说明哪些条件满足后才能扩大使用,哪些条件失败时必须降级或撤回。

落地时可以先选择少量代表场景建立这种习惯。实践上,应先把高频、高风险、外部可见的路径做扎实,再把样本、台账和复盘方式复制到其他能力中。这样做能让能力说明落到接入、验证、运营和退出,而不是停留在概念描述。

本章小结

Generative UI 的生产路径是受控组件渲染,不是任意代码生成。工具调用结果应先结构化,再映射为图表、表格、表单、Artifact 和审批卡片。Artifact 是业务产物,不是消息附件,因此需要版本、权限、导出和审计生命周期。高风险 UI 动作必须经过服务端二次校验,前端不能成为唯一安全边界。企业平台应沉淀自己的渲染契约、组件白名单、数据引用和 UI 观测模型,并与第23章的工具契约、第30章的人工审批、第36章的表达层、第47章的事件模型、第49章的多模态入口和第50章的安全边界配合使用。

参考文献

Vercel. (n.d.). AI SDK documentation.

Model Context Protocol. (n.d.). Specification and documentation.

JSON Schema. (n.d.). Specification.

W3C. (n.d.). Web Content Accessibility Guidelines (WCAG) 2.2.