什么是 AI Artifacts?
AI Artifacts 是一种强大的工具,它允许用户直接在 Discourse 帖子中创建、嵌入和交互基于 Web 的动态组件。这些组件可以包含自定义的 HTML、CSS 和 JavaScript,从而实现各种用例,例如:
- 嵌入交互式测验或表单。
- 使用丰富的图形和动画可视化数据。
- 集成轻量级 Web 应用程序或工具。
- 作为一个学习 Web 框架、JavaScript 库等的工具。
AI Artifacts 通过增加交互性同时确保安全的浏览体验,无缝增强 Discourse 帖子。
站点设置
管理员可以配置多项设置:
1. 启用功能
- 设置:
discourse_ai_enabled- 确保此全局设置已启用,AI Artifacts 才能正常工作。
2. 安全模式
- 设置:
ai_artifact_security- 选项:
disabled:禁用 Artifact 系统lax:Artifacts 自动出现在帖子中,无需用户交互。hybrid:Artifacts 默认需要点击才能运行,但帖子作者可以在嵌入标记中添加data-ai-artifact-autorun使特定 Artifacts 立即运行。strict:用户必须通过点击“查看”或“运行”按钮明确激活 Artifacts。此设置推荐用于注重安全的环境。(默认)
- 选项:
3. Artifact 创建者访问权限
- 默认情况下,Artifact 创建者角色仅限于工作人员用户。此限制确保只有受信任的个人才能创建 Artifacts,从而最大限度地降低不当或恶意使用的风险。
- 如果需要更广泛的访问权限,站点管理员需要手动配置权限。
在帖子中使用 AI Artifacts
Artifacts 由 Artifact 创建者角色按需自动创建。
<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>
<small>上方的 Artifact 是使用 GPT-4o 和 anime.js 库生成的</small>
创建后,它们对您和 Artifact 创建者角色是私有的。能够共享 AI 对话的用户(属于 ai bot public sharing allowed groups 的用户)也可以通过共享对话使 Artifact 公开。
共享后,您可以使用以下 HTML 标记在帖子中渲染它:
<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>
(其中版本和 Artifact ID 是您的版本化 Artifact)
安全注意事项
鉴于 AI Artifacts 可以执行自定义编写的 HTML、CSS 和 JavaScript,Discourse 实施了强大的保护措施:
1. iFrame 中的沙箱化
- Artifacts 渲染在隔离的
iframe容器内,并带有sandbox属性,以限制潜在的不安全操作,例如:- 跨站脚本攻击。
- 访问外部站点或 API。
2. 内容安全策略 (CSP)
- Artifacts 中的所有资源(如 JavaScript 库)都被限制在安全的、预先批准的域中,例如:
- https://cdn.jsdelivr.net
- https://cdnjs.cloudflare.com
- https://unpkg.com
- https://ajax.googleapis.com
- https://d3js.org
- https://code.jquery.com
- https://esm.sh
3. 安全模式
- 严格模式: 推荐用于未完全信任 Artifacts 的环境。用户需要先在浏览器中手动激活 Artifacts,然后才能渲染它们。
4. 访问和权限
- Artifacts 仅对以下人员可见:
- 其创建者。
- 具有查看相关帖子权限的用户(例如,私人消息)。
- 公开的 Artifacts 必须通过共享 AI 对话明确标记为公开。
5. 长度限制
- Artifact 中 HTML、CSS 和 JavaScript 的大小上限为 64 KB。这确保了组件保持轻量级,不会给用户或系统带来负担。
Artifact 存储
Web Artifacts 可以选择存储每个用户的数据。要执行此操作,请提示 Artifact 创建者“使用用户存储”或类似信息。
该系统允许存储键值对:
- 私有(仅对管理员和特定用户可见)
- 公共(对包括匿名用户在内的所有用户可见)
键值对相对于生成 Artifact 的帖子是安全的,但是如果您公开共享 Artifact,则允许所有用户添加键。
要控制存储,您可以使用隐藏设置:
ai_artifact_kv_value_max_length(默认项目长度可能仅为 5000 个字符或更短)ai_artifact_max_keys_per_user_per_artifact(默认 100)
常见问题解答 (FAQ)
谁可以创建 AI Artifacts?
默认情况下,只有工作人员用户(例如,管理员或版主)可以通过 Artifact 创建者角色创建 Artifacts。此角色简化了使用 HTML、CSS 和 JavaScript 设计交互式 Web 小部件的过程。
如果我点击 Artifact 会发生什么?
- 在 lax 模式下,Artifacts 会自动显示。
- 在 hybrid 模式下,Artifacts 默认需要点击,但如果嵌入包含
data-ai-artifact-autorun,它们可以自动运行。 - 在 strict 模式下,点击“运行”按钮会激活 Artifact,允许它在您的浏览器中加载。
AI Artifacts 安全吗?
是的。AI Artifacts 在严格控制的环境中运行:
- 它们被沙箱化,不能直接与 Discourse 应用程序或用户上下文交互,只能通过 iframe 消息传递。
- 严格模式让您控制激活。
- Artifacts 默认是私有的,您需要主动共享才能授予全局访问权限。
我能看到 Artifacts 的源代码吗?
是的。当 Discourse AI 生成 Artifacts 时,它会包含完整的标记、CSS 和 JavaScript。
支持哪些 LLM?
Artifacts 可以使用您配置的任何 LLM 生成,但各种 LLM 在 Artifact 创建方面有所专长和更精细的调整。
我们使用 o3、Anthropic Claude Sonnet 3.7 - 4.0、GPT-4.1、Gemini Pro 2.5 等获得了良好的效果。一般来说,更先进的模型效果会更好。
Artifact 创建有大量的试错成分,实验是关键。