跳转至

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 devflue buildflue run

智能体文件位于 agents/<name>.ts,定义智能体的运行框架配置——模型默认值、工具、沙箱类型和文件系统访问。技能是基于 Markdown 的可复用行为,可在智能体、会话或单次调用级别分配,以实现细粒度编排。

沙箱层级:

层级 技术 适用场景
虚拟(默认) just-bash 内存文件系统 + Bash 快速、低成本、高流量智能体
容器(通过连接器) Daytona 隔离 Linux 虚拟机 完整代码编写智能体、git 工作流、浏览器访问

状态持久化目标:

部署目标 状态机制
Cloudflare Workers Durable Objects
Node.js 可插拔的自定义存储

部署

Flue 支持三种调用模式:

  • CLIflue 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 连接器)

参见

参考资料