第 3 章:规划先行 — Plan Mode 的力量
3.1 为什么先规划
在开发大型功能或进行复杂重构时,直接动手写代码往往会导致返工、遗漏细节或方向偏差。Plan Mode 提供了一个安全的沙盒环境,让你可以在修改代码前先探索和规划。
先规划的好处:
- 减少返工:通过探索现有代码结构,避免破坏性变更
- 对齐预期:明确技术选型、实现步骤和验证标准
- 可审查:生成可共享的计划文档,便于 Code Review 或团队协作
Plan Mode vs 直接执行:
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 修复简单 Bug | 直接执行 | 问题明确,改动范围小 |
| 新增小型功能 | 直接执行 | 实现路径清晰 |
| 重构模块 | Plan Mode | 涉及多个文件,需要深入理解 |
| 设计新架构 | Plan Mode | 需要探索代码库、评估方案 |
| 性能优化 | Plan Mode | 需要分析瓶颈、设计策略 |
Plan Mode 的核心原则:
- 只做只读探索(Read、Bash 的只读命令)
- 只写计划文件(不修改源代码)
- 使用 Explore agent 搜索代码库
- 调用 ExitPlanMode 工具请求用户审批
3.2 /plan — 进入 Plan Mode
语法
/plan [description]
功能说明
/plan 命令将 Claude 切换到只读规划模式。在此模式下,Claude 会:
- 使用只读工具探索代码库(Read、Bash 只读命令)
- 通过 Explore agent 搜索代码结构和模式
- 将设计方案写入
.claude/plans/目录的计划文件 - 在规划完成后调用 ExitPlanMode 工具,显示计划内容供你审批
实际使用示例
示例 1:进入 Plan Mode 并开始规划
/plan 设计番茄钟应用架构
示例 2:带具体描述开始任务
/plan fix the auth bug - 用户登录后 session 不持久化
示例 3:规划复杂功能
/plan 为项目添加暗黑模式支持,包括主题切换、持久化存储、CSS 变量重构
示例 4:探索性规划
/plan 理解当前项目的状态管理方案,评估是否需要迁移到 Zustand
Plan Mode 工作流
Claude 进入只读模式
- 只使用 Read、Bash(只读)等不修改文件的工具
- 通过 Explore agent 搜索代码库
- 理解现有架构和代码模式
设计方案
- 分析技术选型
- 拆分实现步骤
- 设计文件结构
写入计划文件
- 创建
.claude/plans/[timestamp]-[name].md - 包含:目标、技术方案、步骤、验证标准
- 创建
请求审批
- 调用 ExitPlanMode 工具
- 显示计划完整内容
- 等待你确认或修改
执行或调整
- 你批准后,Claude 退出 Plan Mode 开始执行
- 或提出修改意见,Claude 更新计划
注意事项/技巧
Plan Mode 的限制:
- 不能执行 Edit、Write 工具
- 不能运行修改文件的 Bash 命令(如
npm install) - 只能使用 Read、Bash 只读命令(如
git status、ls -la)
如何识别 Claude 在 Plan Mode 中:
- 响应中会明确说明"进入 Plan Mode"
- 工具调用只包含只读操作
- 最终会看到 ExitPlanMode 工具调用
退出 Plan Mode 的方式:
- 通过 ExitPlanMode 工具完成规划
- 直接输入
/plan-off退出(不保存计划) - 输入
/continue退出并继续对话
计划文件位置:
- 所有计划保存在
.claude/plans/目录 - 文件名格式:
[timestamp]-[name].md - 可以手动查看或修改计划文件
- 所有计划保存在
适用场景:
- 重构(理解现有代码结构)
- 新增大型功能(设计架构)
- 性能优化(分析瓶颈)
- 迁移/升级(评估兼容性)
3.3 /effort — 控制推理深度
语法
/effort [level|auto]
功能说明
/effort 命令控制 Claude 的推理深度,平衡响应质量和速度。不同级别适用于不同复杂度的任务。
级别说明:
| 级别 | 深度 | 适用场景 |
|---|---|---|
| low | 浅层推理 | 简单问题、快速确认 |
| medium | 标准推理 | 常规开发任务(默认) |
| high | 深度推理 | 复杂架构设计 |
| xhigh | 超深度推理 | 系统级重构 |
| max | 最大推理 | 极复杂问题、多文件分析 |
实际使用示例
示例 1:设置低深度(快速响应)
/effort low
适合:快速问一个问题,不需要深度分析
示例 2:打开交互式滑块
/effort
显示滑块界面,用左右箭头选择级别
示例 3:设置高深度(复杂设计)
/effort high
适合:设计架构、多步骤实现方案
示例 4:重置为默认值
/effort auto
恢复到模型的默认推理深度
示例 5:设置最大深度(分析大型代码库)
/effort max
适合:理解整个项目结构、性能瓶颈分析
注意事项/技巧
立即生效:
/effort设置会在当前响应后立即生效,无需等待性能权衡:
low:速度快,适合简单问题medium:平衡速度和质量(推荐日常使用)high/max:速度慢,但适合复杂任务
推荐场景:
- low:快速确认 API 用法、检查文件路径、简单语法问题
- medium:常规开发、Bug 修复、小功能实现
- high:架构设计、多模块重构、性能优化
- max:分析大型代码库、复杂系统集成、深度调试
与 Plan Mode 配合:
/effort high /plan 设计番茄钟应用架构用高深度确保规划质量
不影响历史上下文:
/effort只影响未来的响应,不会改变已生成的回答可随时调整:在对话过程中可以根据任务复杂度切换级别
3.4 /btw — 快速附加提问
语法
/btw <question>
功能说明
/btw(by the way)命令允许你快速提问而不加入对话历史。这个问题会被处理但不会占用上下文窗口,适合临时确认信息。
实际使用示例
示例 1:确认 API 用法
/btw React useEffect 的依赖数组传空数组是什么意思?
示例 2:检查文件路径
/btw src/components 目录下有哪些文件?
示例 3:确认技术细节
/btw localStorage.setItem 的返回值是什么?
示例 4:快速查询
/btw 本项目的 package.json 中有哪些依赖?
示例 5:在开发中穿插提问
# 主对话中
请帮我实现计时器组件
# 顺便确认一下
/btw Date.now() 返回的是秒还是毫秒?
注意事项/技巧
不污染上下文:
/btw的问题不会加入对话历史,不会占用 token适合场景:
- 快速确认 API 用法
- 检查文件/目录是否存在
- 查询配置信息
- 确认技术细节
不适合场景:
- 需要长期记忆的决策
- 与当前任务强相关的讨论
- 需要反复查询的信息
与普通提问的区别:
- 普通提问:加入历史,影响后续对话的上下文
/btw:只回答,不加入历史
典型用法模式:
# 主任务 /plan 设计番茄钟应用架构 # 中途穿插快速提问 /btw React 的 useReducer 语法是怎样的? # 主任务继续 请解释一下计划中的状态管理方案限制:
/btw的问题只能使用工具(Read、Bash 等),不能修改代码
3.5 /goal — 设定工作目标
语法
/goal [condition|clear]
功能说明
/goal 命令设定一个持续工作目标,Claude 会不断工作直到条件满足。适合需要多轮迭代才能完成的任务。
实际使用示例
示例 1:设定简单目标
/goal 通过所有测试
Claude 会反复运行测试、修复 Bug,直到测试全部通过
示例 2:设定复杂目标
/goal 实现番茄钟的计时器功能,包括 25 分钟工作、5 分钟休息自动切换
Claude 会分步骤实现,反复调整直到满足所有需求
示例 3:查看当前目标
/goal
显示当前活跃的目标或最近实现的目标
示例 4:移除目标
/goal clear
或使用 stop、off,移除活跃目标
示例 5:结合 Plan Mode
/goal 完成番茄钟计时器组件开发
/plan 设计计时器组件架构
先规划再执行,确保方向正确
注意事项/技巧
持续工作:Claude 会自动迭代,不需要你每步都给出指令
目标类型:
- 功能完成:"实现用户登录功能"
- 测试通过:"所有测试用例通过"
- 文档完整:"完成 API 文档编写"
- 性能达标:"页面加载时间 < 2 秒"
目标清晰性:
- 好的目标:"实现番茄钟计时器,支持工作/休息模式切换"
- 模糊的目标:"优化应用性能"
查看进度:
/goal显示当前目标和完成进度
取消目标:
/goal clear # 或 /goal stop # 或 /goal off与
/plan配合:/goal 实现番茄钟应用 /plan 设计整体架构 # 批准后自动开始实现自动迭代:Claude 会自动:
- 分解目标为子任务
- 逐步实现每个子任务
- 验证每步结果
- 根据反馈调整
适合场景:
- 多步骤的实现任务
- 需要反复调试的功能
- 系统性重构
- 完整的 Feature 开发
3.6 /ultraplan — 高级规划
语法
/ultraplan [description]
功能说明
/ultraplan 提供增强的规划体验,支持在浏览器中审阅计划,并将计划远程执行或发送回终端。适合需要可视化审阅和协作的复杂规划任务。
实际使用示例
示例 1:基础用法
/ultraplan 设计番茄钟应用架构
生成计划并在浏览器中打开审阅
示例 2:带详细描述
/ultraplan 设计番茄钟应用,包含计时器(25分钟工作/5分钟休息)、Todo List、localStorage 持久化
示例 3:浏览器审阅后执行
/ultraplan 实现番茄钟计时器组件
在浏览器中审阅计划,点击"执行"按钮远程运行
示例 4:复杂系统规划
/ultraplan 设计整个待办事项系统架构,包括后端 API、前端 UI、数据持久化
注意事项/技巧
浏览器审阅:
- 计划会在浏览器中打开,提供可视化界面
- 可以拖拽调整任务顺序
- 可以添加备注或修改计划
远程执行:
- 在浏览器中点击"执行"按钮
- 计划会发送回终端开始执行
- 适合在审阅后直接开始工作
与
/plan的区别:/plan:在终端中直接规划,适合快速迭代/ultraplan:在浏览器中规划,适合需要详细审阅的场景
协作场景:
- 生成计划后分享链接给团队成员
- 多人共同审阅和修改计划
- 记录决策过程和讨论
适合场景:
- 需要可视化审阅的复杂规划
- 团队协作的需求讨论
- 需要长期保存的计划文档
- 需要分享给他人审阅的方案
返回终端:
- 在浏览器中可以选择"返回终端"
- 计划内容会同步到终端
- 可以继续在终端中执行
3.7 动手做:规划番茄钟架构
让我们通过一个实际案例来练习使用 Plan Mode 和相关命令。我们将规划一个番茄钟应用的核心架构。
Step 1:进入 Plan Mode 并开始规划
/plan 设计番茄钟应用架构,包含:计时器组件(25分钟工作/5分钟休息自动切换)、Todo List(增删改查)、localStorage 持久化存储
预期行为:
Claude 会进入 Plan Mode,开始:
- 探索当前项目结构(Read package.json、查看现有文件)
- 搜索 React 组件的最佳实践(Explore agent)
- 设计技术选型和文件结构
- 写入计划文件到
.claude/plans/目录 - 调用 ExitPlanMode 工具显示计划
Step 2:审查 Claude 生成的架构计划
Claude 会显示类似这样的计划:
# 番茄钟应用架构计划
## 目标
设计并实现一个番茄钟应用,包含计时器和待办事项功能。
## 技术选型
- 框架:React 18
- 状态管理:React Hooks(useState, useEffect)
- 样式:CSS Modules 或 Tailwind CSS
- 持久化:localStorage API
- 构建工具:Vite
## 文件结构
src/ ├── components/ │ ├── Timer/ │ │ ├── Timer.jsx │ │ └── Timer.css │ ├── TodoList/ │ │ ├── TodoList.jsx │ │ ├── TodoItem.jsx │ │ └── TodoList.css │ └── App.jsx ├── hooks/ │ ├── useTimer.js │ └── useLocalStorage.js ├── utils/ │ └── storage.js └── index.jsx
## 实现步骤
1. 创建基础项目结构
2. 实现 useTimer 自定义 Hook
3. 实现 Timer 组件
4. 实现 TodoList 组件
5. 集成 localStorage 持久化
6. 样式美化
## 验证标准
- 计时器能正确倒数
- 工作/休息模式能自动切换
- Todo 支持增删改查
- 刷新页面后数据不丢失
Step 3:确认技术选型
审查计划中的技术选型,确认是否符合你的需求:
- React 组件架构 ✓
- 自定义 Hooks 分离逻辑 ✓
- localStorage API 简单可靠 ✓
如果有疑问或需要调整,可以提出修改意见。
Step 4:调整推理深度
为了让 Claude 在实现时更深入地思考架构细节:
/effort high
这将让 Claude 在后续实现时进行更详细的代码设计和错误处理。
Step 5:快速附加提问
在执行前,快速确认一个技术细节:
/btw React useState 和 useReducer 哪个更适合计时器状态管理?
Claude 会回答:对于简单的计时器,useState 足够;如果状态逻辑复杂(多种模式、多个状态),useReducer 更合适。番茄钟计时器推荐使用 useState。
Step 6:批准计划
确认计划无误后,你可以:
- 在 Plan Mode 中批准:回复"批准"或"开始执行"
- 退出后执行:先退出 Plan Mode,再根据计划手动实现
如果你批准计划,Claude 会:
- 退出 Plan Mode
- 开始按照计划实现每个步骤
- 逐步完成架构搭建
本章小结
本章介绍了 Plan Mode 及相关命令,帮助你更安全、更高效地规划复杂任务。
核心命令回顾:
| 命令 | 用途 | 典型场景 |
|---|---|---|
/plan |
进入规划模式 | 重构、架构设计 |
/effort |
控制推理深度 | 调整 Claude 思考深度 |
/btw |
快速附加提问 | 临时确认信息 |
/goal |
设定工作目标 | 多步骤任务 |
/ultraplan |
高级规划 | 可视化审阅 |
关键要点:
- Plan Mode 是大型变更的安全网:先探索、再规划、后执行
- 3 个命令的选择:
/plan:需要深入理解代码库时使用/effort:根据任务复杂度调整思考深度/btw:快速提问,不污染上下文
- 规划先行的习惯:养成在修改代码前先规划的习惯,减少返工
下一步:
在下一章中,我们将根据本章规划好的架构,实际实现番茄钟应用的计时器组件。你将学会如何使用 /do 命令让 Claude 按计划逐步执行。