Plan 模式(计划模式)
什么是 Plan 模式
Plan 模式的核心原则:让 AI 先输出完整计划,经人类确认后再执行。与直接让 AI 写代码不同,Plan 模式强制加入"思考 → 确认 → 执行"的中间环节,有效减少返工。
Plan vs Chat 核心区别
| 维度 | Chat 模式 | Plan 模式 |
|---|---|---|
| 工作方式 | 直接回答/生成 | 先出计划,确认后执行 |
| 适合场景 | 单点问题、快速咨询 | 中等复杂度、多步骤任务 |
| 返工率 | 较高(可能方向错误) | 较低(计划阶段已校准) |
| 人类介入点 | 结果审查 | 计划审查 + 结果审查 |
| 典型示例 | "重构这个函数" | "设计一个用户注册模块" |
对比例子
场景:重构一个函数
→ 用 Chat 模式
"这个函数有性能问题,请优化"
AI 直接给出优化后的代码
场景:设计一个用户注册模块
→ 用 Plan 模式
"实现用户注册功能,包含邮箱验证"
AI 先输出:
1. 数据模型设计
2. API 接口列表
3. 安全措施
4. 测试计划
人类确认后,AI 再逐步执行
工作流程
用户描述需求
↓
AI 输出执行计划(不写代码)
↓
人类审查计划 → 不通过 → 反馈修改
↓ 通过
AI 按计划逐步执行
↓
人类验收结果
各工具的 Plan 模式
Claude Code — Plan Mode
Claude Code 内置 Plan 模式,使用 /plan 命令进入:
/plan 实现一个用户注册功能,包含邮箱验证
AI 输出:
## 执行计划
### 1. 数据模型设计
- 创建 User 模型(id, email, password_hash, verified, created_at)
- 创建 VerificationToken 模型
### 2. API 接口
- POST /api/auth/register — 注册
- GET /api/auth/verify/:token — 邮箱验证
### 3. 安全措施
- 密码使用 bcrypt 加密
- Token 有效期 24 小时
- 邮件发送使用队列异步处理
### 4. 测试
- 单元测试:密码加密、Token 生成
- 集成测试:注册流程、验证流程
确认后开始执行?
Cursor — Ask + Composer
在 Cursor 中,先用 Ask 模式让 AI 规划:
- 打开 Ask 模式(非 Composer)
- 描述需求,要求 AI 输出计划
- 审查计划后,切换到 Composer 执行
Trae — Builder 模式
Trae 的 Builder 模式天然支持 Plan:
- 描述需求
- AI 自动生成任务拆解
- 逐步确认并执行
Plan 模式的优势
| 维度 | 直接执行 | Plan 模式 |
|---|---|---|
| 返工率 | 高(30-50%) | 低(5-10%) |
| 可控性 | 低 | 高 |
| 适合场景 | 简单修改 | 复杂功能 |
| 学习成本 | 无 | 低 |
最佳实践
- 计划要具体:要求 AI 列出文件名、函数名、数据结构,而非模糊描述
- 分步确认:大任务拆成多个小步骤,逐步确认
- 保留计划:将确认后的计划保存为文档,便于后续追溯
- 灵活调整:执行中发现计划不合理,及时暂停并调整
- 结合 Spec:Plan 模式 + Spec 文档 = 更强的可控性
适用与不适用
- ✅ 新功能开发(涉及多个文件)
- ✅ 架构重构
- ✅ 数据库 schema 变更
- ✅ API 接口设计
- ❌ 简单的 bug 修复(杀鸡用牛刀)
- ❌ 一行代码的修改
常见问题
| 问题 | 解决方案 |
|---|---|
| AI 跳过计划直接写代码 | 明确要求"先输出计划,不要写代码" |
| 计划太粗,缺乏细节 | 要求 AI 列出具体的文件名和函数签名 |
| 计划太细,执行缓慢 | 要求 AI 只列关键步骤,跳过实现细节 |
| 执行中偏离计划 | 暂停执行,重新对齐计划 |
| 不确定该用 Chat 还用 Plan | 涉及 2 个以上文件的任务用 Plan,否则用 Chat |