📌 项目地址:withastro/flue | ⭐ 5,421 颗星 | 🔧 TypeScript | 📜 未标注
这个项目解决了什么问题
Flue 不是一个 SDK,而是一个 Agent Harness 框架。它解决了当前 AI Agent 开发中的一个核心矛盾:大语言模型(LLM)的能力足够强大,但让模型自主完成多步、交互式的任务时,开发者却需要大量胶水代码来管理上下文、会话、文件系统、工具调用和运行环境。Claude Code、Codex 这样的“真·自动代理”展示了自主 Agent 的潜力,但它们的架构是封闭的。Flue 提供了一套可编程的 TypeScript 运行时,让你也能构建这类 Agent——给它一个任务,而不是一步步指令,让模型自己规划、执行、修正,最终完成目标。
实际用法:看完这段代码就明白了
Flue 的核心用法是在 .ts 文件中创建一个 Agent,并为它装配所需的全部装备。
import { createAgent, type AgentRouteHandler } from '@flue/runtime';
import { local } from '@flue/runtime/node';
import triage from '../skills/triage/SKILL.md' with { type: 'skill' };
import verify from '../skills/verify/SKILL.md' with { type: 'skill' };
import * as githubTools from '../tools/github.ts';
const instructions = `
Triage a bug report end-to-end: reproduce the bug,
diagnose the root cause, verify whether the behavior is
intentional, and attempt a fix.
...`;
export const route: AgentRouteHandler = async (_c, next) => next();
export default createAgent(() => ({
model: 'anthropic/claude-sonnet-4-6',
tools: [...githubTools],
skills: [triage, verify],
sandbox: local(),
instructions,
}));
关键要素:
– model:指定 LLM(如 Anthropic Claude Sonnet 4-6),任何兼容模型均可。
– tools:提供 Agent 能调用的函数(例如 GitHub API 封装),类型安全。
– skills:以 .md 文件形式导入的领域知识或脚本,Agent 会阅读并遵循。
– sandbox:local() 表示使用本地沙箱(也支持虚拟或远程沙箱),让 Agent 能够安全地执行命令、读写文件。
– instructions:用自然语言给 Agent 一个开放的目标,比如“完整复现 bug report → 诊断根因 → 确认是否为预期行为 → 尝试修复”。
Agent 可以通过 HTTP 暴露(route 函数),方便部署到服务器或边缘环境。整个文件就是一个可独立部署的 Agent。
和同类框架的区别
目前主流 Agent 框架(如 LangChain、AutoGPT、CrewAI)要么是 Python 生态下的库,要么是偏重编排的工具。Flue 的独特之处在于:
- Harness 而非 SDK:它不提供大量封装的抽象,而是提供一个可编程的“马具”,让你直接控制 Agent 的运行时行为——模型选择、工具注入、skill 加载、沙箱策略都在一个 TypeScript 文件中声明。
- TypeScript 原生:对于前端/全栈开发者友好,与现有工具链(Vite、ESBuild)自然融合,可直接导入
.ts、.md文件作为模块。 - 沙箱是核心一等公民:Agent 不只是聊天,它需要写文件、跑代码、访问网络。Flue 的
local()、虚拟沙箱等概念让这些操作有清晰的安全边界,而不是在每次工具调用时手动处理权限。 - 专注“真正自主”:不是 prompt 链或 workflow 编排器,而是让 Agent 拥有连续上下文、会话记忆和故障恢复能力(Durable Execution),更像一个迷你操作系统里的进程。
注意事项
- Flue 目前还处于早期阶段(GitHub 5421 star,README 未提供具体安装命令)。你需要参考官方文档 来了解如何通过 npm/yarn 安装
@flue/runtime以及如何配置 LLM 凭据。 - 使用
local()沙箱意味着 Agent 能执行本地命令和读写文件,存在安全风险。生产环境应优先使用虚拟或远程沙箱,或对 Agent 工具做细粒度权限控制。 - 示例中 skill 文件以
SKILL.md形式导入,需要确保运行时环境支持import ... with { type: 'skill' }这种特殊模块解析(Flue 自定义的 loader)。 - 并未在 README 中给出 CLI 的启动命令或
npm run dev的示例,实际部署方式请查阅官方“Deploy”部分。
如果你正在寻找一个用 TypeScript 构建自主 Agent 的轻量框架,并且希望 Agent 能像人类一样在安全沙箱里“动手”完成工作,Flue 是目前少数能直接满足这个需求的项目。