首页 / 开源热榜 / Flue / 使用教程

Flue 中文教程:用 TypeScript 构建可部署的沙箱 Agent

更新于 2026-09-23 · NGJOO AI 实验室 · 约 9 分钟

Flue 是 Astro 团队维护的 TypeScript Agent 框架。它把 Agent 写成带 'use agent' 指令的函数,再用 hooks 组合模型、工具、技能和沙箱。相同定义可以通过 CLI 单次运行,也可以挂到 Hono 路由后部署到 Node.js 或 Cloudflare。

当前版本:官方仓库的 @flue/runtime 与 2026-09-18 发布的一组包均为 2.1.0。旧页面里的 0.7.0 安装方式已经过时。官方 Getting Started 要求 Node.js 22.19.0+;仓库开发环境使用 pnpm 11,但普通项目可以直接使用 npm。

1. 安装前先定运行边界

准备 Node.js 22.19.0 或更新版本,以及一个模型提供方的 API key。Flue 的 Cloudflare runtime 也支持内建的 cloudflare/* AI gateway;除此之外,应按具体 provider 的要求把密钥放在环境变量里,不要写进 Agent 文件或提交到仓库。

node --version
mkdir my-flue-agent && cd my-flue-agent
npm init -y
npm install @flue/runtime @flue/cli

也可以运行 npx flue init 生成项目。第一次接触时建议先手写最小 Agent,确认每一层在做什么,再引入 blueprint、MCP 或外部渠道。

2. 写一个最小 Agent

src/agents/assistant.ts 中定义函数。'use agent' 标记 Agent,useModel() 选择模型;需要文件或 shell 时再显式添加沙箱。下面保留官方 hooks 的结构,模型名应换成你已经配置凭据且实际可用的型号。

'use agent';
import { useModel } from '@flue/runtime';

export function Assistant() {
  useModel('anthropic/claude-sonnet-4-6');
  return '先复述约束,再给出可核对的答案。';
}

按官方 CLI 方式运行一个带固定会话 id 的消息:

npx flue run src/agents/assistant.ts --id hello-1 --message "列出三个上线前检查项"

不要一开始就给 Agent 宿主 shell。先验证模型凭据、回复、错误和超时;确认任务确实需要文件操作后,再接 useSandbox() 和受限工具。

3. 沙箱不等于统一的安全等级

Flue 支持虚拟、本地和远程容器类沙箱,但它们的边界不同。Node 目标的 local() 直接绑定宿主文件系统和 shell,并不是隔离容器。生产任务应缩小工作目录、环境变量、命令、网络和执行时长;需要处理不可信代码时,应选择有清晰隔离与回收机制的远程沙箱。

凭据边界:开发服务器可以读取项目的 .env,但官方部署文档说明构建后的 Node 服务不会自动加载 .env。启动 dist/server.mjs 时必须由部署环境显式注入 provider key 和其他配置。

4. 从 CLI 任务走到 HTTP 服务

需要长期服务时,安装 Vite、Flue 插件和 Hono,把 Agent 挂载到 src/app.ts。开发环境使用 npx vite dev;生产构建使用 npx vite build,Node 目标输出自启动的 dist/server.mjs

npm install @flue/vite hono vite
npx vite dev
npx vite build
node dist/server.mjs

官方文档还指出两个容易遗漏的条件:应用依赖默认不会全部打进产物,部署时要带上 node_modules 或在容器内安装依赖;没有配置数据库适配器时,会话只保存在进程内存里,重启就会丢失。正式上线前至少验证一次重启恢复、任务中止、重复事件和超时。

5. 版本升级怎么检查

Flue 是多包仓库,release 页面可能同时出现 runtime、SDK、Vite 插件和渠道包。不要只看某个渠道包的版本;先核对 @flue/runtime,再检查 @flue/cli@flue/vite 及正在使用的渠道适配器是否属于同一发布组。2.1.0 的官方 release 还补充了工具调用 timeoutMs、MCP annotations 和观测内容预算等文档。

同类官方方案对比

Vercel AI SDK 的 ToolLoopAgent 把模型、工具、上下文和停止条件组合成可复用的多步循环,适合在已有应用里直接控制 Agent loop。Flue 的范围更大:除了模型和工具,还提供沙箱、持久会话、Vite/Hono 路由、Node/Cloudflare 目标、渠道和可观测性。若只需要几轮工具调用,ToolLoopAgent 更直接;若需要让 Agent 在受控工作区持续执行、恢复并作为服务部署,Flue 的完整运行时更贴近需求。

对比依据:Flue 官方仓库与部署文档;Vercel AI SDK 官方 ToolLoopAgent 文档。

验证状态:本轮只核对官方仓库、2.1.0 release、Getting Started、CLI、Node 和 Deploy 文档;没有安装依赖、运行 Agent、调用模型、启动服务器或部署 Cloudflare。示例命令需要在隔离测试项目中按你使用的 provider 复核。

这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。

先判断这个项目是否适合你

适合谁用

适合构建需要工具、技能、工作区、持续会话和多部署目标的 TypeScript Agent,也适合用 flue run 在 CI 中执行一次性任务。只需简单的几轮模型工具调用时,较轻的 Agent loop SDK 会更直接;处理不可信代码时不能把 local() 当成隔离容器。

原教程未展开的系统信息

核心功能

  • 持久任务与服务路由

    Flue 提供会话、durability、Agent 路由和 SDK;使用 Vite/Hono 可生成 Node 服务或 Cloudflare Worker,CLI 也可直接运行一次性 CI 任务。

  • 渠道、MCP 与可观测性

    官方包和文档覆盖 Slack、Teams、Discord、GitHub 等事件渠道、MCP 工具,以及 OpenTelemetry、Braintrust 和 Sentry 观测出口。

架构与数据流

Agent 函数声明模型、工具、技能和沙箱;runtime 负责会话、工具循环和持续执行。单次任务由 @flue/cli 直接调用,长期服务则用 @flue/vite 扫描 Agent 模块,通过 Hono 的 createAgentRouter 挂载 HTTP 路由。Node 目标输出 dist/server.mjs,Cloudflare 目标接入 Workers/Durable Objects;持久化需显式配置数据库适配器。

常见问题

Flue 2.1.0 需要哪个 Node.js 版本?

官方 Getting Started 和 runtime 包都要求 Node.js 22.19.0 或更新版本。仓库自身使用 pnpm 11;普通使用者可以按文档用 npm 安装已发布包。

Flue 的 local() 是隔离容器吗?

不是。Node 目标的 local() 直接绑定宿主文件系统与 shell;需要更强隔离时应选择受控的远程或容器沙箱,并限制凭据和网络。

Flue 服务重启后会保留对话吗?

默认不会。官方部署文档说明,没有配置数据库适配器时,会话只在进程内存中,重启即丢失。重要任务应接持久化适配器并测试恢复。

Flue 和 Vercel AI SDK 的 ToolLoopAgent 有什么区别?

ToolLoopAgent 重点是模型、工具和停止条件组成的多步循环;Flue 在此类循环之上整合沙箱、持久会话、部署路由、渠道与可观测性。