Flue 框架从入门到精通
Part 2 · 核心能力

§07 沙箱与模型:Agent 的工作间和大脑

三种沙箱怎么选,模型与 provider 的坑

📑 本章目录

07.1 模型是大脑,沙箱是工作间

我第一次用 local() 沙箱,Agent 直接把我主机文件改了。吓一跳。才认真研究沙箱。

选错了,要么跑不动(沙箱太弱),要么不安全(沙箱太宽)。这章把这两个旋钮讲清。

07.2 沙箱三选一

沙箱 用途 隔离性 标叔的结论
虚拟沙箱(默认) 轻量工作,内存文件系统 中,非网络隔离 起步首选,够用
local() 直接碰主机文件/命令 无隔离 只信主机时才用
远程沙箱 不信任/多租户任务 上云或跑代码时用

虚拟沙箱是默认的,无需配置。一个工作流能先塞文件进去,再让 Agent 处理:

const harness = await init(reviewer);
// 这行是关键:应用代码先放好输入文件
await harness.fs.writeFile('document.md', payload.document);
const session = await harness.session();
await session.prompt('Review document.md and write findings to review.md.');
// 收结果
return { review: await harness.fs.readFile('review.md') };

注意harness.fs 在工作流里用,harness.env 在 Agent 里用。

没有 harness.fs 这个 API。在 Agent 会话里读写,走 harness.env.writeFile。别记反。

07.3 模型:用字符串选大脑

模型用 provider/model-id 格式指定。Flue 内置多家:

createAgent(() => ({
  model: 'anthropic/claude-sonnet-4-6',  // Anthropic
  // model: 'deepseek/deepseek-v4-flash', // DeepSeek,内置,免注册
  thinkingLevel: 'high',                 // 推理强度:off→xhigh
}));

thinkingLevel 控制模型花多少心思。默认 medium。简单活设 low 省钱。

07.4 关于 DeepSeek 的一个坑

DeepSeek 是内置 provider。设个环境变量就能用,不用注册。

但有人想把 DeepSeek 当 Anthropic 用,走它的 Anthropic 兼容端点。这时要改 baseUrl

# .env 里设这两个,让 anthropic provider 指向 DeepSeek
ANTHROPIC_API_KEY=sk-your-deepseek-key
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic

标叔的经验registerProvider 必须写在 app.ts

我把它写在 Agent 文件里,死活不生效。后来才懂:Flue 构建只抽取 handler 函数,顶层副作用会被丢掉。app.ts 才是注册 provider 的地方。

工作间和大脑都讲清了。下一 Part 进入进阶实战。