部署策略
Vifu 会把构建后的输出视为被审核的运行成果物。
这意味着运行游戏的 JavaScript 必须在部署成果物内。Vifu deploy 不会下载 CDN 脚本,不会修改 HTML,不会替你内置依赖,也不会生成部署锁文件。
简短版本
允许:
- 构建输出中的已打包 JavaScript
- 构建输出中的本地资源
- Google Fonts
- 来自已批准包 CDN 的、固定版本的静态 CSS、字体、图片、媒体
- 普通外部链接
- 通过
@vifu/sdk或window.Vifu访问 AI / 后端
阻止:
- CDN JavaScript
- 远程
import(...)、importScripts(...)或 Worker 脚本 - 远程
.js、.mjs或.wasmURL - 游戏 JavaScript 直接请求外部 AI / 后端 API
- 部署成果物中残留的 LM Studio / Ollama 等本地专用提供方
为什么阻止远程 JavaScript
Vifu 上运行的游戏在托管 iframe 中执行,并能访问 AI、存档状态、资源、AI 伙伴动作等平台能力。如果游戏可以执行任意远程 JavaScript,被审核的成果物就不再等于实际运行的代码。
CSS、字体、图片、媒体不定义游戏逻辑,所以可以通过按类别限制的 CSP 允许已批准的静态资源。
好的例子
html
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/theme.css"
>ts
const result = await Vifu.ai.generateText({
model: "basic",
messages: [{ role: "user", content: "Give a short hint." }]
});会被阻止的例子
html
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/phaser.min.js"></script>ts
await import("https://cdn.jsdelivr.net/npm/@mediapipe/[email protected]/+esm");
fetch("https://api.openai.com/v1/chat/completions");
fetch("http://localhost:1234/v1/chat/completions");如何读 CLI 错误
vifu deploy 会显示失败的构建文件、行号、规则、URL、原因和修复建议。
text
Vifu deploy blocked this runtime artifact.
1. Remote JavaScript import
Built file: chunk.js:2
Rule: remote code import
URL: https://cdn.jsdelivr.net/npm/@mediapipe/[email protected]/+esm
Why blocked: Remote JavaScript/WASM would execute outside the reviewed deploy artifact.
Fix: Bundle the dependency locally, remove the unused provider/import, or lazy-load it only in a non-deployed build profile.运行环境 CSP
script-src不包含 CDN JavaScript 主机。connect-src限制为 Vifu platform API。style-src、font-src、img-src、media-src可以按类别允许已批准的静态资源主机。- Worker / eval 行为是内部运行环境规则,不是公开清单里的开关。