Skip to Content
四. 高级特性17 · 并行 Agent

17 · 并行 Agent

01. 从串行到并行:Agent 工作模式的进化

在以往的 Cursor Agent 工作流中,我们习惯了一个 Agent 从头到尾完成整个任务的方式。输入需求 -> 分析代码 -> 修改文件 -> 报错 -> 再修 -> 再报错……这种串行模式在简单任务上够用,但一旦遇到需要探索多种方案、或者任务本身具有多个独立维度时,串行 Agent 的短板就暴露无遗:

  • 锁步等待:一个思路卡住,整个任务卡住。
  • 思路单一:Agent 容易陷入局部最优,一旦第一次尝试方向错了,后续修补都在错误方向上打转。
  • 无法并行探索:人类开发者遇到复杂问题时,会同时尝试几种思路——一个分支改方案 A,另一个分支试方案 B——但传统 Agent 没有这种能力。

Cursor 的 并行 Agent(Parallel Agents) 模式正是为了解决这个问题而生。它允许你同时启动多个 Agent,各自在隔离的环境中独立工作,最后由一个 Judge Agent(裁判 Agent)评估所有结果,选出最优方案。

一句话理解:串行 Agent 像一个人写代码改 bug,并行 Agent 像一个团队同时做原型设计,每人试一条路,最后大家坐下来选最好的方案。


02. 核心机制:Git Worktree 的隔离魔法

并行 Agent 依赖一个底层基础设施——Git Worktree

什么是 Worktree?

通俗地说,Git Worktree 允许你在同一个仓库的不同目录下,同时 checkout 不同的分支。每个 worktree 就像仓库的一个”平行宇宙”:你可以在 worktree A 上修改方案 A 的代码,同时在 worktree B 上做完全不同的方案 B,互不干扰。

主仓库(main 分支) ├── .claude/worktrees/exp-a/ ← Agent A 的工作区(分支 feature-a) ├── .claude/worktrees/exp-b/ ← Agent B 的工作区(分支 feature-b) └── .claude/worktrees/exp-c/ ← Agent C 的工作区(分支 feature-c)

隔离带来什么好处?

特性传统 Agent并行 Agent
文件隔离所有修改在同一个工作目录每个 Agent 有独立的 worktree
分支隔离依赖手动 branch/stash自动创建独立分支
冲突风险高,容易互相覆盖零冲突,完全隔离
并行度无法并行可同时运行 N 个 Agent
结果对比人为记住结果Judge Agent 系统化评估

Worktree 自动管理流程

Cursor 的并行 Agent 模式下,worktree 的创建、切换、销毁是自动完成的:

  1. EnterWorktree(name="exp-a") — 创建新的 worktree 并进入
  2. Agent A 在 exp-a 中自由修改代码、跑测试
  3. Agent 完成任务后,报告结果
  4. ExitWorktree(action="keep") — 保留 worktree 以备后续查看
  5. 回到主目录,启动下一个并行 Agent

所有这一切对开发者几乎是透明的——你只需要告诉 Cursor 要并行跑几个 Agent 各做什么,剩下的由系统自动编排。


03. 并行 Agent 的三层架构

一个典型的并行 Agent 流程包含三个角色:

第一层:Coordinator(协调者)

协调者是”项目经理”,负责:

  • 把大任务拆解成多个独立子任务
  • 为每个子任务分配一个 Agent
  • 指定评估标准(Judge Agent 用)
  • 收集最终结果并呈现给开发者

第二层:Worker Agents(工人 Agent)

工人是”具体的执行者”,每个 Worker 独立在各自的 worktree 中工作:

  • 读取相同的需求文档或接口定义
  • 尝试不同的实现策略
  • 输出可运行的代码、测试结果或分析报告

工人之间不通信——这正是设计意图。隔离确保了方案的独立性,避免了相互影响。

第三层:Judge Agent(裁判 Agent)

裁判是”评审委员会”,它的职责是:

  • 审查所有 Worker 的输出
  • 根据预设标准(正确性、性能、代码质量、可维护性等)进行打分
  • 推荐最优方案
  • 有时还会输出综合报告,说明为什么某个方案胜出
┌──────────────────────────────────────────────────┐ │ Coordinator │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │Worker A│ │Worker B│ │Worker C│ ... │ │ │方案 A │ │方案 B │ │方案 C │ │ │ └────┬───┘ └────┬───┘ └────┬───┘ │ │ └──────────┬┴───────────┘ │ │ ▼ │ │ Judge Agent │ │ "方案 B 最优,因为..." │ └──────────────────────────────────────────────────┘

