第十一章:并行工作流——让多个 AI 同时协作
📌 本章李明轩在做什么:这是他最期待的一章。4 个平台 4 个循环并行跑——他睡 8 小时相当于 AI 干了 32 小时。本书开篇那个"一个人顶一个团队"的承诺就在这一章兑现。
一个人 vs 一个团队
想象两种场景:
场景A:一个工人,按顺序完成三件事:修前门锁、刷厨房墙、修后花园篱笆。需要 6 小时。
场景B:三个工人同时工作,各做一件事。同样的工作,2 小时完成。
Ralph 支持两种维度的并行工作:
- 循环级并行:多个独立的 Ralph 循环同时运行(适合完全独立的任务)
- 波浪级并行:单个循环内,同一顶帽子处理多个任务(适合"批量审查"类工作)
循环级并行:多个 AI 同时工作
基本概念
Ralph 支持在同一个项目里同时运行多个循环,每个循环处理一个独立的任务。Ralph 使用 Git Worktree(工作树)机制确保这些循环在隔离的文件系统环境里工作,互不干扰。
📖 名词解释 · Git Worktree(工作树)
Git 传统上只允许你同时在"一个分支"上工作——想看另一个分支的代码,就得先把当前的改动藏起来或提交。Worktree 打破了这个限制:同一个仓库,可以在不同目录里同时检出多个分支,互不打扰。
比喻:一本小说有三个改写版本,传统 Git 像"只有一张桌子,想看 B 版要先把 A 版收起来";Worktree 像"把三张桌子一字排开,三个版本同时摊着,各改各的"。
Ralph 用它实现并行循环的"安全隔离":每个循环各占一个 worktree,各自改各自的文件,最后再合并回主工作树——不会出现"循环 A 写了一半,循环 B 把它改没了"的混乱。
进一步学习:Git 官方文档:git-worktree · Atlassian 中文教程
启动并行循环
在不同的终端窗口,分别启动不同的任务:
# 终端 1 - 主循环
ralph run -p "添加用户注册和登录 API,包括 JWT 认证"
# 终端 2 - 工作树循环(同时启动)
ralph run -p "修复用户列表页面加载缓慢的性能问题" --max-iterations 30
# 终端 3 - 另一个工作树循环
ralph run -p "添加单元测试覆盖 user_service.py 里的所有函数"
所有循环同时跑,互不干扰。
查看所有循环的状态
ralph loops
# 输出:
# ID STATUS ITER RUNTIME DESCRIPTION
# loop-main ✓ Active 12 15m 添加用户注册和登录 API
# loop-abc ✓ Active 5 8m 修复性能问题
# loop-def ✓ Complete 18 22m 添加单元测试
结果如何合并
每个工作树循环完成后,会把自己的修改排队到合并队列(merge queue)。当主循环完成时,Ralph 会自动按照完成顺序合并所有工作树循环的结果:
loop-def 完成 → 排队等待合并
loop-abc 完成 → 排队等待合并
主循环完成 → 开始合并:
合并 loop-def 的修改
合并 loop-abc 的修改
处理可能的冲突
最终提交
一个测试并行循环的实验
如果你想动手体验并行循环,可以用这个贴近李明轩真实场景的实验——把同一篇文章并行改写成两个平台版本:
# 创建一个干净的测试目录
mkdir /tmp/ralph-parallel-test
cd /tmp/ralph-parallel-test
git init
# 准备一篇假的源文稿(你可以用任何一段长文字顶替正文)
cat > article.md <<'EOF'
# 35 岁转型 AI 的三个陷阱
这是一篇 3000 字左右的深度稿,主题是职场中年人想转做 AI 相关工作时
最容易踩的三个陷阱:过度追新、忽视数据基础、低估工程化难度。
……(正文省略)……
EOF
git add . && git commit -m "initial"
ralph init --backend claude
# 终端 1:主循环,生成公众号版本
ralph run -p "读取 article.md,改写成 2000 字左右的公众号版本,
保留原文结构但更流畅有代入感,保存为 wechat.md" \
--max-iterations 5
# 终端 2(同时启动):工作树循环,生成小红书版本
ralph run -p "读取 article.md,改写成 800 字左右的小红书短图文版本,
口语化、分段短、带适当 emoji,保存为 xiaohongshu.md" \
--max-iterations 5
完成后,目录下会同时出现 wechat.md 和 xiaohongshu.md——两种截然不同的风格,两个循环互不干扰地并行产出。把这个实验扩展到 4 个终端,就是李明轩每天晚上真正在做的事。
波浪级并行:批量处理多个文件
第二种并行方式是波浪(Wave):单个帽子在一次迭代里同时处理多个工作单元。
最典型的场景是代码审查:你有 20 个文件需要审查,与其一个一个审查(20 次迭代),不如同时审查(1 次迭代,20 个并行工作者)。
波浪的配置
在帽子配置里,设置 concurrency 参数来启用波浪:
hats:
file_reviewer:
name: "🔍 文件审查者"
triggers: ["review.file"]
publishes: ["review.done"]
concurrency: 4 # 同时最多 4 个并行工作者
instructions: |
审查指定的文件,检查:
1. 是否有安全漏洞
2. 是否有性能问题
3. 代码风格是否统一
输出审查报告。
synthesizer:
name: "📊 综合分析者"
triggers: ["review.done"]
publishes: ["analysis.complete"]
aggregate:
mode: wait_for_all # 等待所有并行审查完成
timeout: 300 # 最多等待 5 分钟
instructions: |
综合所有文件的审查结果,生成总体报告。
波浪的触发
AI 在工作时,可以用命令触发波浪,同时提交多个工作单元:
# 在帽子的指令里,AI 会运行这个命令来触发波浪
ralph wave emit review.file \
--payloads "src/auth.py" "src/user.py" "src/admin.py" "src/api.py"
这会同时启动 4 个 AI 实例,各自审查一个文件,然后把结果汇总给 synthesizer 帽子。
使用 wave-review 预设
Ralph 官方仓库里提供了 wave-review.yml 预设,专门用于并行代码审查。它不随 npm 包发布,需要你手动从上游仓库下载再本地引用:
# 下载预设到本地 presets/ 目录(只做一次)
mkdir -p presets
curl -L -o presets/wave-review.yml \
https://raw.githubusercontent.com/mikeyobrien/ralph-orchestrator/main/presets/wave-review.yml
# 对整个 src/ 目录进行并行代码审查
ralph run -H presets/wave-review.yml \
--prompt "审查 src/ 目录下的所有 Python 文件,重点关注安全性"
同一个仓库的
presets/目录下还有autoresearch.yml、code-assist.yml、debug.yml、pdd-to-code-assist.yml、research.yml、review.yml等,后面六个同时也通过-H builtin:<name>作为内置预设提供;wave-review.yml目前只能走下载这条路。
并行工作的注意事项
避免任务冲突
并行循环处理的任务最好是完全独立的:
适合并行:
- 添加新功能 A(不影响功能 B 的文件)
- 修复 bug X(不影响 bug Y 的文件)
- 为模块 M 添加测试(不影响模块 N)
不适合并行:
- 两个循环都要修改同一个核心文件
- 一个循环的输出是另一个循环的输入
- 两个循环都要修改配置文件
如果并行循环修改了相同的文件,合并时会产生冲突。Ralph 会尝试自动处理简单冲突,但复杂冲突可能需要你手动介入。
资源消耗
每个并行循环都会调用 AI 后端,产生费用。在启动多个并行循环前,先评估:
- AI API 的费用(Claude、Gemini 等都是按 token 计费)
- 本地系统资源(CPU、内存)
- AI 服务的请求速率限制
通常,2-3 个并行循环是一个合理的起点。
实用场景:并行研究
Ralph 的 autoresearch 预设支持并行研究,同时从多个角度研究同一个主题:
ralph run -H builtin:autoresearch \
--prompt "研究 WebAssembly 在 2024 年的应用现状:
从性能、生态系统、实际案例三个维度分别研究,
然后综合成一篇深度报告"
这会启动三个并行的研究帽子,分别研究三个维度,最后由综合者帽子整合成统一报告。
查看并行进度
# 查看所有循环(含状态、迭代次数、运行时间)
ralph loops list
# 查看特定循环的事件历史
ralph loops history loop-abc
# 查看特定循环的实时输出
ralph loops logs loop-abc --follow
本章小结
- 循环级并行:多个 Ralph 循环同时运行,使用 Git Worktree 隔离,完成后自动合并
- 波浪级并行:单个帽子同时处理多个工作单元,用于批量审查等场景
- 并行最适合完全独立的任务,避免修改相同文件
wave-review.yml预设提供开箱即用的并行代码审查- 考虑 AI API 费用和速率限制再决定并行程度
并行让李明轩的晚上产能提高了 4 倍。但他很快碰到一个新情况:周三早上地铁上,他看到昨晚一个循环卡在"微博签名算法"问题上,离公司还有 15 分钟——他能用的只有手机。下一章讲 Telegram 人机协作:怎么用手机给正在跑的循环发指令。