---
name: omd-team
description: "团队多智能体编排：运行分阶段流水线（team-plan → team-prd → team-exec → team-verify → team-fix 循环），以 DSH workflow 脚本 + 子代理扇出实现。需要团队编排、多智能体流水线或跨子系统特性时使用；触发词：team / 团队 / 多智能体流水线。"
---

# oh-my-dsh · Team 分阶段流水线

把一个大任务拆成五个阶段的流水线，每个阶段由专门的子代理负责，阶段之间像流水线一样传递产物。对应 OMC 的 Team 模式。

## 何时用

- 需求横跨多个子系统（后端 + 前端 + 测试 + 文档）。
- 用户说"团队""team""多智能体""流水线""pipeline"。
- 任务有清晰的阶段依赖：先规划，再出规格，再实现，再验证，再修复。

## 五阶段模型

```
team-plan → team-prd → team-exec → team-verify → team-fix (loop)
```

| 阶段 | 产出 | 责任人 |
|------|------|--------|
| plan | 任务分解：子系统、依赖、验收标准 | 规划代理 |
| prd | 精确规格：接口、schema、数据流、边界 | 规格代理 |
| exec | 各子系统的实现 | 多个执行代理（并行） |
| verify | 测试、评审、与验收标准逐条对照 | 验证代理 |
| fix | 修复验证发现的缺陷，循环直到全绿 | 修复代理 |

## 用 workflow 工具驱动

`workflow` 是团队流水线的首选载体：一个 JS 脚本编排多个子代理，支持 `pipeline`（无阶段屏障的流水线）和 `parallel`（屏障）。每个阶段用一个子代理，产物用结构化 JSON 在阶段间传递。

```js
// workflow 脚本骨架（meta 走参数，不是代码）
const plan = await agent(
  `你是规划代理。把任务拆成带依赖和验收标准的任务清单。任务：${args.task}`,
  { label: 'team-plan', phase: 'plan', schema: { type: 'object', properties: {
    tasks: { type: 'array', items: { type: 'object', properties: {
      id: { type: 'string' }, title: { type: 'string' },
      dependsOn: { type: 'array', items: { type: 'string' } },
      acceptance: { type: 'string' } },
      required: ['id','title','acceptance'] } } } } }
);

const prd = await agent(
  `你是规格代理。基于这份任务清单产出精确实现规格（接口/schema/边界）。\n${JSON.stringify(plan)}`,
  { label: 'team-prd', phase: 'prd' }
);

// exec：按依赖并行执行，无屏障
const results = await pipeline(plan.tasks, async (prev, task) => {
  return await agent(
    `你是执行代理。按规格实现任务 #${task.id}「${task.title}」。\n规格：${prd}\n前序产物：${JSON.stringify(prev)}`,
    { label: `exec-${task.id}`, phase: 'exec' }
  );
});

// verify：对照验收标准逐条验证
const verdict = await agent(
  `你是验证代理。对照验收标准验证实现，返回每个任务的通过/缺陷清单。\n实现：${JSON.stringify(results)}\n验收标准：${JSON.stringify(plan.tasks)}`,
  { label: 'team-verify', phase: 'verify' }
);

// fix loop：只要还有缺陷就继续修，上限 3 轮
let fixing = verdict;
for (let round = 0; round < 3 && fixing.openIssues.length; round++) {
  fixing = await agent(
    `你是修复代理。修复这些缺陷并重新验证。\n${JSON.stringify(fixing.openIssues)}`,
    { label: `team-fix-${round}`, phase: 'fix' }
  );
}

return { plan, prd, results, final: fixing };
```

要点：

- `meta` 的 `phases` 声明 `[{title:'plan'},{title:'prd'},{title:'exec'},{title:'verify'},{title:'fix'}]`，进度条按阶段推进。
- `agent()` 的 `schema` 用「对象根 + type/properties/required/items」约束子代理返回结构化 JSON；不写 `schema` 则拿到纯文本。
- `pipeline(items, ...stages)` 让每个任务独立流过各阶段、阶段间无屏障；`parallel(thunks)` 用于必须集齐全部结果才能继续的屏障。
- 脚本里没有文件系统/网络/计时器，只有 `agent`/`pipeline`/`parallel`/`phase`/`log`/`args` —— 所有实际工作由子代理完成，脚本只负责编排。

## 不用 workflow 时（轻量版）

任务不大、阶段不复杂时，直接在主会话里手动走五阶段：用 `subagent` 依次委托 plan → prd → exec（多个 `subagent` 在同一轮并行启动）→ verify → fix，产物在主会话里自己串联。

## 收尾：HUD

每个阶段结束后，按 `omd-hud` 输出一段内联 `dsh-ui` 仪表盘：阶段状态表 + 进度条 + 下一个动作。别等全跑完才汇报。

## 反模式

- 别把 plan 和 prd 合并成一个代理：plan 管"拆什么"，prd 管"怎么做对"。
- exec 之间如果有依赖，用 `pipeline` 传前序产物，而不是让它们各自重读仓库。
- fix loop 必须有上限和"全绿"判据，否则无限循环。