04. 实战案例:三路并行实现文件监控

让我们用一个真实的场景来演示并行 Agent 的强大。假设我们需要一个 Python 文件监控工具——当指定目录有文件变更时,自动执行某个命令。我们同时启动三个 Agent,各自采用不同的实现策略。

任务描述

在 /tmp/filewatcher 下实现一个 Python 文件监控脚本: - 监控一个目录的文件变更(创建、修改、删除) - 支持递归监控子目录 - 变更时执行用户指定的命令 - 支持防抖(debounce),避免短时间内反复触发

三个并行方案

Agent实现策略关键库预期优势
Agent AWatchdog 库 + 事件驱动watchdog成熟稳定,跨平台
Agent Binotify 系统调用 + 轮询pyinotify底层控制,性能高
Agent C纯 polling + hash 对比os.stat + hashlib零依赖,纯 Python

协调者拆解任务

协调者将任务拆解为三个完全相同的子任务描述,唯一区别是指明”请使用 Watchdog/请使用 inotify/请使用 polling”,然后分别派发给三个 Agent。

每个 Worker 的工作

每个 Worker 在自己的 worktree 中:

  1. 创建脚本文件(如 watcher_watchdog.py
  2. 实现核心功能(监控、命令执行、防抖)
  3. 创建测试文件验证功能
  4. 运行业务测试确保可用
  5. 撰写简短的自评文档

三个 Agent 完全独立运行,互不知晓对方的存在。

Judge Agent 评估

三个 Worker 完成后,Judge Agent 对比它们的输出:

┌────────────────────────────────────────────────────────────┐ │ Judge Report: File Watcher Implementation Comparison │ ├──────────┬──────────┬──────────┬──────────┬───────────────┤ │ Criteria │ Agent A │ Agent B │ Agent C │ 权重 │ │ │(Watchdog)│(inotify) │ (Polling)│ │ ├──────────┼──────────┼──────────┼──────────┼───────────────┤ │ 正确性 │ ⭐⭐⭐⭐⭐ │ ⭐⭐⭐⭐ │ ⭐⭐⭐ │ 40% │ │ 性能 │ ⭐⭐⭐⭐ │ ⭐⭐⭐⭐⭐ │ ⭐⭐ │ 25% │ │ 可维护性 │ ⭐⭐⭐⭐⭐ │ ⭐⭐⭐ │ ⭐⭐⭐⭐ │ 20% │ │ 可移植性 │ ⭐⭐⭐⭐ │ ⭐⭐ │ ⭐⭐⭐⭐⭐ │ 15% │ ├──────────┼──────────┼──────────┼──────────┼───────────────┤ │ 加权总分 │ 4.55 │ 3.70 │ 3.15 │ │ ├──────────┴──────────┴──────────┴──────────┴───────────────┤ │ 推荐方案:Agent A (Watchdog) │ │ 理由:正确性满分、代码结构清晰、跨平台支持良好、社区活跃。 │ │ 性能虽略逊于 inotify 版本,但对绝大多数场景足够。 │ └─────────────────────────────────────────────────────────────┘

最优方案落地

经过 Judge 评估后,Agent A 的 Watchdog 方案胜出。此时:

  • Agent A 的 worktree 保留(keep),代码被合并到主分支
  • Agent B 和 Agent C 的 worktree 可以根据需要保留参考或直接清理

开发者无需手动查看三个方案的代码——Judge 的总结报告已经给出了足够的信息来做决策。


05. 什么时候用并行?什么时候用串行?

并行 Agent 不是万能的。它最适合特定类型的任务,而在其他情况下反而会增加开销。

并行 Agent 的优势场景

场景描述举例
多方案探索对同一个问题,有多个候选方案三种架构选型、不同算法实现
独立子任务一个大任务可以拆成互不依赖的模块同时实现 API 接口、数据库层、前端组件
A/B 测试需要对比两种实现的效果两种缓存策略的性能对比
竞品分析研究同类工具的优缺点同时调研 3 个开源库的 API 设计

串行 Agent 的优势场景

场景描述举例
顺序依赖第二步依赖第一步的输出先建表结构,再写查询逻辑
调试排错需要逐步缩小问题范围追一个复杂的 bug 链
对话式探索需要持续与 Agent 交互调整方向从模糊需求逐步细化
小任务10 分钟内能解决的简单修改改一个变量名、加一个日志

决策矩阵

任务复杂? ├── 低 → 串行就够了 └── 高 → ├── 有多个独立方案需要探索? → 并行 ├── 任务可以拆成互不依赖的模块? → 并行 ├── 步骤之间有强依赖关系? → 串行 └── 不确定 → 先并行探索 → 再串行深化

经验法则:如果你在脑海中想”我也可以这样做,不过那样做也行……”,这就是用并行 Agent 的信号。让机器替你 explore,你只需要 exploit 最佳结果。


06. 成本考量:并行不是免费的

并行 Agent 虽然强大,但也有成本:

Token 消耗

并行 N 个 Agent 的 Token 消耗大致是串行的 N 倍——因为每个 Agent 都要读取相同的上下文、做独立的推理。但请注意,这个 N 倍是上限,实际往往更低,因为并行 Agent 完成任务的时间更短,避免了串行中”绕远路”带来的额外 Token 浪费。

串行模式:A → B → C → D → E(5 轮交互,每轮 3000 tokens) 总 Token = 15000 并行模式:Agent A(2000 tokens) + Agent B(2500 tokens)+ Agent C(1800 tokens) 总 Token = 6300 + Judge(1500 tokens)= 7800 tokens

结论:并行模式虽然同时用了三个 Agent,但由于每个 Agent 目标明确、任务聚焦,反而可能比串行中来回调试更省 Token。

时间成本

并行最大的收益是墙钟时间(wall-clock time) 的缩短。

  • 串行:每步 2 分钟,5 步 = 10 分钟
  • 并行(3 路):最长的一个 Agent 3 分钟 + Judge 1 分钟 = 4 分钟

时间缩短 60%,对于 CI 等待、紧急修复等场景意义重大。

Worktree 的磁盘占用

每个 worktree 本质上是一个完整的 Git 仓库副本(虽然用了硬链接共享对象),磁盘占用大约 100-500MB 不等。运行完毕后及时清理(exitWorktree action="remove")可以节省空间。


07. 心智模型:如何设计和编排并行 Agent

模型一:厨师模型

你是一个主厨,要准备一桌宴席。

  • 串行:一个人按顺序做每道菜,做一道上一道。
  • 并行:你指挥三个厨师,一个做凉菜,一个做热菜,一个做甜点,同时进行。

主厨(Coordinator)负责拆解菜单、分配任务、最后摆盘上桌(Judge 评估 + 合并)。

模型二:模拟退火 × 遗传算法

把并行 Agent 想象成遗传算法中的种群

  • 每个 Worker 是种群中的一个个体(实现方案)
  • 变异 = 选择不同的库/不同的架构/不同的代码组织
  • 适应度函数 = Judge Agent 的评分标准
  • 选择操作 = Judge 选出最优个体,合并到主分支
  • 迭代 = 如果第一轮没有满意的方案,可以基于最优方案再做一轮变异

这个心智模型帮你理解:并行 Agent 不是一次性的,你可以多轮并行,每轮在前一轮最优方案的基础上进一步优化。

模型三:Scrum 团队的 Sprint

  • Sprint Planning(Coordinator 分解任务)
  • Sprint 执行(Worker 们在各自分支开发)
  • Sprint Review(Judge 评估成果)
  • Retrospective(开发者总结经验、更新 CLAUDE.md)

用团队管理的方式理解 Agent 编排,你会发现并行 Agent 不过是自动化了你(作为 Tech Lead)的日常管理流程。


08. Worktree 隔离:深入底层机制

创建 Worktree 的幕后

当你调用 EnterWorktree(name="exp-foobar") 时,背后发生的是:

# Cursor 自动执行(类似效果) git worktree add .claude/worktrees/exp-foobar <base-branch> # 然后切换到该 worktree 的工作目录

这个新 worktree 拥有完整的:

  • 工作目录(独立的文件系统视图)
  • Git 索引(独立的暂存区)
  • Git 分支(自动创建新分支或基于指定分支)

为什么隔离如此重要?

场景:两个 Agent 同时修改 auth/login.tsx 无隔离的悲剧: Agent A 在第 10 行加了登录日志 Agent B 在第 10-20 行重构了登录流程 → 冲突!谁先写入谁就覆盖了对方 有隔离的优雅: Agent A 在 worktree-a 中修改 auth/login.tsx Agent B 在 worktree-b 中修改 auth/login.tsx → 互不干扰,Judge 胜出的方案才合并到主分支

Exit Worktree 的两种结局

动作效果适用场景
action="keep"保留 worktree 目录和分支方案胜出,需要后续查看或手工调整
action="remove"删除 worktree 目录和分支方案未选中,不需要留下垃圾

如果 worktree 有未提交的变更,remove 会要求 discard_changes: true——这是防止意外丢失工作的安全机制。


09. 高级模式:多轮并行 + 迭代优化

对于真正复杂的任务,单轮并行往往不够。我们可以做分层并行

第一轮:粗粒度方案探索

启动 3-4 个 Agent,分别探索完全不同的架构方案:

Worker 1: "用 FastAPI + SQLAlchemy 实现" Worker 2: "用 Flask + raw SQL 实现" Worker 3: "用 Django ORM 实现" Worker 4: "用 Node.js Express + Prisma 实现"

第二轮:细粒度实现优化

Judge 选出最优架构(比如 FastAPI + SQLAlchemy)后,再启动第二轮并行:

Worker 1: "使用 Repository 模式组装数据层" Worker 2: "使用 Service 层 + 事务装饰器" Worker 3: "使用 CQRS 分离读写模型"

第三轮:测试和边界覆盖

Worker 1: "编写单元测试,覆盖所有错误路径" Worker 2: "编写集成测试,覆盖数据库异常场景" Worker 3: "编写性能基准测试"

这种多轮并行模式可以系统化地构建出高质量的代码,每一轮都在上一轮最优结果上叠加。


10. 最佳实践与注意事项

DO

  • 确保任务真正独立:Worker 之间不要有文件级别的依赖
  • 明确的评估标准:在启动前告诉 Judge 以什么标准评分(正确性 > 性能 > 代码风格?)
  • 资源管理:控制同时运行的 Agent 数量,避免本地资源耗尽(建议 3-5 个)
  • 保留失败记录:即使方案没被选中,其 worktree 也值得保留一段时间供人类复盘

DON’T

  • 不要给并行 Agent 同一个文件路径:虽然 worktree 本身隔离了,但如果两个 Agent 同时输出到同名文件,合并时会冲突
  • 不要让 Worker 做决策性工作:Worker 只”执行”,不”选择”——选择是 Judge 的事
  • 不要期望 1+1=2 的效率提升:并行有开销(创建 worktree、加载上下文、Judge 评估),3 个 Agent 并行大概能节省 50-60% 的时间,不是 66%
  • 不要忽视上下文长度:每个并行 Agent 都要读一遍上下文,如果上下文很大,Token 消耗会翻倍

安全提示

并行 Agent 的工作方式意味着多个 Agent 可以同时执行可能带来副作用的命令(如安装依赖、创建文件)。确保你的项目已经配置了合适的权限控制,避免 Agent 在并行执行时做出危险操作。


11. 总结

维度要点
核心理念同时运行多个 Agent 探索多种方案,由 Judge Agent 择优
底层机制Git Worktree 提供完全隔离的运行环境
架构角色Coordinator(拆任务)→ Worker(执行)→ Judge(评估)
适用场景多方案探索、独立子任务并行、A/B 对比
不适用场景强依赖链、调试排错、简单小任务
成本考量Token 消耗约 N 倍,但墙钟时间大幅缩短
最佳数量建议 3-5 个 Worker 并行
迭代策略可以多轮并行,每轮在前一轮最优方案上继续优化

并行 Agent 是 Cursor Agent 工作流中向系统性迈出的重要一步。它把”试错”这个原本需要开发者亲自完成的探索过程,交给了多个 Agent 高效并行完成,而你只需要在最后看报告、做决策。

如果说串行 Agent 是一个聪明的实习生,那并行 Agent 就是一个完整的研发小组——有架构师(Coordinator)、有工程师(Worker)、有技术评审(Judge)。善用这个能力,你的开发效率会上一个台阶。


下一篇:18 · Agent Team 协作模式 → 深入探讨多个 Agent 组成团队、互相通信、协同完成更大规模任务的工作模式。


本文是 Cursor Agent 工作流系列的第 17 篇。并行 Agent 模式将”单打独斗”升级为”团队协作”,让多个 Agent 在隔离环境中同时探索不同方案,最后由 Judge 选出最优解。