🎬 Agent Workflow:AI的导演艺术
"世界上有一种编排,叫做AI工作流。它不像电影剧本那样有固定的台词,但每一个场景都知道该让谁上场。"
📖 定义:什么是Agent Workflow?
如果你把单个AI Agent比作一个演员,那Agent Workflow(工作流)就是导演。
工作流要解决的核心问题是:
- 🎭 谁来执行:哪个Agent负责什么任务?
- 🔄 怎么流转:任务完成后交给谁?
- ⏱️ 何时触发:什么条件下执行下一步?
- 🧩 如何协作:多个Agent怎么配合?
💡 一句话理解:Agent Workflow就是把复杂的任务拆成小块,让不同的AI像流水线工人一样分工协作。
⚙️ 工作原理:工作流的三大要素
1. 节点(Nodes)
工作流中的每个执行单元。可以是:
- Agent节点:执行AI推理
- 工具节点:调用外部工具
- 条件节点:判断分支走向
- 聚合节点:合并多个结果
2. 边(Edges)
节点之间的连接线,代表数据和控制流的走向:
- 顺序边:A完成后执行B
- 条件边:满足条件才走这条边
- 并行边:同时触发多个下游节点
3. 状态(State)
工作流执行过程中的共享数据:
workflow_state = {
"input": "用户原始请求",
"context": { /* 中间结果 */ },
"output": null,
"current_node": "node_1",
"history": [ /* 执行历史 */ ]
}
🎨 常见工作流模式
模式一:顺序流水线(Sequential)
输入 → [Agent A: 分析] → [Agent B: 处理] → [Agent C: 输出] → 结果
适用场景:内容创作(研究→写作→编辑)
模式二:路由分发(Routing)
┌→ [技术支持Agent]
输入 → [路由器] ──┼→ [销售Agent]
└→ [客服Agent]
适用场景:智能客服、任务分发
模式三:并行处理(Parallel)
┌→ [Agent A] ─┐
输入 ──┼→ [Agent B] ─┼→ [聚合器] → 结果
└→ [Agent C] ─┘
适用场景:多维度分析、竞品调研
模式四:循环迭代(Iterative)
输入 → [生成器] → [评估器] → 满意? → 是 → 输出
↓否
└← [优化器] ←┘
适用场景:代码生成、内容优化
模式五:人机协作(Human-in-the-loop)
[Agent] → [人工审核] → 通过? → 是 → [执行]
↓否
└→ [返回修改]
适用场景:敏感操作、复杂决策
🚀 OpenClaw实战:构建工作流
场景:内容营销工作流
我们要做一个自动化的内容营销系统:
- 研究员Agent:搜索热点话题
- 写手Agent:创作文章大纲
- 编辑Agent:润色内容
- 发布Agent:推送到各个平台
OpenClaw配置
agents:
list:
# 1. 研究员
- name: researcher
system_prompt: |
你是一个专业的行业研究员。
任务:搜索最新AI热点,整理成5个潜在话题。
输出格式:JSON数组,包含topic和trend_score。
skills:
- web_search
- web_fetch
# 2. 写手
- name: writer
system_prompt: |
你是一个资深内容创作者。
任务:根据提供的话题,创作详细的博客大纲。
要求:包含标题、导语、3-5个要点、结尾。
# 3. 编辑
- name: editor
system_prompt: |
你是一个严格的文字编辑。
任务:检查文章质量,确保语言流畅、逻辑清晰。
输出:修改建议或直接返回优化后的内容。
# 4. 发布员
- name: publisher
system_prompt: |
你是一个社交媒体运营专家。
任务:将内容适配成不同平台格式(微博/知乎/公众号)。
skills:
- message
工作流编排代码
// workflow.js - OpenClaw工作流示例
async function contentMarketingWorkflow(topic) {
const state = { topic, results: {} };
// Step 1: 研究
const research = await sessions_spawn({
agentId: "researcher",
task: `研究话题:${topic}`
});
state.results.research = research;
// Step 2: 写作(依赖研究结果)
const outline = await sessions_spawn({
agentId: "writer",
task: `根据以下研究创作大纲:\n${research}`
});
state.results.outline = outline;
// Step 3: 编辑
const edited = await sessions_spawn({
agentId: "editor",
task: `优化以下内容:\n${outline}`
});
state.results.content = edited;
// Step 4: 发布
await sessions_spawn({
agentId: "publisher",
task: `发布内容到各平台:\n${edited}`
});
return state;
}
💡 高级技巧
1. 条件分支
// 根据内容质量决定是否继续
const quality = await evaluate(content);
if (quality.score < 0.7) {
content = await sessions_spawn({ agentId: "rewriter", task: content });
}
2. 错误处理
try {
const result = await sessions_spawn({ ... });
} catch (error) {
// 切换到备用Agent
const fallback = await sessions_spawn({ agentId: "fallback_agent", ... });
}
3. 并行优化
// 同时调用多个Agent,取最优结果
const [resultA, resultB, resultC] = await Promise.all([
sessions_spawn({ agentId: "agent_a", task }),
sessions_spawn({ agentId: "agent_b", task }),
sessions_spawn({ agentId: "agent_c", task })
]);
const best = selectBest([resultA, resultB, resultC]);
🎯 设计原则
- 单一职责:每个Agent只做一件事,做好一件事
- 明确接口:Agent之间的数据传递要规范
- 容错设计:考虑失败情况,准备降级方案
- 可观测性:记录每个节点的执行状态
- 渐进复杂:从简单开始,逐步增加复杂度
"好的工作流不是把AI变复杂,而是让复杂的事情变得简单。就像交响乐,每个乐器都简单,合在一起就是艺术。"