CodePilotCodePilot

生成式 UI

Claude 在对话中直接生成的交互式可视化 — 图表、示意图、计算器等。

生成式 UI

生成式 UI 让 Claude 能在对话中创建交互式可视化组件。不再是用文字描述一个流程,Claude 可以直接生成一张流程图;不再是列举一串数字,它可以生成一个你可以拖动探索的交互式图表。

这些不是预置的模板 — Claude 根据对话内容实时生成 HTML、SVG 和 JavaScript 代码。每次生成的可视化都是独一无二的,完全取决于你的问题。

能做什么

SVG 示意图

Claude 会根据你的问题自动选择最合适的图表类型:

  • 流程图 — 流程展示、决策树
  • 时间线 — 历史序列、项目阶段
  • 层级图 — 组织架构、系统结构
  • 循环图 — 反馈循环、迭代过程
  • 对比图 — 特性对比、优缺点分析
  • 层叠图 — 架构分层、技术栈

交互式图表

基于 Chart.js 构建,支持实时交互:

  • 折线图、柱状图、饼图、雷达图
  • 滑块和按钮控制数据视图
  • 多数据集切换控制

计算器和工具

嵌入对话的小型交互工具:

  • 贷款计算器,可调节参数
  • 单位换算器
  • 公式可视化,带滑块控制

多 Widget 叙事

对于复杂话题,Claude 会在文字解释中穿插多个不同类型的 widget,从多个角度展示。例如,"LLM 是怎么工作的"这个问题可能会生成:

  1. 一张层级图展示模型架构
  2. 文字解释训练过程
  3. 一个交互式图表展示 loss 曲线
  4. 文字总结关键要点

钻取交互

图表中的节点可以点击。点击某个节点会自动发送一条追问消息,深入了解该主题的细节。

如何使用

生成式 UI 默认开启,无需手动开启或配置。Claude 会自动判断何时使用可视化比纯文字更有帮助。

只需提出适合可视化展示的问题:

  • "解释一下 HTTP 请求的工作流程"
  • "对比 React、Vue 和 Svelte"
  • "展示大语言模型的训练流程"
  • "可视化排序算法"

Claude 会选择合适的可视化类型并在对话中内联生成。

Widget 类型指南

你的意图Claude 生成的内容
流程 / X 怎么工作SVG 流程图
结构 / X 是什么SVG 层级图或分层图
历史 / 时间序列SVG 时间线
循环 / 反馈回路SVG 循环图
对比 A 和 BSVG 并排对比
数据 / 趋势Chart.js 交互式图表
计算 / 公式HTML 计算器(带滑块)
排名 / 比例HTML 条形展示

主题融合

Widget 自动继承当前主题。切换深色/浅色模式时,所有 widget 实时更新 — 颜色、背景和文字无缝适应。这通过 CSS 变量桥接实现,将 CodePilot 的主题变量映射到 widget 的样式系统。

安全性

每个 widget 运行在严格安全控制的沙箱 iframe 中:

  • 禁止网络访问 — Widget 无法发起 fetch 请求、XHR 调用或 WebSocket 连接(connect-src 'none'
  • DOM 隔离sandbox="allow-scripts" 不含 allow-same-origin,widget 无法访问父页面
  • CDN 白名单 — 外部脚本仅限四个可信 CDN:cdnjs.cloudflare.com、cdn.jsdelivr.net、unpkg.com、esm.sh
  • 链接拦截 — 所有链接点击被拦截,通过父页面在新标签页中打开
  • HTML 清理 — 危险标签(iframe、object、embed、form)始终被剥离

持久化

Widget 作为消息内容的一部分被持久化存储。切换到其他对话再回来时,widget 会从存储的代码重新渲染。依赖 CDN 的 widget(如 Chart.js 图表)会在重新渲染时重新加载库。

限制

  • 需要官方 API — 部分第三方 API 服务商可能无法正确转发 widget 系统提示。如果 widget 没有出现,请确认使用的是官方 Anthropic API 服务商。
  • CDN 加载时间 — Chart.js 等 CDN 库需要网络加载。首次渲染可能需要几秒钟。加载过程中会显示微光动画提示。
  • Widget 大小 — 建议每个 widget 不超过 3000 字符。非常复杂的可视化可能会拆分为多个 widget。
  • 无持久状态 — Widget 的内部状态(滑块位置、选中的标签页)在重新打开对话时会重置。