17b - 15 分钟瀑布规划法
本文是《AI Agent 实战手册》第 17 章第 2 节。 上一节:17a-Spec-Driven工作流全景 | 下一节:17c-微任务执行与人工审查
概述
“15 分钟瀑布”是 Spec-Driven Agentic Workflow 中最具颠覆性的理念——用 AI 将传统瀑布模型中需要数天甚至数周的规划工作压缩到 15 分钟内完成。这不是跳过规划,而是用 AI 加速规划。通过结构化的三步流程(创建 Spec → Plan Mode 分析 → 任务分解),开发者能在动手写代码之前就建立清晰的需求边界、技术设计和执行路线图,从根本上避免 Vibe Coding 带来的上下文漂移和质量失控问题。
1. “15 分钟瀑布”的核心理念
1.1 什么是”15 分钟瀑布”
传统瀑布模型的规划阶段通常包含需求分析、系统设计、技术评审和任务拆分,整个过程可能耗时数天到数周。“15 分钟瀑布”保留了瀑布模型中”先规划后执行”的核心智慧,但借助 AI Agent 将规划时间压缩到 15 分钟左右。
传统瀑布规划 15 分钟瀑布规划
┌──────────────────┐ ┌──────────────────┐
│ 需求分析(2-5 天)│ │ AI 采访理清需求 │ ← 5 分钟
├──────────────────┤ ├──────────────────┤
│ 系统设计(3-7 天)│ │ AI 生成 Spec 文档 │ ← 5 分钟
├──────────────────┤ ├──────────────────┤
│ 技术评审(1-2 天)│ │ Plan Mode 分析 │ ← 3 分钟
├──────────────────┤ ├──────────────────┤
│ 任务拆分(1-2 天)│ │ 自动任务分解 │ ← 2 分钟
└──────────────────┘ └──────────────────┘
总计:7-16 天 总计:~15 分钟关键区别在于:传统瀑布的规划是人工密集型的,需要多次会议、文档撰写和评审循环;而 15 分钟瀑布让 AI 承担了信息整理、文档生成和初步设计的工作,人类只需审查和决策。
1.2 为什么不能跳过规划
Augment Code 的研究数据显示,采用结构化四阶段方法论(Specify → Plan → Tasks → Implement)的团队,编程时间减少了 56%,上市时间缩短了 30-40%。这个数据说明:规划不是浪费时间,而是节省时间。
跳过规划直接编码的常见后果:
| 问题 | 表现 | 根因 |
|---|---|---|
| 上下文漂移 | AI 在长对话中忘记早期决策,代码前后矛盾 | 没有持久化的设计文档作为锚点 |
| 功能蔓延 | 越做越多,偏离初始目标 | 没有明确的需求边界 |
| 重复返工 | 做完发现方向错了,推倒重来 | 没有提前验证技术方案 |
| 质量失控 | 代码能跑但不可维护 | 没有编码规范和架构约束 |
| 集成困难 | 各模块接口不匹配 | 没有统一的数据模型和 API 设计 |
1.3 “15 分钟瀑布”的三步流程
Step 1: 创建 Spec(~5-8 分钟)
├── AI 采访:理清需求边界
├── 生成 requirements.md:用户故事 + 验收标准
├── 生成 design.md:技术设计 + 架构决策
└── 人工审查:确认方向正确
Step 2: Plan Mode 分析(~3-5 分钟)
├── 只读分析现有代码库
├── 识别需要修改的模块
├── 评估技术风险
└── 人工确认实现计划
Step 3: 任务分解(~2-3 分钟)
├── 生成 tasks.md:按依赖顺序排列
├── 每个任务预估 1-2 小时工作量
├── 标注任务间的依赖关系
└── 人工确认任务列表工具推荐
| 工具 | Spec 创建能力 | Plan Mode | 任务分解 | 价格(2025) |
|---|---|---|---|---|
| Kiro | ⭐⭐⭐⭐⭐ 原生三阶段工作流 | 内置于 design.md 生成 | 自动生成 tasks.md | 免费版 50 次/月;Pro $19/月 |
| Claude Code | ⭐⭐⭐⭐ CLAUDE.md + 手动 Spec | claude --plan 原生支持 | 手动或 prompt 驱动 | $20/月(Claude Max) |
| Cursor | ⭐⭐⭐ 手动 SPEC.md | Composer 中可模拟 | 手动或 prompt 驱动 | $20/月(Pro) |
| GitHub Spec Kit | ⭐⭐⭐⭐ 开源框架 | 集成 Claude Code | 自动生成 | 免费(开源) |
| Augment Code | ⭐⭐⭐⭐ 四阶段方法论 | 原生支持 | 自动生成 | 联系销售 |
| Traycer AI | ⭐⭐⭐⭐ Plan-First 原生 | 原生支持 | 自动分解 + 验证 | 免费(Beta) |
2. Step 1:创建 Spec——从模糊想法到结构化文档
Spec 创建是 15 分钟瀑布的核心环节。目标是将开发者脑中模糊的想法转化为结构化的、可执行的规格说明文档。不同工具有不同的实现路径,但核心流程一致:需求澄清 → 文档生成 → 人工审查。
2.1 在 Kiro 中创建 Spec(推荐方式)
Kiro 是目前唯一原生内置完整 Spec 工作流的 IDE,提供了从需求到设计到任务的三阶段自动化流程。
操作步骤
步骤 1:启动 Spec 创建
1. 打开 Kiro IDE
2. 在 Kiro 面板中点击 Specs 下的 "+" 按钮
(或通过命令面板 Ctrl+Shift+P → "Kiro: Create New Spec")
3. 在对话框中描述你要构建的功能步骤 2:描述功能需求
用自然语言描述你的功能。Kiro 会像一位产品经理一样,通过提问帮你理清需求边界:
示例输入:
"我要实现一个文件同步引擎,支持本地文件夹与百度网盘之间的
增量同步。需要支持文件变更检测、冲突处理和断点续传。
技术栈是 Tauri(Rust 后端 + React 前端)。"步骤 3:审查 requirements.md
Kiro 自动生成 requirements.md,包含用户故事和验收标准。使用 EARS(Easy Approach to Requirements Syntax)格式确保需求的精确性:
# 生成的 requirements.md 示例片段
### Requirement 1: 文件变更检测
**User Story:** As a 用户, I want 系统自动检测本地文件变更,
so that 变更能及时同步到云端。
#### Acceptance Criteria
1. WHEN a file is created in a monitored folder,
THE system SHALL detect the change within 2 seconds
2. WHEN a file is modified,
THE system SHALL compute the file hash and compare
with the last known hash
3. WHEN a file is deleted,
THE system SHALL mark it as pending deletion
in the sync queue审查要点:
- 每个用户故事是否覆盖了一个独立的功能点?
- 验收标准是否具体、可测试?
- 是否遗漏了重要的非功能需求(性能、安全、可用性)?
步骤 4:审查 design.md
确认 requirements 后,Kiro 生成 design.md,包含技术设计和架构决策:
# 生成的 design.md 示例片段
## Architecture
### 系统架构图
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ React UI │ ←→ │ Tauri Bridge │ ←→ │ Rust Core │
│ (前端) │ │ (IPC 通信) │ │ (后端引擎) │
└─────────────┘ └──────────────┘ └─────────────┘
│
┌──────────────────────────┤
↓ ↓ ↓
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 文件监控 │ │ 差异计算 │ │ 同步调度 │
│ Module │ │ Module │ │ Module │
└──────────┘ └──────────┘ └──────────┘
### Components
- **FileWatcher**: 基于 notify crate 的文件系统监控
- **DiffEngine**: 基于文件哈希的增量差异计算
- **SyncScheduler**: 带优先级队列的同步任务调度器
- **BaiduPanClient**: 百度网盘 API 封装审查要点:
- 架构方案是否合理?是否有更简单的替代方案?
- 数据模型是否完整?
- API 设计是否清晰?
- 关键算法是否正确?
步骤 5:确认生成 tasks.md
最后,Kiro 基于 requirements 和 design 生成任务列表:
# 生成的 tasks.md 示例片段
## Tasks
- [ ] 1. 项目初始化
- [ ] 1.1 创建 Tauri + React 项目骨架
- [ ] 1.2 配置 Rust 依赖(notify, tokio, serde)
- [ ] 1.3 配置 TypeScript 依赖和构建工具
- [ ] 2. 配置管理模块
- [ ] 2.1 定义配置数据结构
- [ ] 2.2 实现 TOML 配置读写
- [ ] 2.3 实现配置变更监听
- [ ] 3. 文件监控模块
- [ ] 3.1 实现文件系统事件监听
- [ ] 3.2 实现文件哈希计算
- [ ] 3.3 实现变更事件去重和节流提示词模板:优化 Kiro Spec 输出
如果 Kiro 生成的 Spec 不够详细,可以在描述中加入更多上下文:
提示词模板:
我要实现 [功能名称]。
背景信息:
- 项目类型:[Web 应用/桌面应用/CLI 工具/移动应用]
- 技术栈:[具体技术栈]
- 现有代码库:[有/无,如有请描述规模和架构]
- 目标用户:[用户画像]
- 性能要求:[具体指标,如响应时间 < 200ms]
- 安全要求:[认证方式、数据加密等]
核心功能:
1. [功能点 1]
2. [功能点 2]
3. [功能点 3]
明确不做的事情:
- [排除项 1]
- [排除项 2]
请生成详细的 Spec,包含用户故事、验收标准、技术设计和任务拆分。2.2 在 Claude Code 中创建 Spec(终端工作流)
Claude Code 没有内置的 Spec 面板,但通过 CLAUDE.md 和 Plan Mode 可以实现等效的工作流。
操作步骤
步骤 1:创建 SPEC.md 文件
# 在项目根目录创建 Spec 文件
touch SPEC.md步骤 2:用 AI 采访理清需求
# 启动 Claude Code,进入 Plan Mode
$ claude
# 在对话中使用以下提示词提示词模板:Claude Code Spec 生成
提示词模板(需求采访):
我要实现 [功能描述]。请扮演一位资深产品经理和架构师,
通过提问帮我理清以下方面:
1. 核心用户场景(谁在什么情况下使用)
2. 功能边界(做什么,不做什么)
3. 非功能需求(性能、安全、可用性)
4. 依赖和约束(现有系统、技术栈限制)
5. 成功标准(怎样算"做完了")
每次只问 2-3 个问题,等我回答后再继续。
当你认为需求已经足够清晰时,告诉我你准备好生成 Spec 了。提示词模板(Spec 文档生成):
基于我们刚才的讨论,生成一份完整的技术规格文档(SPEC.md),
包含以下结构:
## 1. 概述
[2-3 句话说明项目目标]
## 2. 功能需求
对每个功能点:
- 用户故事(As a... I want... So that...)
- 验收标准(WHEN... THEN... 格式)
## 3. 非功能需求
- 性能指标
- 安全要求
- 可用性要求
## 4. 技术设计
- 架构方案(含 ASCII 或 Mermaid 图)
- 数据模型(含字段类型和关系)
- API 设计(端点、请求/响应格式)
- 关键算法(伪代码或流程图)
## 5. 正确性属性(Properties)
- 列出系统必须满足的不变量
- 例如:"同步后,本地文件和远程文件的哈希值必须一致"
## 6. 任务拆分
- 按依赖顺序排列
- 每个任务预估 1-2 小时工作量
- 标注任务间的依赖关系
请确保每个验收标准都是可测试的。步骤 3:审查并保存
# Claude Code 会将内容写入 SPEC.md
# 审查后,用 Plan Mode 验证
$ claude --plan "审查 SPEC.md 的完整性和一致性,
检查是否有遗漏的需求或矛盾的设计决策"2.3 在 Cursor 中创建 Spec(编辑器工作流)
Cursor 通过 Composer 和 .cursorrules 文件支持 Spec 创建,虽然不如 Kiro 原生,但灵活性更高。
操作步骤
步骤 1:配置 .cursorrules 启用 Spec 工作流
<!-- .cursorrules -->
# 项目规范
## Spec-Driven 工作流规则
- 所有新功能必须先创建 SPEC.md
- SPEC.md 必须包含用户故事、验收标准、技术设计
- 代码实现必须引用 SPEC.md 中的具体需求编号
- 每个 PR 必须说明对应的 Spec 任务编号
## 编码规范
[项目特定的编码规范]步骤 2:在 Composer 中生成 Spec
在 Cursor Composer(Ctrl+I)中输入:
@SPEC.md 请基于以下需求生成完整的技术规格文档:
需求:[详细描述]
参考现有代码:
@src/main.ts
@src/types/index.ts
@package.json
请遵循 .cursorrules 中定义的 Spec 格式。步骤 3:迭代优化
Cursor 的优势在于可以用 @ 引用现有代码,
让 AI 基于实际代码库生成更准确的 Spec:
@src/ 分析现有代码结构,然后更新 @SPEC.md 中的
技术设计部分,确保新功能与现有架构兼容。2.4 使用 GitHub Spec Kit(开源方案)
GitHub Spec Kit 是一个开源的 Spec-Driven 开发框架,提供了标准化的 Spec 模板和工作流。
操作步骤
步骤 1:安装 Spec Kit
# 克隆 Spec Kit 模板
npx spec-kit init
# 或手动创建目录结构
mkdir -p .spec
touch .spec/spec.md .spec/plan.md .spec/tasks.md步骤 2:定义 Spec
Spec Kit 遵循四步流程:Specify → Plan → Tasks → Implement
<!-- .spec/spec.md -->
# Feature: 文件同步引擎
## Goal
实现本地文件夹与云存储之间的增量同步
## Requirements
1. 文件变更检测(创建、修改、删除)
2. 增量同步(只传输变更部分)
3. 冲突检测与解决
4. 断点续传
## Constraints
- 技术栈:Rust + React(Tauri)
- 性能:单文件同步延迟 < 5 秒
- 安全:传输加密,本地配置加密存储步骤 3:生成 Plan 和 Tasks
# 使用 Claude Code 基于 Spec 生成计划
$ claude "基于 .spec/spec.md 生成详细的技术计划,
写入 .spec/plan.md"
# 然后生成任务列表
$ claude "基于 .spec/plan.md 生成可执行的任务列表,
写入 .spec/tasks.md,每个任务 1-2 小时工作量"提示词模板:Spec 质量检查
无论使用哪个工具,生成 Spec 后都应该进行质量检查:
提示词模板(Spec 质量审查):
请审查以下 Spec 文档,检查:
1. 完整性:是否覆盖了所有核心功能?是否遗漏了边缘场景?
2. 一致性:需求之间是否有矛盾?设计是否与需求对齐?
3. 可测试性:每个验收标准是否可以编写自动化测试?
4. 可行性:技术方案是否可行?是否有更简单的替代方案?
5. 明确性:是否有模糊的描述需要澄清?
Spec 文档:
[粘贴 Spec 内容]
请按优先级列出发现的问题,并给出改进建议。3. Step 2:Plan Mode 分析——在动手前理解代码库
Plan Mode 是 15 分钟瀑布的第二步,目标是在执行任何代码修改之前,先用只读模式分析现有代码库,理解架构、识别风险、制定实现策略。这一步对于已有代码库的项目尤为关键。
3.1 Plan Mode 的核心原则
Plan Mode 的本质是”只读分析,不做修改”。AI Agent 可以阅读文件、搜索代码、分析依赖,但不能创建、修改或删除任何文件。这确保了分析阶段的安全性。
Plan Mode 的输入和输出:
输入:
├── Spec 文档(requirements + design)
├── 现有代码库
├── 配置文件(package.json, Cargo.toml 等)
└── 开发者的补充说明
输出:
├── 代码库架构理解
├── 需要修改的模块清单
├── 潜在风险和技术债
├── 建议的实现顺序
└── 预估的工作量工具推荐
| 工具 | Plan Mode 实现 | 特点 | 价格 |
|---|---|---|---|
| Claude Code | claude --plan 或 Shift+Tab | 原生只读模式,禁止文件修改 | $20/月起 |
| Kiro | design.md 生成时自动分析 | 集成在 Spec 工作流中 | 免费版可用 |
| Cursor | Composer 中手动指定”只分析不修改” | 需要 prompt 约束 | $20/月 |
| Verdent AI | 原生 Plan-First 工作流 | 分离规划与实现 | 免费(Beta) |
操作步骤
在 Claude Code 中使用 Plan Mode
步骤 1:启动 Plan Mode
# 方式 1:命令行参数
$ claude --plan "分析当前代码库,基于 SPEC.md 提出实现计划"
# 方式 2:在对话中切换
# 按 Shift+Tab 切换到 Plan Mode
# 或输入 /plan 命令步骤 2:引导分析方向
提示词模板:Plan Mode 代码库分析
提示词模板(代码库全景分析):
请在 Plan Mode 下分析当前代码库,回答以下问题:
1. 项目结构:
- 主要目录和模块划分
- 入口文件和核心模块
- 依赖关系图
2. 架构模式:
- 使用了哪些设计模式?
- 数据流是怎样的?
- 错误处理策略是什么?
3. 基于 SPEC.md 的实现评估:
- 哪些现有模块可以复用?
- 哪些模块需要修改?
- 哪些功能需要从零开始?
4. 风险识别:
- 现有代码中有哪些技术债?
- 新功能可能与哪些现有功能冲突?
- 有哪些性能瓶颈需要注意?
请不要修改任何文件,只进行分析。提示词模板(针对特定模块的深度分析):
请分析 [模块路径] 的实现细节:
1. 这个模块的职责是什么?
2. 它依赖哪些其他模块?
3. 它暴露了哪些公共 API?
4. 基于 SPEC.md 中的 [需求编号],
这个模块需要做哪些修改?
5. 修改的风险等级是?(高/中/低)
6. 建议的修改策略是?
请只分析,不要修改代码。步骤 3:审查分析结果
Plan Mode 的输出通常包含:
Plan Mode 输出示例:
## 代码库分析结果
### 项目结构
src/
├── main.ts # 应用入口
├── config/ # 配置管理(可复用)
├── sync/ # 同步引擎(需要大幅修改)
│ ├── watcher.ts # 文件监控(可复用,需扩展)
│ ├── diff.ts # 差异计算(需要重写)
│ └── scheduler.ts # 调度器(需要新建)
└── ui/ # React 组件(需要新建同步状态面板)
### 实现计划
#### 阶段 1:基础设施(Task 1-3)
- 修改 config/ 添加同步配置项
- 扩展 watcher.ts 支持递归目录监控
- 风险:低
#### 阶段 2:核心引擎(Task 4-7)
- 重写 diff.ts 使用增量哈希算法
- 新建 scheduler.ts 实现优先级队列
- 新建 cloud-client.ts 封装云存储 API
- 风险:中(API 集成可能有兼容性问题)
#### 阶段 3:UI 层(Task 8-12)
- 新建同步状态面板组件
- 新建冲突解决对话框
- 风险:低在 Kiro 中使用 Plan Mode
Kiro 的 Plan Mode 集成在 Spec 工作流中。当 Kiro 生成 design.md 时,它会自动分析现有代码库:
在 Kiro 中,Plan Mode 是隐式的:
1. 创建 Spec 时,Kiro 自动扫描项目结构
2. design.md 中的架构设计基于实际代码库
3. tasks.md 中的任务考虑了现有模块的修改
你也可以显式引导分析:
- 使用 #File 引用特定文件让 AI 重点分析
- 使用 #Folder 引用整个目录
- 在 Spec 描述中提及现有模块Plan Mode 的多轮迭代
一次 Plan Mode 分析可能不够。最佳实践是进行 2-3 轮迭代,逐步深入:
第 1 轮:全景扫描
"分析整个项目结构,给出高层架构理解"
第 2 轮:重点深入
"基于第 1 轮的分析,深入分析 [关键模块],
评估实现 [具体需求] 的可行性"
第 3 轮:风险评估
"基于前两轮分析,列出实现计划中的
Top 5 风险和缓解策略"这种”Plan-Critique-Execute”模式能显著提高实现计划的质量。
4. Step 3:任务分解——从设计到可执行的微任务
任务分解是 15 分钟瀑布的最后一步,也是连接规划和执行的桥梁。好的任务分解能让每个任务独立可执行、独立可测试、独立可审查。
4.1 任务分解的核心原则
好的任务分解遵循 SMART 原则:
S - Specific(具体):明确要做什么,不含糊
M - Measurable(可衡量):有明确的完成标准
A - Achievable(可实现):1-2 小时内可完成
R - Relevant(相关):与 Spec 中的需求直接对应
T - Time-bound(有时限):预估工作量
示例:
❌ "实现同步功能"(太大、太模糊)
✅ "Task 3.1:实现基于 SHA-256 的文件哈希计算函数,
输入文件路径,输出 64 字符哈希字符串,
包含单元测试,预估 1 小时"4.2 任务粒度指南
| 粒度 | 工作量 | 适用场景 | 示例 |
|---|---|---|---|
| 太大 | > 4 小时 | 需要进一步拆分 | ”实现整个同步引擎” |
| 合适 | 1-2 小时 | 理想的任务大小 | ”实现文件哈希计算函数” |
| 太小 | < 30 分钟 | 可以合并到相邻任务 | ”添加一个类型定义” |
操作步骤
步骤 1:自动生成任务列表
在 Kiro 中,tasks.md 在 Spec 工作流的第三阶段自动生成。在其他工具中,使用以下提示词:
提示词模板:任务分解
提示词模板(任务分解):
基于以下 Spec 文档,生成一份详细的任务列表。
要求:
1. 每个任务 1-2 小时工作量
2. 按依赖顺序排列(被依赖的任务排在前面)
3. 每个任务包含:
- 任务编号和标题
- 具体要做什么(2-3 句话)
- 对应的 Spec 需求编号
- 依赖的前置任务
- 完成标准(怎样算"做完了")
4. 使用 Markdown checkbox 格式
Spec 文档:
[粘贴 Spec 内容]
请生成 tasks.md。提示词模板(任务依赖分析):
请分析以下任务列表的依赖关系,生成依赖图:
[粘贴任务列表]
要求:
1. 用 ASCII 图或 Mermaid 图展示依赖关系
2. 标注关键路径(最长依赖链)
3. 标注可以并行执行的任务组
4. 如果发现循环依赖,提出解决方案步骤 2:审查任务列表
生成的任务列表需要人工审查,重点检查:
任务列表审查清单:
□ 任务粒度是否合适?(每个 1-2 小时)
□ 依赖顺序是否正确?(被依赖的任务在前)
□ 是否覆盖了 Spec 中的所有需求?
□ 每个任务的完成标准是否明确?
□ 是否有遗漏的任务?(如测试、文档、配置)
□ 是否有可以并行的任务?(标注出来提高效率)
□ 总工作量预估是否合理?步骤 3:标注任务元数据
为每个任务添加有用的元数据,帮助执行阶段更高效:
# 增强版 tasks.md 示例
## Tasks
- [ ] 1. 项目初始化
- [ ] 1.1 创建 Tauri + React 项目骨架
- 依赖:无
- 预估:30 分钟
- 风险:低
- _Requirements: 1.1_
- [ ] 1.2 配置 Rust 依赖
- 依赖:1.1
- 预估:30 分钟
- 风险:低(版本兼容性需验证)
- _Requirements: 1.1_
- [ ] 2. 文件监控模块
- [ ] 2.1 实现文件系统事件监听
- 依赖:1.1, 1.2
- 预估:1.5 小时
- 风险:中(跨平台兼容性)
- _Requirements: 2.1, 2.2_
- [ ] 2.2 实现文件哈希计算
- 依赖:1.2
- 预估:1 小时
- 风险:低
- _Requirements: 2.3_4.3 任务分解的常见模式
模式 1:按层分解(适合全栈项目)
Layer 1: 数据层(类型定义、数据模型、数据库迁移)
Layer 2: 业务逻辑层(核心算法、服务函数)
Layer 3: API 层(端点定义、中间件、验证)
Layer 4: UI 层(组件、页面、样式)
Layer 5: 集成层(测试、配置、部署)模式 2:按功能分解(适合功能独立的项目)
Feature A: 用户认证
├── Task A.1: 注册接口
├── Task A.2: 登录接口
└── Task A.3: 认证中间件
Feature B: 文件管理
├── Task B.1: 文件上传
├── Task B.2: 文件列表
└── Task B.3: 文件删除模式 3:按风险分解(适合不确定性高的项目)
Phase 1: 高风险任务(先做,早发现问题)
├── 第三方 API 集成验证
├── 核心算法原型
└── 性能瓶颈验证
Phase 2: 中风险任务
├── 业务逻辑实现
└── 数据模型完善
Phase 3: 低风险任务(最后做,确定性高)
├── UI 组件实现
├── 文档编写
└── 部署配置实战案例:用 15 分钟瀑布规划 RustSync 文件同步工具
案例背景
RustSync 是一个基于 Tauri(Rust + React)的桌面文件同步工具,需要支持本地文件夹与百度网盘之间的增量同步。以下是使用 15 分钟瀑布规划的完整过程。
分钟 0-5:创建 Spec
在 Kiro 中创建新 Spec,输入描述:
"我要开发一个桌面文件同步工具 RustSync,
使用 Tauri(Rust 后端 + React 前端)。
核心功能:
1. 监控本地文件夹的文件变更
2. 计算文件差异,只同步变更部分
3. 通过百度网盘 API 上传/下载文件
4. 检测和处理同步冲突
5. 支持 .gitignore 风格的忽略规则
6. 提供同步进度和日志的 UI
不做的事情:
- 不支持实时协作编辑
- 不支持多云存储(只支持百度网盘)
- 不做移动端"Kiro 生成的 requirements.md 包含 12 个用户故事,每个都有 EARS 格式的验收标准。审查后确认无遗漏。
分钟 5-10:Plan Mode 分析
Kiro 在生成 design.md 时自动分析了项目结构。
design.md 中的关键决策:
- 文件监控:使用 notify crate(跨平台)
- 差异计算:基于 SHA-256 文件哈希
- 同步调度:带优先级的异步任务队列
- 前端状态:React hooks + CSS Modules
- IPC 通信:Tauri 的 invoke 机制
审查后调整了一个设计决策:
将冲突解决策略从"自动选择最新版本"
改为"提示用户选择",因为自动策略可能导致数据丢失。分钟 10-15:任务分解
Kiro 生成的 tasks.md 包含 25 个任务,分为 5 个阶段:
阶段 1:基础设施(Task 1-3,约 3 小时)
├── 项目初始化
├── 配置管理模块
└── 类型定义
阶段 2:核心引擎(Task 4-7,约 8 小时)
├── 文件监控模块
├── 差异计算引擎
├── 百度网盘 API 集成
└── 同步调度器
阶段 3:高级功能(Task 8-11,约 6 小时)
├── 冲突检测与解决
├── 忽略规则引擎
├── 断点续传
└── 日志系统
阶段 4:UI 层(Task 12-19,约 8 小时)
├── 布局组件
├── 文件夹列表
├── 同步状态栏
├── 设置面板
├── 同步日志
├── 同步报告
├── 添加文件夹对话框
└── 百度网盘授权组件
阶段 5:测试与打磨(Task 20-25,约 6 小时)
├── 单元测试
├── Property-Based Testing
├── 集成测试
├── 错误处理完善
├── 性能优化
└── 打包配置
审查后合并了两个过小的任务,最终确认 25 个任务。
总预估工作量:约 31 小时(4 个工作日)。案例分析
这个 15 分钟的规划投入带来了以下回报:
- 避免了方向性错误:在规划阶段就发现了冲突解决策略的问题,避免了实现后返工
- 明确了技术选型:提前确定了 notify、SHA-256、tokio 等关键依赖,避免了中途更换
- 建立了执行节奏:25 个任务按依赖排序,每个 1-2 小时,开发者可以按节奏推进
- 降低了审查负担:每个任务聚焦单一功能,代码审查更高效
- 提供了进度可见性:tasks.md 的 checkbox 让进度一目了然
避坑指南
❌ 常见错误
-
Spec 写得太粗糙
- 问题:只写了一句话的需求描述,AI 生成的代码偏离预期
- 正确做法:花 5 分钟把需求描述清楚,包含功能边界、非功能需求和排除项。Spec 的质量直接决定了后续所有工作的质量
-
跳过 Plan Mode 直接执行
- 问题:AI 不了解现有代码库,生成的代码与现有架构冲突,导致大量集成问题
- 正确做法:对于已有代码库的项目,必须先用 Plan Mode 分析。即使是新项目,Plan Mode 也能帮助验证技术方案的可行性
-
任务拆分粒度不当
- 问题:任务太大(> 4 小时)导致 AI 上下文漂移;任务太小(< 30 分钟)导致管理开销过大
- 正确做法:每个任务 1-2 小时工作量,包含实现和测试。如果一个任务描述超过 5 句话,考虑拆分
-
Spec 生成后不审查
- 问题:AI 生成的 Spec 可能包含不合理的假设、遗漏的需求或过度设计
- 正确做法:逐条审查验收标准,确认每条都是你真正需要的。删除不需要的比后来加上遗漏的成本低得多
-
不更新 Spec
- 问题:开发过程中需求变更,但 Spec 没有同步更新,导致 Spec 与代码脱节
- 正确做法:需求变更时先改 Spec,再改代码。Spec 是 source of truth,不是一次性文档
-
过度依赖单一工具
- 问题:只用一个工具完成所有规划工作,忽略了不同工具的互补优势
- 正确做法:可以组合使用——例如用 Kiro 生成 Spec,用 Claude Code 的 Plan Mode 做深度代码分析
-
忽视任务间的依赖关系
- 问题:并行执行有依赖关系的任务,导致接口不匹配或重复工作
- 正确做法:在 tasks.md 中明确标注依赖关系,严格按顺序执行有依赖的任务
-
规划时间过长
- 问题:花了 2 小时写 Spec,失去了 AI 辅助规划的速度优势
- 正确做法:15 分钟瀑布的关键是”快速但不草率”。如果 15 分钟内无法完成,说明功能范围太大,需要先缩小范围
✅ 最佳实践
- 先描述”不做什么”:明确排除项比列举功能更能帮助 AI 理解边界
- 用具体数字替代模糊描述:不说”快速响应”,说”响应时间 < 200ms”
- Plan Mode 做 2-3 轮迭代:第一轮全景扫描,第二轮重点深入,第三轮风险评估
- 任务列表留有缓冲:预估工作量乘以 1.5 作为实际预期
- 每个任务都关联 Spec 需求编号:确保可追溯性
- 保存 Plan Mode 的分析结果:作为后续开发的参考文档
- 团队项目中共享 Spec 模板:降低每次创建 Spec 的成本
- 定期回顾和更新 Spec:每完成一个阶段的任务后,检查 Spec 是否需要更新
相关资源与延伸阅读
-
Kiro IDE — AWS 推出的 Spec-Driven 原生 IDE,内置 requirements→design→tasks 三阶段工作流
- 官网:kiro.dev
-
Claude Code Plan Mode 文档 — Anthropic 官方的 Plan Mode 使用指南和常见工作流
-
GitHub Spec Kit — GitHub 开源的 Spec-Driven 开发框架,提供标准化的 Specify→Plan→Tasks→Implement 流程
-
Augment Code Spec-Driven 指南 — 企业级四阶段方法论的详细说明,包含 56% 编程时间减少的数据
-
Traycer AI — Plan-First AI 编码工具,将高层意图分解为结构化计划后交给 AI Agent 执行
- 官网:traycer.ai
-
Addy Osmani 的 Spec 编写指南 — Google Chrome 团队工程师分享的如何为 AI Agent 编写好的 Spec
-
Spec-Driven Development 社区 — specdriven.ai 提供的方法论资源和社区讨论
-
Plan-Critique-Execute 模式 — 多轮 Plan Mode 迭代的实践指南
-
Hashrocket Spec-to-Shipping 指南 — 从 Spec 到交付的完整开发者工作流实践
参考来源
- Augment Code - AI Coding Agents for Spec-Driven Development Automation (2025 年 9 月)
- Addy Osmani - How to write a good spec for AI agents (2025 年)
- Addy Osmani - My LLM coding workflow going into 2026 (2026 年 1 月)
- Tessl - From Vibe Coding to Viable Code: AWS Dives into Spec-Driven AI with Kiro (2025 年 7 月)
- BuiltIn - Why Spec-Driven Development is the Future of AI-Assisted Software Engineering (2026 年 2 月)
- Hashrocket - From Spec to Shipping: AI-Driven Workflows (2025 年 10 月)
- Matt Stockton - What I Tell People Getting Started with Claude Code (2026 年 1 月)
- Ghita.org - Plan, Critique, Execute, Archive (2026 年 2 月)
- StarupHub - Spec-Driven Development is the New Bottleneck for AI Coding (2026 年 2 月)
- InfoQ - Spec-Driven Development: Adoption at Enterprise Scale (2026 年 2 月)
Content was rephrased for compliance with licensing restrictions.
📖 返回 总览与导航 | 上一节:17a-Spec-Driven工作流全景 | 下一节:17c-微任务执行与人工审查