名称:并行执行 描述:当多个子任务没有共享文件或依赖关系且可以同时执行时使用。
并行执行
概述
通过单个消息中的多个子代理调用同时执行多个独立任务。对于多组件特性,减少实现时间50-80%。
开始时宣布:“我正在使用并行执行同时运行[N]个独立任务。”
流程
步骤1:识别并行任务
检查子任务JSON文件中的parallel: true:
bash .opencode/skills/task-management/router.sh parallel {feature}
输出显示哪些任务可以一起运行:
批次1(现在准备就绪):
- subtask_01.json (parallel: true)
- subtask_02.json (parallel: true)
批次2(在批次1之后):
- subtask_03.json (depends_on: ["01", "02"])
步骤2:执行并行批次
在单条消息中进行多个task()调用:
我将并行执行批次1的任务:
task(
subagent_type="CoderAgent",
description="执行子任务01",
prompt="读取 .tmp/tasks/feature/subtask_01.json 并实现..."
)
task(
subagent_type="CoderAgent",
description="执行子任务02",
prompt="读取 .tmp/tasks/feature/subtask_02.json 并实现..."
)
关键:两个task()调用在同一个消息中——不是分开的消息。
步骤3:等待所有任务完成
批次中的所有任务必须在进行下一个批次之前完成。
步骤4:验证批次完成
bash .opencode/skills/task-management/router.sh status {feature}
检查批次中的所有任务标记为status: "completed"。
步骤5:执行下一个批次
一旦批次1完成,继续批次2:
task(
subagent_type="CoderAgent",
description="执行子任务03",
prompt="读取 .tmp/tasks/feature/subtask_03.json 并集成..."
)
示例:转换多个文件
我将并行转换这5个子代理文件:
task(subagent_type="CoderAgent", description="转换认证代理",
prompt="将 .opencode/agent/subagents/auth-agent.md 转换为新格式...")
task(subagent_type="CoderAgent", description="转换用户代理",
prompt="将 .opencode/agent/subagents/user-agent.md 转换为新格式...")
task(subagent_type="CoderAgent", description="转换支付代理",
prompt="将 .opencode/agent/subagents/payment-agent.md 转换为新格式...")
task(subagent_type="CoderAgent", description="转换通知代理",
prompt="将 .opencode/agent/subagents/notification-agent.md 转换为新格式...")
task(subagent_type="CoderAgent", description="转换分析代理",
prompt="将 .opencode/agent/subagents/analytics-agent.md 转换为新格式...")
时间节省:5个任务 × 10分钟 = 50分钟顺序执行 → ~10分钟并行(快80%)。
避免冲突
✅ 好(隔离文件):
task(CoderAgent, "创建 src/auth/service.ts")
task(CoderAgent, "创建 src/user/service.ts")
task(CoderAgent, "创建 src/payment/service.ts")
❌ 坏(相同文件):
task(CoderAgent, "添加认证函数到 src/utils/helpers.ts")
task(CoderAgent, "添加验证函数到 src/utils/helpers.ts")
这会导致合并冲突——改为顺序执行。
预加载共享上下文
在并行执行前加载上下文一次:
# 在并行任务前加载上下文
读取:.opencode/context/core/standards/code-quality.md
读取:.opencode/context/core/standards/security-patterns.md
# 现在所有并行任务都有相同上下文
task(CoderAgent, "实现认证服务...")
task(CoderAgent, "实现用户服务...")
不要让每个任务单独发现上下文(较慢)。
错误处理
并行执行期间任务失败:
- 在进入下一个批次前修复失败的任务
- 批次中的其他任务仍可使用
任务以乱序完成:
- 直到当前批次所有任务完成,不要开始下一个批次
- 使用子任务JSON中的依赖跟踪
文件冲突:
- 审查任务分解——确保真正的隔离
- 如果任务必须修改相同文件,标记
parallel: false
记住
- 为并行执行,在单条消息中进行多个task()调用
- 任务必须真正独立(没有共享文件/状态)
- 在并行任务前一次预加载共享上下文
- 在下一个批次前等待批次中所有任务完成
- 时间节省:多组件特性减少50-80%实现时间
- 最佳批次大小:2-4个任务(最多8个,如果真正独立)
- 不要并行化修改相同文件的任务
- 不要并行化有依赖关系的任务
相关
- 任务分解
- 上下文发现
- 代码执行
关键模式:在同一个消息中进行多个独立的task()调用 = 并行执行。