外观
计划驱动开发
对任何非简单的任务使用 /plan 模式。Claude 以只读方式探索代码库,然后提出实现计划供你审批。
目录
- TL;DR
- /plan 工作流
- 适用场景
- 计划文件结构
- 与其他工作流集成
- 技巧
- 进阶:自定义 Markdown 计划(Boris Tane 模式)
- 延伸阅读
TL;DR
Plain
1. 进入计划模式(按两次 Shift+Tab)或提出复杂问题
2. Claude 以只读方式探索代码库
3. Claude 将计划写入 .claude/plans/
4. 你审查并批准
5. Claude 执行/plan 工作流
第一步:进入计划模式
使用 Shift+Tab 切换计划模式(按两次循环:普通 → 自动接受 → 计划):
Plain
# 按两次 Shift+Tab 进入计划模式
# (UI 中会显示计划模式指示器)或提出自动触发计划模式的复杂问题:
Plain
我应该如何重构认证系统以支持 OAuth?第二步:Claude 探索
在计划模式下,Claude:
- 读取相关文件
- 搜索模式
- 理解现有架构
- 不能进行任何修改
第三步:Claude 编写计划
Claude 在 .claude/plans/[name].md 创建计划文件:
Markdown
# 计划:为 OAuth 重构认证
## 摘要
在保持现有邮箱/密码认证的同时添加 OAuth 支持。
## 需修改的文件
- src/auth/providers/index.ts(添加 OAuth 提供商)
- src/auth/middleware.ts(处理 OAuth Token)
- src/config/auth.ts(OAuth 配置)
## 需创建的文件
- src/auth/providers/oauth.ts
- src/auth/providers/google.ts
## 实现步骤
1. 创建 OAuth 提供商接口
2. 实现 Google OAuth 提供商
3. 更新中间件以检测 Token 类型
4. 添加 OAuth 路由
5. 更新配置 schema
## 风险
- 迁移期间破坏现有会话
- 不同提供商间的 Token 格式差异第四步:你审查
审查计划的:
- 完整性(所有需求均已覆盖)
- 正确性(适合你的代码库的方法)
- 范围(未过度工程化)
第五步:批准并执行
Plain
看起来不错。按计划执行。或请求修改:
Plain
修改计划:同时添加 GitHub OAuth 支持,不仅仅是 Google。适用场景
使用计划模式
| 场景 | 原因 |
|---|---|
| 多文件修改 | 提前查看所有受影响的文件 |
| 架构变更 | 在编码前验证方法 |
| 新功能 | 确保实现完整 |
| 陌生代码库 | 让 Claude 先探索 |
| 高风险操作 | 执行前先审查 |
跳过计划模式
| 场景 | 原因 |
|---|---|
| 单行修复 | 明显,低风险 |
| 拼写错误更正 | 无需规划 |
| 简单问答 | 探索性质,非实现 |
| 添加注释 | 微小改动 |
计划文件结构
计划存储在 .claude/plans/ 中,文件名自动生成。
典型的计划章节
Markdown
# 计划:[标题]
## 摘要
[1-2 句概述]
## 背景
[为何需要此变更]
## 需修改的文件
[将发生变更的现有文件列表]
## 需创建的文件
[新文件列表]
## 需删除的文件
[待删除文件列表(如有)]
## 实现步骤
[有序步骤列表]
## 测试策略
[如何验证变更]
## 风险与应对
[可能出错的地方及应对方式]
## 待确认事项
[执行前需澄清的问题]与其他工作流集成
计划 + TDD(测试驱动开发)
Plain
# 进入计划模式(按两次 Shift+Tab),然后:
我需要实现一个限流器。
先规划测试用例,再规划实现。Claude 会按正确的 TDD(测试驱动开发)顺序规划测试和实现。
计划 + 规格优先
Plain
# 进入计划模式(按两次 Shift+Tab),然后:
查看 CLAUDE.md 中的支付处理规格。
创建一个满足所有验收标准的实现计划。计划 + 任务工具
计划批准后,Claude 可以拆解为任务:
Plain
已批准。从这个计划创建任务并开始实现。技巧
明确说明范围
Plain
# 太模糊(进入计划模式后通过按两次 Shift+Tab)
改进 API
# 更好
为 /users 端点添加基于游标的分页。
保持与现有客户端的向后兼容性。请求修改计划
Plain
计划看起来不错,但:
- 添加网络失败的错误处理
- 暂时跳过缓存优化
- 包含回滚程序用于架构决策
Plain
# 进入计划模式(按两次 Shift+Tab),然后:
我正在考虑两种状态管理方案:
A) Redux Toolkit
B) Zustand
探索代码库并推荐哪个更适合。保存计划作为文档
.claude/plans/ 中的计划作为决策文档:
- 为何选择某些方法
- 预期发生变化的文件
- 实现顺序的理由
进阶:自定义 Markdown 计划(Boris Tane 模式)
来源:Boris Tane,Cloudflare 工程负责人——"我如何使用 Claude Code"(2026 年 2 月)。9 个月的生产使用经验。
当计划模式不够用时,在编写任何代码之前进行迭代式人机协作规划。
为何选择自定义计划而非 /plan
| 因素 | 计划模式(原生) | 自定义 .md 计划 |
|---|---|---|
| 持久性 | 上下文压缩时丢失 | 在压缩中存活,可共享 |
| 审查面 | 基于聊天,线性 | 结构化文件,可 diff |
| 迭代 | 对话中来回 | 在文件上标注,重新运行 |
| 共享状态 | 每会话独立 | 人机之间的「共享可变状态」 |
| 最适合 | 标准功能,<30 分钟任务 | 复杂功能,架构决策 |
决策规则:已知范围的任务使用计划模式(按两次 Shift+Tab)。预期会有误解或希望在写一行代码之前明确签署方法时,使用自定义 .md 计划。
三阶段工作流
Plain
┌─────────────────────────────────────────────────────────────────┐
│ 阶段 1:研究 │
│ → 强调性提示 → research.md(书面,非口头) │
├─────────────────────────────────────────────────────────────────┤
│ 阶段 2:规划(标注循环) │
│ → plan.md 草稿 → 人工标注 → 智能体更新 → 重复 │
│ → 退出:计划获批,无未解决问题 │
├─────────────────────────────────────────────────────────────────┤
│ 阶段 3:实现 │
│ → 机械执行,决策已定 │
└─────────────────────────────────────────────────────────────────┘阶段 1:强调性研究
Claude 在没有强力信号时会浅尝辄止。使用强调性语言强制深度:
Plain
深度研究这个代码库中的认证系统。
详细了解会话管理的内部机制。
涵盖边缘情况、现有模式和任何非显而易见的依赖。
将你的发现写入 research.md——不要实现任何东西。为何有效:「深度」、「详细」、「内部机制」将 Claude 从表面扫描转向深入调查。输出必须写入文件——口头摘要在上下文压缩时会消失。
Research.md 应包含:
- 现有模式和约定
- 文件路径和关键函数
- 非显而易见的依赖
- 已识别的约束和风险
阶段 2:标注循环
Boris Tane 模式的核心。在 plan.md 上迭代,直到准备就绪,在任何实现之前。
Plain
┌──────────────────────────────────────────────────────────────┐
│ 标注循环 │
│ │
│ 人工提示 ──→ 智能体写 plan.md │
│ ↑ ↓ │
│ 标注计划 人工审查 plan.md │
│ (添加注释, ↓ │
│ 提问, 发现问题? │
│ 标记权衡) ├─ 是 → 标注 → 循环 │
│ └─ 否 → 批准 → 阶段 3 │
│ │
│ 典型:批准前 1-6 次迭代 │
└──────────────────────────────────────────────────────────────┘守卫提示——始终包含以防止过早实现:
Plain
基于 research.md,编写实现 [功能] 的计划。
包含:方法、受影响的文件路径、关键决策的代码片段、
已考虑的权衡和未解决的问题。
写入 plan.md。暂不实现任何内容。plan.md 应包含的内容:
Markdown
# 计划:[功能名称]
## 方法
[策略和理由]
## 受影响的文件
- path/to/file.ts — 变更内容和原因
- path/to/other.ts — 变更内容和原因
## 关键实现细节
[非显而易见部分的代码片段——非完整实现]
## 权衡
- 选项 A vs B:因 X 选择 A
- 已考虑但拒绝:Y(原因)
## 待确认问题
- [ ] 我们应该处理边缘情况 Z 吗?
- [ ] 这会影响移动端客户端吗?标注示例:
Markdown
## 方法
使用存储在 httpOnly cookie 中的 JWT Token。
<!-- 人工标注:✓ 同意。但也考虑刷新 Token 轮换 -->
## 待确认问题
- [ ] 我们应该在中间件中处理 Token 过期吗?
<!-- 人工标注:是,集中处理——不要留给每个路由 -->退出标准——计划准备就绪的条件:
- 无未解决问题
- 权衡已记录并达成一致
- 文件路径具体(非「某个认证文件」)
- 关键片段展示方法,而非仅描述
「Markdown 文件充当你和智能体之间的共享可变状态。」——Boris Tane
阶段 3:机械实现
计划批准后,实现变成执行——无需做出创意决策。
Plain
实现 plan.md 中的所有内容。
按顺序逐项处理。
完成后用 [x] 标记任务。
不要在任务之间停下来寻求确认——继续直到完成。实现期间的反馈:
- 保持简洁:短语或截图,非大段文字
- 决策已定——将范围变更重定向回 plan.md
- 若出现意外情况:暂停,更新 plan.md,继续
心态转变:阶段 3 是机械执行。所有思考在阶段 2 完成。
互补技术
| 技术 | 内容 | 适用时机 |
|---|---|---|
| 精选实现 | 实现 plan.md 的子集 | 计划过大,逐步交付 |
| 范围裁剪 | 实现前从计划中移除项目 | 降低风险,专注核心 |
| 参考引导 | 指向现有代码:「按照 auth.ts 的方式做」 | 强制一致性 |
| 回滚并重新定范围 | git revert + 以更窄的计划重新开始 | 计划出错,干净重置 |
延伸阅读
- 「exploration-workflow.md」 — 规划前先探索替代方案
- 「../ultimate-guide.md」 — 第 2.3 节 计划模式
- 「tdd-with-claude.md」 — 与 TDD(测试驱动开发)结合
- 「spec-first.md」 — 与规格优先结合
- 「iterative-refinement.md」 — 计划后迭代优化
- 「task-management.md」 — 使用 Tasks API 跨会话追踪计划执行
- 「dual-instance-planning.md」 — 进阶:使用两个 Claude 实例(规划者 + 执行者)进行质量导向工作流
来源:飞书 · AI Spark 知识库 | 原文(最新版):https://lcnniolukk80.feishu.cn/wiki/Peu9w9KMRipIahkDfJwciriCnhc | 归档:2026-06-04