跳到主要内容

交互式产物

交互式产物把模型生成的文件和代码块变成可预览的侧边面板,适合游戏、图表、HTML 演示、JSON 负载、脚本和生成资源。

它不同于 Work。产物来自普通聊天回复并在浏览器中渲染;不会给模型 持久文件系统或 shell。Work 任务保留项目文件和对话历史,并在任务专属 Docker 容器中运行模型工具。

支持的输入

Libre WebUI 可检测:

  • 明确的 <artifact>
  • 使用适合产物语言的围栏代码块
  • 独立完整 HTML 文档
  • index.html、CSS 和 JavaScript 块组成的多文件 HTML 包
  • JSX 和 TSX 组件
  • Mermaid 图表
  • SVG 块
  • JSON 块
  • 代码和文本片段

产物类型

类型预览行为
HTML沙箱 iframe 预览,启用脚本和交互
React编译并挂载 JSX/TSX,包含 Tailwind 和库集合
Mermaid在沙箱中按应用主题绘制图表
SVG内联视觉预览
JSON格式化代码视图
代码/文本语法高亮代码视图

多文件 HTML 包

模型返回相关 HTML、CSS 和 JavaScript 块时,Libre WebUI 会尝试合并为可运行产物, 删除本地样式表/脚本引用并内联匹配的生成内容。

为了获得最可靠结果,请要求一个自包含 HTML 文件:

Create a complete self-contained HTML file with inline CSS and JavaScript.
It should run in a browser without local files.

查看器控件

产物在可调整大小的侧边面板中打开,包含:

  • 预览和代码标签
  • 复制
  • 下载
  • 在新窗口打开
  • 可用时的展开/全屏控件

需要键盘输入时,先点击预览内部或在新窗口打开。

沙箱行为

HTML 产物通过 GET /api/artifacts/sandbox 加载。此间接层很重要:srcdoc 帧会 继承嵌入者的 Content Security Policy,而应用政策禁止内联脚本,因此生产中会被 阻止。沙箱主机改为通过网络获取并携带自己的政策,预览帧继承该政策。

产物政策允许内联脚本和 eval,因为产物本身需要它们;除应用自身外不允许其他主机。 产物可以渲染和计算,但不能从 CDN 获取内容或向外部回传。

帧允许脚本、表单、模态框、弹窗、指针锁和下载,但绝不允许 allow-same-origin, 因此运行在不透明来源,无法访问应用 cookie、存储或 DOM。功能政策允许剪贴板、全屏和 游戏手柄。

产物运行时

生成产物假定库可用。应用不会允许它们访问 CDN,而是内置所需库:

可用内容访问方式
React、ReactDOM、Framer Motionimport ... from 'react'
JSX 和 TSX由 Babel 在帧内编译
Tailwind 工具类从标记生成,无需 build
Recharts、Chart.js、Plotly、D3import ... from '<name>'
Three.js 及控件、加载器、环境和更多附加组件THREE.OrbitControls 或 import
Lucide 图标、Lodash、MathJS、Papa Parse、Tone.jsimport ... from '<name>'
Mermaidmermaid 产物或 import

请求集合外库时会显示点名提示,而不是空白预览和控制台政策错误。

帧不自行获取这些库。携带用户会话的应用页面加载包并内联到产物文档;产物的 import 会编译为小型注册表查找,而不是网络模块解析。

这并非偶然。不透明来源的请求被浏览器视为跨站且不发送会话 cookie。在 Cloudflare Access、Authelia、oauth2-proxy 后,请求会重定向到登录页并被沙箱政策拒绝,导致 Content Security Policy 错误。内联消除了请求,使本地和企业网关后的行为一致。

React 产物在沙箱中编译挂载:将组件作为模块默认导出即可。所有库从同一注册表解析 React,因此只有一个实例,hooks 正常工作。

HTML 产物中的 CDN <script><link> 如果指向 Tailwind、Chart.js、D3、 Three.js、Papa Parse、Lodash、Mermaid、React 或 Babel,会在原位置替换为内置构建, 让脚本仍找到 Chartd3React。集合外库需要自行内联。

真实 localStoragesessionStoragedocument.cookie 在不透明来源会报错。 沙箱提供内存替代项,内容只维持预览时长且不与应用共享。

产物仍会执行生成代码:在预览外下载或复用前检查不可信 HTML,不要放入密钥。

更好的提示词

游戏:

Build a complete browser game as one HTML file.
Use canvas.
Inline all CSS and JavaScript.
Show controls on screen.
Avoid external assets unless they are optional.

仪表板:

Create one self-contained HTML dashboard.
Use semantic HTML, responsive CSS, and no build step.
Include sample data inline.

React 组件:

Return one React component in a single jsx block.
Export it as the default export.
Style it with Tailwind classes.
Import anything you need from react, recharts, or lucide-react.

SVG:

Return only one valid SVG code block with width, height, and viewBox.

相关文档