Flue
概述
Flue 是一款 TypeScript 智能体运行框架(harness),专为构建完全无头、可编程的自主 AI 智能体而设计。其核心理念——智能体 = 模型 + 运行框架(Harness)——将运行框架层视为首要设计关注点。多数框架聚焦于模型编排,Flue 则侧重于为智能体提供安全、持久化的执行环境:会话管理、工具调用、文件系统访问、内置沙箱以及结构化部署目标。该框架由 Astro 团队(withastro)创建,采用 Apache-2.0 许可证,截至 2026 年中已获约 3.8K GitHub Stars。
Flue 类似于 Astro 或 Next.js,但面向的是智能体——一次编写、构建,随处部署。
核心特性
- 运行框架优先的架构:会话、工具、技能、沙箱和文件系统访问均为一等基础设施,而非事后补充
- 虚拟沙箱(默认):基于
just-bash,比完整容器更快、更省成本、扩展性更强,适合高流量智能体 - 容器沙箱(通过 Daytona 连接器):提供完整隔离的 Linux 环境,内置 git、Node.js、Python 及克隆的代码仓库,适用于复杂的代码编写智能体
- 技能系统:以 Markdown(带 YAML frontmatter 的
.md文件)定义的可复用智能体能力;运行时从.agents/skills/<name>/SKILL.md自动发现 - 会话持久化:消息历史和沙箱状态跨请求保持;通过
harness.session(threadName)支持多线程 - 任务(Tasks):通过
session.task()创建聚焦的一次性子智能体,拥有独立的消息历史 - MCP 集成:在运行时通过
connectMcpServer()连接远程 Model Context Protocol 服务器;密钥存储在环境变量中,不出现在提示词里 - 运行时无关:单一构建命令即可部署至 Node.js、Cloudflare Workers、GitHub Actions 或 GitLab CI/CD
- 可观测性:集成 OpenTelemetry、Braintrust 链路追踪和 Sentry 错误报告
- 内置工具:开箱即用的文件系统读写、Shell、grep 和 glob
架构
Flue 的运行框架由两个核心包组成:
| 包 | 职责 |
|---|---|
@flue/runtime |
核心运行框架:会话、工具、沙箱、文件系统能力 |
@flue/cli |
构建系统与 CLI 工具(flue dev、flue build、flue run) |
智能体文件位于 agents/<name>.ts,定义智能体的运行框架配置——模型默认值、工具、沙箱类型和文件系统访问。技能是基于 Markdown 的可复用行为,可在智能体、会话或单次调用级别分配,以实现细粒度编排。
沙箱层级:
| 层级 | 技术 | 适用场景 |
|---|---|---|
| 虚拟(默认) | just-bash 内存文件系统 + Bash |
快速、低成本、高流量智能体 |
| 容器(通过连接器) | Daytona 隔离 Linux 虚拟机 | 完整代码编写智能体、git 工作流、浏览器访问 |
状态持久化目标:
| 部署目标 | 状态机制 |
|---|---|
| Cloudflare Workers | Durable Objects |
| Node.js | 可插拔的自定义存储 |
部署
Flue 支持三种调用模式:
- CLI:
flue run <workflow>,用于一次性调用 - HTTP 服务器:智能体以
/agents/<name>/<id>路径对外暴露,支持 REST 调用 - WebSocket:面向消息驱动智能体的长连接(支持自定义认证中间件)
构建与部署命令:
flue dev --target node # 在 3583 端口启动热更新开发服务器
flue build --target node # 构建 Node.js 单文件包
flue build --target cloudflare # 部署到 Cloudflare Workers
集成
| 集成 | 描述 |
|---|---|
| Daytona | 远程容器沙箱连接器——每个会话提供完整 Linux 环境 |
| MCP servers | 任意远程 MCP 服务器均可在运行时通过 connectMcpServer() 连接 |
| OpenTelemetry | 分布式链路追踪导出 |
| Braintrust | LLM 评测与链路追踪 |
| Sentry | 错误监控 |
| Slack / Teams / Discord / GitHub | 通信平台连接器 |
连接器是由 AI 代码智能体应用的 Markdown 安装说明,而非 npm 包。
与其他框架的对比
| 维度 | Flue | LangChain / LangGraph | CrewAI | Mastra |
|---|---|---|---|---|
| 主要语言 | TypeScript | Python / TypeScript | Python | TypeScript |
| 核心抽象 | 智能体运行框架 | Chain / 图 | Crew / 角色 | 工作流 |
| 内置沙箱 | 有(虚拟 + 容器) | 无 | 无 | 无 |
| 会话持久化 | 一等特性 | 通过 LangGraph store | 有限 | 部分支持 |
| MCP 支持 | 原生 | 插件 | 插件 | 插件 |
| 部署目标 | Node、Cloudflare、CI | 自托管 | SaaS / 自托管 | 自托管 |
| 许可证 | Apache-2.0 | MIT | MIT | Apache-2.0 |
| 成熟度 | 实验性(约 3.8K Stars) | 生产可用(约 98K Stars) | 生产可用(约 25K Stars) | 早期阶段 |
最佳实践
| 挑战 / 领域 | 描述 | 解决方案 / 建议 |
|---|---|---|
| 密钥管理 | 将密钥放入提示词或文件系统上下文会带来注入风险 | 将密钥存储在 .env 中;通过 connectMcpServer() 传递给 MCP 服务器,切勿内联 |
| 沙箱选择 | 完整容器会增加延迟和成本 | 默认使用虚拟 just-bash 沙箱;仅在工作流需要 git、npm 或浏览器时才使用 Daytona |
| 会话蔓延 | 无限制的会话会消耗内存和存储 | 对一次性子智能体使用 session.task();显式命名线程 |
| 技能组织 | 临时提示词散落在各个智能体中 | 将可复用行为集中整理为技能,存放在 .agents/skills/;在会话级别分配 |
| 可观测性 | 智能体静默失败难以调试 | 从一开始就接入 OpenTelemetry;将 spans 导出到 Braintrust 或兼容的后端 |
| 构建目标 | 部署到错误运行时会导致智能体静默崩溃 | 在执行 flue build 前,先用 flue dev --target <env> 在本地测试 |
局限
- 实验性状态:处于活跃开发阶段,可能存在破坏性变更
- 仅支持 TypeScript:无 Python 或其他语言 SDK(社区另行维护了一个受 Python 启发的移植版 PyFlue)
- 生态规模:与 LangChain 或 CrewAI 相比,社区和连接器库规模较小
- 沙箱深度:默认虚拟沙箱覆盖大多数 Shell 操作,但不支持浏览器自动化或完整 GUI 工作流(需配合 Daytona 连接器)
参见
- 智能体运行框架(Agent Harness) — 运行框架基础概念与"智能体 = 模型 + 运行框架"等式
- 运行框架工程 — 构建与优化运行框架的工程实践
- LLM 运行框架调研 — ETCLOVG 分类体系及 23+ 运行框架系统的实证基准测试
- Mastra — TypeScript 优先的多智能体框架,与 Flue 在以工作流为中心的场景中互为补充
- Eve — Vercel 的文件系统优先智能体框架,同样强调运行框架优先,但通过
instructions.md而非 TypeScript 来定义智能体 - 标准:MCP — Flue 原生集成的 Model Context Protocol
- 智能体沙箱安全 — 沙箱安全模型,包括 Flue 所使用的相关技术
- 生产最佳实践:部署
- 智能体框架概述
参考资料
- Flue — The Agent Harness Framework — 官方项目网站
- GitHub: withastro/flue — 源代码仓库,Apache-2.0 许可证,约 3.8K Stars(2026 年中)
- Introducing Flue (X / Fred K. Schott) — Astro 联合创始人发布的上线公告