---
description: 拆分方案为任务列表 — 将总体方案分解为扁平、可独立执行的任务，输出简洁列表供预览
---

# 拆分方案为任务列表

将总体方案分解为**扁平、可独立执行、可独立验收**的任务列表，终端预览，不落盘。

## 演进场景的编号与状态规则

当方案文档存在「附录：演进历史」或同时存在 `drafts/<名称>/summary.md` 时，视为「演进场景」，编号和输出规则如下：

| 规则 | 说明 |
|---|---|
| **老任务编号固定** | 已有任务的编号**永不重排**——即使中间有任务被取消，其编号也永久空缺（避免与已合并的代码/草案/提交记录脱钩） |
| **新任务顺延编号** | 新增任务在当前最大编号之后顺延（如原 1~10，新增从 11 开始） |
| **排序表示优先级** | 列表输出顺序按**当前优先级**重排，与编号解耦——编号是身份标识，顺序是优先级 |
| **状态标注** | 每行末尾标注状态：`✅ 已完成` / `🚧 开发中` / `⬜ 未开始` / `❌ 已取消` |

非演进场景（首次拆分）沿用原有规则：编号从 1 递增，按优先级排序，不需要状态标注。

## 拆分原则

1. **扁平化** — 任务平级排列，不分 Phase/阶段
2. **每个任务 = 一个构建/验收单元** — 可构建（通过类型检查/lint）、可运行（功能可启动）、可验收（有明确标准，不依赖其他未完成任务）
3. **明确硬依赖** — 只标注没有前置就无法执行的依赖，不标注软依赖
4. **控制粒度** — 一个任务 = 一个核心能力单元，可独立完成/验证就不拆；需拆分则用 `question` 确认边界

## 执行流程

**第一步：分析方案文档与实施进展**

- 首次拆分：阅读 `epics/<名称>.md`，提取所有能力单元
- 演进场景：同时读取 `epics/<名称>.md`（含变更记录）和 `drafts/<名称>/summary.md`（现有任务状态、依赖关系），识别新增/取消/调整的任务

**第二步：生成任务列表**

**首次拆分格式**：

```
 1. 创建 @ze/ai-tool 包
    依赖: 无
    验收: AiTool 模型可 CRUD

 2. 实现 ExecuteAiTool Action
    依赖: 1
    验收: type:'tool' task → Action 执行 → 结果回注

 ...
```

格式：`<序号>. <标题>\n    依赖: <编号或"无">\n    验收: <一句话标准>`

**演进场景格式**（按当前优先级排序，编号固定，行末标状态）：

```
 2. 实现 ExecuteAiTool Action
    依赖: 1
    验收: type:'tool' task → Action 执行 → 结果回注
    状态: 🚧 开发中

 1. 创建 @ze/ai-tool 包
    依赖: 无
    验收: AiTool 模型可 CRUD
    状态: ✅ 已完成

11. 新增 YYY 适配器
    依赖: 2, 5
    验收: YYY 可作为 AiTool 注册
    状态: ⬜ 未开始

 4. 实现 ZZZ
    依赖: 3
    状态: ❌ 已取消 (原因：依赖的 Y 能力不可用)
```

> 排序说明：开发中 > 未开始（按优先级）> 已完成 > 已取消。已完成和取消任务放在列表末尾以减少干扰，但顺序可由用户在第三步调整。

**第三步：用户调整**

等待反馈：调整顺序 → 重排；合并/拆分/增删 → 更新列表；确认 → 下一步。

> 演进场景特别注意：① 取消的任务保留编号，不物理删除；② 新增任务需用户确认编号已顺延；③ 调整顺序只影响优先级，不影响编号。

**第四步：引导（必须主动向用户输出以下内容）**

首次拆分：

```
任务列表已确认（N 项）:
  /epic-drafts    ← 输出草案文件到 ./drafts/
```

演进场景：

```
任务列表已更新（M 项，其中新增 X / 取消 Y / 调整 Z）:
  /epic-drafts    ← 同步到 ./drafts/（新增草案、标注取消、更新依赖与状态）
```

## 约束

- 仅输出列表，不落盘
- 首次拆分：每条只含标题 + 依赖 + 验收三行
- 演进场景：每条含标题 + 依赖 + 验收 + 状态四行
- 不分 Phase，保持扁平
- 验收标准可观测（能看到/能测试），不能是主观标准
- **演进场景下老任务编号永不重排**，新任务只能顺延最大编号
