Agent vs Workflow:Flue 的第一张地图
今天只学一个判断:在 Flue 里,什么时候该建一个持续的 Agent,什么时候该建一个有限的 Workflow。
1. Flue 解决什么问题?
Flue 的定位不是“又一个聊天 SDK”。官方 README 把它称为 Agent Harness Framework:你给模型的不只是 prompt,而是一整套可工作的 harness:模型、instructions、tools、skills、filesystem/command sandbox、session/history,以及部署运行时。
一句话:Flue 想把 Claude Code / Codex 这类“能持续工作、能用工具、能在环境里行动”的 agent 架构,变成 TypeScript 开发者可定义、可部署、可观察的框架。
Primary source: withastro/flue README;Quickstart 见 Flue Getting Started。
2. 最重要的分叉:Agent 还是 Workflow?
| 如果任务更像… | 用 Flue 的… | 判断词 |
|---|---|---|
| 一个会继续对话、保留上下文、以后还会接着做的助手。 | Agent | continuing context / session history / months later |
| 一个输入明确、结束明确、产出结构化结果的后台任务。 | Workflow | finite run / input-output / inspectable operation |
Agent 例子
“代码审查助手”:今天看 PR,明天用户继续问为什么,后天根据新 commit 继续追踪同一个上下文。
Workflow 例子
“总结一份文档”:输入 text,调用模型,输出 { summary },这次运行结束。
Sources: Agents guide, Workflows guide.
3. Harness 的最小形状
先不要背 API。先记住 agent 文件通常是在声明:这个模型在什么规则下,带着哪些能力,在哪个环境里工作。
// src/agents/reviewer.ts
import { defineAgent } from '@flue/runtime';
import { local } from '@flue/runtime/node';
import reviewSkill from '../skills/review/SKILL.md' with { type: 'skill' };
import { repositoryTools } from '../shared/repository-tools.ts';
export default defineAgent(() => ({
model: 'anthropic/claude-sonnet-4-6',
instructions: 'Review the requested change using evidence only.',
tools: repositoryTools, // 应用代码提供的受控动作
skills: [reviewSkill], // 可复用专业指导
sandbox: local(), // 文件/命令工作环境
cwd: '/srv/checkouts/app',
}));4. 练习:三秒分类
先自己答:下面场景该用 Agent 还是 Workflow?
- Slack 里一个长期的 DevOps 助手,用户随时回来让它继续排查同一个服务。
- 每天凌晨把 20 篇 release notes 摘成 JSON 摘要。
- 一个客服助手,能在同一个 customer case 里持续追踪订单、补充信息、升级 ticket。
查看参考答案
- Agent:需要 continuing context。
- Workflow:有限、定时、结构化输出。
- Agent:case 需要跨消息保留历史;查订单可通过 tools。
小测验
Flue 里,哪个判断最能说明你应该用 Workflow?
再来一题
在 Flue 中,Tool 与 Skill 最核心的区别是?
本课结束后你应该能说出
- Flue 的核心不是单次 API 调用,而是给模型一个 harness。
- Agent 适合持续上下文;Workflow 适合有限运行。
- Tool 是受控代码能力;Skill 是可复用指导;Sandbox 提供文件/命令工作空间。
如果你愿意,下一课我建议做:0002 — 5 分钟读懂 Flue 项目结构与 Quickstart,开始进入真实 TypeScript 文件。
有任何不清楚的地方,直接问我;我会按你的目标调整下一节课。