写 AI 智能体最别扭的地方,是“代理逻辑”和“运行环境”纠缠在一起:今天用本地进程跑,明天要丢进云容器,后天又想用远程沙箱,代码就得反复改。Flue 的主张是“代理即函数”——把智能体写成一个普通函数,运行环境(本地/虚拟/远程容器沙箱)作为可替换的配件组合进去。

项目基本信息

信息项详情
项目名称flue
GitHub地址https://github.com/withastro/flue
项目描述Astro 团队推出的沙箱智能体框架,代理即函数
作者withastro
开源协议Apache License 2.0
开源状态公开
LanguagesTypeScript
支持平台Windows / macOS / Linux
最后更新2026-10-27

一、项目介绍

withastro/flue 是 Astro 团队推出的“沙箱代理框架(sandbox agent framework)”。核心理念是:代理本身就是函数,你用 'use agent' 指令声明一个 agent 函数,然后通过 useModel / useSandbox / useSkill / useTool 等钩子,把模型、沙箱、技能、工具组装进去。框架负责把这套组合完整调度起来,在虚拟、本地或远程容器沙箱中真实执行。

二、核心优势

  1. 代理即函数:用熟悉的代码结构描述智能体,降低心智负担。
  2. 部署无感:同一份 agent 代码可跑在本地、虚拟或远程沙箱。
  3. 组合式:模型、沙箱、技能、工具都是可插拔的钩子。
  4. 官方背书:来自 Astro 生态,工程化成熟度较高。
  5. 跨平台:基于 TypeScript,Windows / macOS / Linux 均可开发。

三、适用场景

  • 需要把智能体部署到隔离沙箱执行不安全任务的团队。
  • 想在本地与云端共用同一套 agent 代码的开发者。
  • 构建需要调用 GitHub 等外部工具的多步代理。

四、安装教程

Flue 以 npm 包形式提供,核心运行时与 CLI:

npm install @flue/runtime @flue/cli

初始化一个代理项目:

npx @flue/cli init my-agent

常见报错:Node 版本过低会导致 ESM 解析失败,建议使用 Node 18+;若 npx 拉取缓慢,可先 npm i -g @flue/cli 再执行。

五、使用示例

定义一个负责分类问题的 agent(agents/triage.ts):

'use agent';
import { useModel, useSandbox, useTool } from '@flue/runtime';
import { local } from '@flue/runtime/node';
import { openIssue, searchCode } from '../tools/github.ts';

export function Triage() {
  useModel('anthropic:claude-sonnet');
  useSandbox(local());
  useTool(openIssue);
  useTool(searchCode);
  // 代理逻辑:读取 issue、检索代码、给出分类建议
}

真实运行:执行后 Triage 会在本地沙箱里加载 GitHub 工具,对传入的 issue 做代码检索并输出分类建议,整个过程不依赖手写调度代码。

六、常见问题

Q:和 LangGraph 这类框架有什么区别?
A:Flue 强调“函数即代理”与多沙箱部署,调度代码更贴近普通函数写法。

Q:沙箱支持哪些后端?
A:文档列出 local(本地)、virtual(虚拟)、remote container(远程容器)三类,可按安全需求选择。

Q:必须配合 Astro 吗?
A:不必须,Flue 是独立框架,可嵌入任意 Node/TS 项目。

七、总结

Flue 用“代理即函数 + 可替换沙箱”的思路,降低了智能体工程化的门槛,尤其适合需要在隔离环境跑代理的场景。作为 Apache-2.0 协议的开源项目,值得关注其后续在部署侧的演进。