Agent的两种玩法:parallel 与 pipeline

parallel 与 pipeline:并行的两种玩法

系列第 4 篇 · 前置:第 1 篇第 2 篇第 3 篇


上一篇用了 parallel,这篇讲清楚它和 pipeline 的区别。这俩是 Workflow 里最容易搞混的。

一句话:parallel 等人,pipeline 不等人。


一、parallel:等所有人到齐

scss 复制代码
const [chinese, english, github] = await parallel([
  () => agent('搜中文资料'),
  () => agent('搜英文资料'),
  () => agent('搜开源项目'),
])

三个 Agent 同时启动,但 parallel 会等最慢的那个回来,才把三个结果一起给你。先回来的干等着。

就像约三个人开会,两个人提前到了,也得等最后那个迟到的。

二、pipeline:各走各的

javascript 复制代码
const results = await pipeline(
  ['Hook入门', 'Hook进阶', 'Hook实战'],
  (topic) => agent(`搜 ${topic} 资料`),
  (materials, topic) => agent(`根据资料写 ${topic} 大纲`),
  (outline, topic) => agent(`根据大纲写 ${topic} 初稿`),
)

三个主题同时启动,但每个主题独立走完"搜资料→写大纲→写初稿"全程。A 搜完资料立刻去写大纲,不用等 B 和 C 搜完。快的先交稿,慢的自己慢慢跑。

就像工厂流水线:三件产品同时上传送带,第一件到第二道工序时,第三件可能还在第一道工序。


三、时间线对比

三个主题,每个走三步,用同一个例子看两种写法差多少:

ini 复制代码
parallel 分三个阶段(每阶段等最慢的):

阶段1 搜资料:  入门▓▓  进阶▓▓▓▓▓  实战▓▓     等 5 分钟
阶段2 写大纲:  入门▓▓▓ 进阶▓▓      实战▓▓▓    等 3 分钟
阶段3 写初稿:  入门▓▓▓▓▓▓ 进阶▓▓▓▓ 实战▓▓▓   等 6 分钟
总耗时:5 + 3 + 6 = 14 分钟,其中 7 分钟在干等

pipeline(各走各的):

入门:[搜▓▓]→[大纲▓▓▓]→[初稿▓▓▓▓▓▓] ✅ 11 分钟
进阶:[搜▓▓▓▓▓]→[大纲▓▓]→[初稿▓▓▓▓]  ✅ 11 分钟
实战:[搜▓▓]→[大纲▓▓▓]→[初稿▓▓▓]      ✅  8 分钟
总耗时:11 分钟,没人等

任务越多、每步耗时差异越大,pipeline 的优势越明显。10 个主题用 parallel,最慢那个能把所有人拖跨;用 pipeline,快的早交早了。


四、barrier:什么时候该等

parallel 自带一个 barrier(屏障):所有任务到齐了才放行。

什么时候需要 barrier? 下一步真的需要所有人的结果时:

scss 复制代码
// 需要:去重必须等所有维度的发现都到齐
const allFindings = await parallel([
  () => agent('查 Bug'),
  () => agent('查安全问题'),
  () => agent('查性能问题'),
])
const unique = 去重(allFindings.flat())  // 不全到齐没法去重
arduino 复制代码
// 不需要:三篇文章各写各的,谁写完谁先去润色
// 用 pipeline,别用三个 parallel 阶段

判断标准就一句话:下一步要不要把所有人的结果放一起处理? 要就 parallel,不要就 pipeline。


五、常见错误

1. 单个任务也用 pipeline

javascript 复制代码
// 没必要,直接 agent 串联
await pipeline(['一个主题'], (t) => agent('搜'), (r) => agent('写'))

2. 不相关的任务拆成多个 parallel

scss 复制代码
// 四个任务互不依赖,一个 parallel 就行
const a = await parallel([() => agent('A'), () => agent('B')])
const b = await parallel([() => agent('C'), () => agent('D')])

3. 中间是纯 JS 处理,却开了新的 parallel 阶段

scss 复制代码
// 去重是 JS 操作,不花时间,不需要 barrier
const all = await parallel([查A(), 查B(), 查C()])
const filtered = all.filter(Boolean)  // 纯 JS,瞬间完成
// 下一步直接 pipeline,不用再 parallel

六、决策口诀

csharp 复制代码
下一步要汇总所有人的结果 → parallel(开会等人到齐)
各干各的互不依赖       → pipeline(流水线各走各的)
只有一个任务          → 直接 await agent 串联
不知道要跑多少轮      → while 循环(下一篇讲)

自测几个场景:

场景 用哪个
三个源同时搜,搜完一起分析 parallel
十个文件各自检查→修复→验证 pipeline
写完文章从三个维度同时审查 parallel
五个主题各写各的文章 pipeline

小结

arduino 复制代码
parallel:同时启动,等最慢的,自带 barrier
pipeline:同时启动,各走各的,没有 barrier

barrier 只在"需要所有人结果才能下一步"时才需要
pipeline 传多个变量用 .then() 打包

口诀:开会用 parallel,流水线用 pipeline
相关推荐
joinwell5214 分钟前
取消了 Agent,子进程真的停了吗?从 Anywhere Agents 看 Agent 运行时的停止证据边界
agent
该用户已不存在19 分钟前
8 个 MCP Server 让我的 Claude Code 升级成高级开发者
ai编程·mcp
腾讯云开发者34 分钟前
AI最大的价值不是提效:CEO如何借WorkBuddy走出效率陷阱
agent
plainGeekDev40 分钟前
Workflow 基础:用代码调度多个 Agent
agent·ai编程·claude
XLYcmy1 小时前
PDF论文处理器 - 完整使用指南
pdf·llm·json·agent·token·csv·dify
cuguanren1 小时前
Agent 框架的会话记忆管理机制
人工智能·ai·大模型·llm·agent·上下文管理·会话记忆管理
SelectDB1 小时前
开源!Apache Doris 上线 Profile 可视化诊断:基于 Doris Skills 破解 AI 误诊难题
数据库·agent·自动化运维
0end12 小时前
AI Agent 学习笔记(七):Coding Agent 与代码生成——代码是 Agent 的元能力
ai编程
Lambert2812 小时前
Spring AI 2.0 vs LangChain4j 1.19:MCP 新规范竞速,Spring AI 慢在哪
langchain·ai编程