Flue 1.0 Beta 现已正式发布! Flue 的核心原语 —— Agent(智能体)、Workflow(工作流)、Sandbox(沙箱)、Channel(通道)—— 已经融为一体,清晰地展示了 Flue 是什么、为何重要,以及为什么 Flue 是当今构建零锁定自主 Agent 和工作流的最佳开源框架。
新增核心原语包括:
- Agent 与 Workflow —— 自主 Agent + 确定性 AI 工作流。
- Channel —— 将你的 Agent 接入 Slack、GitHub、Linear 等平台。
- @flue/react —— 为 Flue Agent 和工作流打造的前端 UI。
- @flue/sdk —— 全新改版的 Flue 交互客户端。
- 持久化 Agent —— Agent 可从宕机中恢复并继续执行。
- 可观测性 —— 支持 OpenTelemetry、Braintrust、Sentry 等。
- 新增 CLI 命令 —— 离线文档,支持你的编码 Agent 等。
如果你错过了:Flue 是一个用于构建下一代 Agent 的 TypeScript 框架。 接入任意 LLM,构建你的 Agent,部署到任何地方。这一切都由一流的开发者体验支撑,由 Astro 的创造者倾力打造。
立即体验 Flue。将下面的提示词传递给你的编码 Agent,让它帮你搭建第一个 Flue 项目:
Read https://flueframework.cn/start.md then help create my first agent...
请阅读我们的入门指南获取完整详情。
更新:Flue 的接入方式此后已重新设计 —— Flue 现在是一个 Vite 插件(vite dev / vite build 替代了 flue dev / flue build),路由在 app.ts 中显式挂载,flue run <path> --message 可本地运行单个 Agent,Workflow 已合并到 Agent 中作为 actions。本文保留原始内容;请参阅迁移指南了解当前的接入方式。实验性的交互式控制台已独立发布为 @flue/dev-console。
Agent 简介
Flue 最初以一个简单的可编程 TypeScript Harness(运行时环境)发布,基于 Pi 构建。Flue 对 Agent 编排的确定性方法非常适合后台任务 —— 我们称之为 Workflow 的结构化自动化流程。Workflow 是由你信任的代码从头到尾驱动模型的工作方式:
// src/workflows/summarize.ts
// HTTP - POST /workflows/summarize
// CLI - flue run summarize --input='{"text": "Lorem ipsum..."}'
const writer = defineAgent(() => ({ model: 'anthropic/claude-sonnet-4-6' }));
export default defineWorkflow({
agent: writer,
input: v.object({ text: v.string() }),
async run({ harness, input }) {
const session = await harness.session();
const response = await session.prompt(`Summarize: ${input.text}`);
return { summary: response.text };
},
});
我们在五月份发布了 Workflow。但用户想用 Flue 构建的目标更加宏大:完全自主的 Agent。Workflow 让你对精确行为和数据访问有更强的控制力,但这些限制也带来了代价。因此,今天我们正式推出 Agent 原语,用于在 Flue 中构建完全有状态的自主 Agent:
// src/agents/triage.ts
// HTTP - POST /agents/triage/:id
// CLI - flue connect triage
// 在互联网上暴露(并保护)你的 Agent。
export const route = async (_c, next) => next();
// 为你的 Agent 组合它成功所需的上下文。
export default defineAgent(() => ({
model: 'anthropic/claude-sonnet-4-6',
tools: [...githubTools],
skills: [triage, verify],
sandbox: local(),
instructions,
}));
无需自己编写精确的工作流,Flue Agent 只需要 上下文。定义好上下文 —— 模型、工具、Skill(技能)、Sandbox(沙箱)、指令、子 Agent —— 然后看着你的 Agent 自主解决你交给它的任何任务。
Agent 和 Workflow 是一枚硬币的两面。两者共享共同的基础核心,但服务于不同的需求:
- Agent 自主解决开放式问题。
- Workflow 按照你定义的精确步骤运行。
现在你可以自由组合这两种原语,在你的代码库、公司和托管产品中构建完全自主的循环。
Channel 简介
Channel 将你的 Agent 连接到 Slack、GitHub、Linear 等外部数据源。Channel 处理传入事件和验证的样板代码,让你无需操心。
Channel 位于 channels/ 目录中。@flue/slack 和 @flue/stripe 等包已预配置好,帮助你连接到这些平台,但你也可以根据需要构建自己的自定义 Channel。
下面是一个接入 Slack 以回复提及的 Agent。Channel 验证事件,然后将请求 Dispatch(分发)给 assistant Agent 的新实例:
// src/channels/slack.ts
import { dispatch } from '@flue/runtime';
import { createSlackChannel } from '@flue/slack';
import assistant from '../agents/assistant.ts';
export const channel = createSlackChannel({
signingSecret: process.env.SLACK_SIGNING_SECRET!,
async events({ payload }) {
const event = payload.event;
await dispatch(assistant, {
id: event.channel,
input: { type: 'slack.mention', text: event.text },
});
},
});
同样的模式适用于 Flue 不断增长的官方 Channel 集合,让你的 Agent 可以在用户工作的任何地方与他们互动。
构建 AI 优先的 Flue 生态系统
在不久之前,扩展 Flue 这样的框架还需要第三方包、多步骤指南和僵化的 codemod。这些工具只能自动化一些预设的变更,但困难的工作仍然落在你身上:理解说明、将其适配到你的项目中,以及完成安装程序无法完成的一切。
编码 Agent 改变了一切,所以我们设计了 Flue 来充分利用这一点。flue add 为你的 Agent 提供一个 Markdown 蓝图,其中包含完成端到端集成所需的上下文和指令。你的 Agent 可以理解目标,在你实际的代码库中工作,并做出传统安装程序无法做出的项目特定决策。
flue add channel slack
flue add channel linear
flue add sandbox daytona
flue add database postgres
flue add tooling opentelemetry
选择你需要的,然后让你的编码 Agent 智能地将其连接到你已有的项目中。flue add 可与你选择的编码 Agent 配合使用。使用 flue update 升级现有集成。
就像 shadcn,为你的 Agent 而生。
@flue/react 简介
@flue/react 让围绕 Agent 构建前端体验变得轻而易举。useFlueAgent() 和 useFlueWorkflow() Hook 将实时数据直接流式传输到你的 React 应用中,无需你自己编写任何实时通信的管道代码。
import { createFlueClient } from '@flue/sdk';
import { FlueProvider, useFlueAgent } from '@flue/react';
// 在应用顶层包裹一次:
// <FlueProvider client={client}><Chat /></FlueProvider>
const client = createFlueClient({ baseUrl: '/api' });
function Chat() {
const { messages, status, sendMessage } = useFlueAgent({
name: 'triage',
id: 'ticket-8472',
});
// ...
}
Flue 1.0 Beta 还带来了全新改版的 @flue/sdk,让你可以从任何地方与已部署的 Flue Agent 通信:React 前端、另一个服务或一次性脚本。
React 是我们的第一个 UI 库集成,但不会是最后一个。Vue 和 Svelte 适配器已有原型,即将推出。
用 Flue 构建持久化 Agent
构建一个演示 Agent 很容易。但要构建生产级 Agent 则不然。服务器会重启,Provider(服务提供商)会超时,最终你不得不处理工具调用中断和数据丢失。持久化 Agent 是一个能够处理所有这些问题并恢复运行的 Agent,不会丢失历史记录,也不会让情况变得更糟。
为了实现持久性,我们决定依托久经考验的软件基础。Flue 由 Vite 负责构建,Pi 负责运行时,Durable Streams 负责经过验证的事件传输协议 —— 每个 Flue Agent 都使用该协议通信。
在底层,Flue 借鉴了数据库和分布式系统中来之不易的经验:真正的数据源是日志。Durable Streams 为我们提供了一个有保证的只追加记录,记录 Agent 所见的一切:每个人的提示词、模型响应和工具结果都被记录到一个持久的、可重放的流中。
这就是秘诀所在。当一个进程崩溃时,另一个进程可以从日志中拾取并从最后一步继续执行,这样即使硬重启也不会丢失用户的对话。
今天,Flue Agent 可以在 Cloudflare 上按需扩展。在 Node.js 上构建时,Flue 仍运行在单个节点上,但我们计划在稳定版 1.0 发布之前支持多节点(水平扩展)部署。
迈向 1.0
我们在 1.0 Beta 中落地了远超此处所能涵盖的内容:增强的可观测性、新的数据库适配器(MySQL、Redis、MongoDB、Supabase)、Agent 的图片输入、可通过 npm 导入的 Skill,以及新的 CLI 命令(如你的编码 Agent 可搜索的离线文档)。完整列表请参阅变更日志。
从此处开始,通往 1.0 的道路在于打磨、文档和倾听你的反馈。偶尔仍会有破坏性变更,但会比以前少得多。Flue 的形态正日趋稳固。
Flue 最初作为 Astro 仓库中 AI 工作流的引擎。它成长为我们认为每个构建 Agent 的团队都会需要的工具,而不仅仅是我们自己。感谢每一位尝试了早期版本并帮助我们弄清楚 Flue 是什么的人!
理解 Flue 最好的方式就是用它来构建。将下面的提示词交给你的编码 Agent 来搭建你的第一个项目:
Read https://flueframework.cn/start.md then help create my first agent...
更喜欢自己动手?安装包并初始化项目:
npm install @flue/runtime
npm install -D @flue/cli
npx flue init
请阅读完整的快速入门指南了解更多详情。
想要支持这个项目? 在 GitHub 上给我们 Star,这是表达支持和帮助我们成长最简单的方式!
想要关注最新动态? 关注 @FredKSchott 获取更多技巧和开发更新。