名称: 管道 描述: 具有上下文传递的顺序代理链。连续运行代理,每个阶段接收前阶段的输出。 参数提示: “<预设> | 代理1 -> 代理2 ‘任务’” 允许工具: Read, Write, Edit, Grep, Glob, Bash, Task, TeamCreate, TeamDelete, SendMessage, TaskCreate, TaskList, TaskUpdate, TaskGet
管道模式
顺序代理链,每个阶段的输出传递给下一个。
管道请求
$ARGUMENTS
参数
| 参数 | 描述 |
|---|---|
<预设> |
内置管道: review, implement, debug |
代理1 -> 代理2 '任务' |
自定义管道,指定代理链 |
代理:模型 -> 代理:模型 |
自定义管道,每个阶段覆盖模型 |
内置预设
| 预设 | 链 | 使用场景 |
|---|---|---|
review |
explore -> leviathan -> kraken | 研究、审查、然后修复 |
implement |
explore -> kraken | 研究然后实现 |
debug |
explore -> build-fixer | 研究然后修复构建错误 |
工作流程
步骤 1: 解析管道
解析 $ARGUMENTS 以确定管道阶段。
如果是预设名称: 从上方预设表中映射到内置链。
如果是自定义链: 解析 代理1 -> 代理2 -> 代理3 "任务描述" 格式。
- 每个阶段由
->分隔 - 可选模型覆盖使用
:后缀(例如explore:haiku) - 任务描述是末尾的引用字符串,或最后一个代理后的所有剩余文本
每个代理的默认模型:
- explore: haiku
- oracle: sonnet
- leviathan: sonnet
- kraken: sonnet
- spark: sonnet
- build-fixer: sonnet
- critic: sonnet
步骤 2: 创建团队
TeamCreate("pipeline-team")
步骤 3: 初始化管道状态
创建管道状态文件:
Write(".maestro/handoff/pipeline-{timestamp}.json", {
"type": "pipeline",
"stages": [
{ "agent": "agent1", "model": "model1", "status": "pending", "output": null },
{ "agent": "agent2", "model": "model2", "status": "pending", "output": null }
],
"task": "the task description",
"started_at": "ISO timestamp",
"current_stage": 0
})
步骤 4: 顺序执行阶段
对于每个按顺序的阶段:
-
构建上下文 从所有前阶段:
## 管道上下文 ### 阶段 1: explore (已完成) {阶段 1 的输出} ### 阶段 2: leviathan (已完成) {阶段 2 的输出} ### 当前阶段: kraken {原始任务描述} -
为当前阶段代理创建任务:
TaskCreate({ subject: "管道阶段 {N}: {代理} - {任务}", description: "## 管道阶段 {N}
{前阶段上下文}
任务
{任务描述}" })
3. **以适当模型生成代理** 作为队友:
Task(agent: “{代理}”, model: “{模型}”, prompt: “执行分配的任务。阅读任务描述以获取完整上下文,包括前管道阶段的输出。”)
4. **等待完成**: 通过 `TaskGet` 监控,直到任务状态为 `completed`。
5. **捕获输出**: 读取代理修改或创建的文件。更新管道状态文件以包含阶段输出。
6. **更新状态**: 标记当前阶段为已完成,推进 `current_stage`。
### 步骤 5: 最终化
所有阶段完成后:
1. **摘要**: 报告每个阶段的产出
2. **清理**: 调用 `TeamDelete(reason: "管道完成")`。如果失败,回退到: `rm -rf ~/.claude/teams/pipeline-{id} ~/.claude/tasks/pipeline-{id}`
3. **归档状态**: 管道状态文件保留在 `.maestro/handoff/` 中用于会话恢复
## 错误处理
- 如果一个阶段失败(代理报告错误或任务保持进行中状态过久),在管道状态中记录错误并停止管道
- 报告哪个阶段失败以及错误上下文
- 失败后不要继续到后续阶段
- 用户可以检查管道状态文件并从失败阶段重新运行
## 约束
- 每个管道最多 5 个阶段
- 每个阶段运行一个代理(无并行阶段——使用 /work 进行并行执行)
- 管道状态持久化用于崩溃恢复
- 只读代理(explore, oracle, leviathan)应在链早期
- 写代理(kraken, spark, build-fixer)应在链晚期