跳转到内容

输入关键词开始搜索文档。

部署

最后更新 查看 Markdown 源文件

Flue 设计为与 Vite 配合使用。vite dev 在开发期间服务应用,vite build 生成可部署的制品,而发布该制品就像将任何其他 Vite 应用发布到你选择的托管平台一样。

本指南涵盖每个目标的构建和部署路径。要深入了解每个目标的运行时行为,请参阅 Node.js 和 Cloudflare 指南。

使用 Vite 构建

将 @flue/vite 中的 flue() 添加到 vite.config.ts 即可将 Vite 项目变为 Flue 应用:

vite.config.ts (Node)
import { flue } from '@flue/vite';
import { defineConfig } from 'vite';

export default defineConfig({
  plugins: [flue()],
});
vite.config.ts (Cloudflare)
import { cloudflare } from '@cloudflare/vite-plugin';
import { flue } from '@flue/vite';
import { defineConfig } from 'vite';

export default defineConfig({
  plugins: [flue(), cloudflare()],
});

该插件在两个目标上完成三项工作:

  1. 解析项目。 它发现 flue.config.ts 并定位你的入口模块(app.ts 是必需的;db.ts 和 cloudflare.ts 是可选的)。
  2. 扫描智能体。 对源码根目录的 'use agent' 扫描 定义了应用的智能体集合,生成的服务器引导程序会注册每个扫描到的智能体。
  3. 转换智能体模块。 构建过程将每个智能体的标识(函数名或其 agentName 静态覆盖)作为绑定到函数的字符串字面量打上标记,这样经过压缩的生产包就不会破坏持久标识。

flue() 还接受在 flue.config.ts 之上合并的内联配置——参见配置。

选择目标

Flue 为两个目标构建:

  • Node.js 生成一个自启动服务器,你可以在 Node 运行的任何地方运行它:虚拟机、容器或托管主机。
  • Cloudflare 生成一个 Worker,其中每个智能体运行在自己的 Durable Object 中,开箱即用地提供持久状态和全局可寻址性。

当 target 未设置时,flue() 从 Vite 插件数组中自动检测:如果 @cloudflare/vite-plugin 存在,则目标为 'cloudflare',否则为 'node'。显式的 target 覆盖自动检测。

在 Node.js 上部署

vite build 将应用打包成两个 Node 入口:自启动的 dist/server.mjs 和它导入的非监听 dist/app.mjs 块:

vite build
node dist/server.mjs

在发布制品之前需要了解三件事:

  • 环境: 构建后的服务器不会加载 .env——在启动时提供提供商密钥和其他配置。它默认监听端口 3000;设置 PORT 来更改。
  • 依赖: 应用依赖被外部化,而非打包。将制品与其 node_modules 一起部署,或在一个先安装它们的容器中部署。
  • 状态: 没有 db.ts 适配器时,对话保存在进程本地内存中,重启会丢失它们。在部署任何你关心的内容之前,请配置一个持久适配器。

vite preview 在本地以生产行为服务构建后的制品——一个可靠的部署前检查。

有关运行时细节——状态和持久性、进程所有权、多副本规则、环境和密钥——请参阅 Node.js 目标指南。有关分步托管演练,请参阅在 Node.js 上部署智能体、Docker 以及生态系统部分的其他平台指南。

在 Cloudflare 上部署

在 Cloudflare 上,flue() 与官方的 @cloudflare/vite-plugin 协作,后者负责 workerd 开发、构建输出、预览和部署。flue() 必须在插件数组中位于 cloudflare() 之前;顺序错误会被诊断为错误。Flue 的职责是生成 Cloudflare 插件消费的 Worker 输入:一个注册你扫描的智能体并为每个智能体导出一个 Durable Object 类的 Worker 入口,加上你编写的 wrangler.jsonc 与生成的绑定合并。将两个生成的路径添加到 .gitignore:

.flue-vite/
.flue-vite.wrangler.jsonc

在 wrangler.jsonc 中有两件事需要你来编写:nodejs_compat 兼容性标志,以及 Durable Object 迁移——一个你部署的只追加记录,Flue 永远不会写入它。每个部署的智能体都需要为其生成的类添加一个迁移条目,因此添加一个智能体始终是一个三件套:智能体本身、其在 app.ts 中的挂载(仅 dispatch 的智能体可跳过),以及一个新的迁移标签:

wrangler.jsonc
{
  "name": "my-flue-worker",
  "compatibility_date": "2026-06-01",
  "compatibility_flags": ["nodejs_compat"],
  "migrations": [{ "tag": "v1", "new_sqlite_classes": ["FlueTriageAgent"] }],
}

重命名或删除已部署的智能体也是一次存储迁移(renamed_classes / deleted_classes)——在更改任何已部署的内容之前,请阅读管理迁移。

通过 Cloudflare 插件构建和部署:vite build,然后针对它输出到 dist/ 的配置进行部署。有关完整演练,请参阅在 Cloudflare 上部署智能体;有关运行时行为——生成的类和绑定、持久执行、服务绑定——请参阅 Cloudflare 目标指南。

后续步骤