第 3 章:规划先行 — Plan Mode 的力量

⏱ 预计阅读 17 分钟 更新于 2026/5/15
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)

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 工作流

  1. Claude 进入只读模式

    • 只使用 Read、Bash(只读)等不修改文件的工具
    • 通过 Explore agent 搜索代码库
    • 理解现有架构和代码模式
  2. 设计方案

    • 分析技术选型
    • 拆分实现步骤
    • 设计文件结构
  3. 写入计划文件

    • 创建 .claude/plans/[timestamp]-[name].md
    • 包含:目标、技术方案、步骤、验证标准
  4. 请求审批

    • 调用 ExitPlanMode 工具
    • 显示计划完整内容
    • 等待你确认或修改
  5. 执行或调整

    • 你批准后,Claude 退出 Plan Mode 开始执行
    • 或提出修改意见,Claude 更新计划

注意事项/技巧

  • Plan Mode 的限制

    • 不能执行 Edit、Write 工具
    • 不能运行修改文件的 Bash 命令(如 npm install
    • 只能使用 Read、Bash 只读命令(如 git statusls -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

或使用 stopoff,移除活跃目标

示例 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,开始:

  1. 探索当前项目结构(Read package.json、查看现有文件)
  2. 搜索 React 组件的最佳实践(Explore agent)
  3. 设计技术选型和文件结构
  4. 写入计划文件到 .claude/plans/ 目录
  5. 调用 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:批准计划

确认计划无误后,你可以:

  1. 在 Plan Mode 中批准:回复"批准"或"开始执行"
  2. 退出后执行:先退出 Plan Mode,再根据计划手动实现

如果你批准计划,Claude 会:

  • 退出 Plan Mode
  • 开始按照计划实现每个步骤
  • 逐步完成架构搭建

本章小结

本章介绍了 Plan Mode 及相关命令,帮助你更安全、更高效地规划复杂任务。

核心命令回顾:

命令 用途 典型场景
/plan 进入规划模式 重构、架构设计
/effort 控制推理深度 调整 Claude 思考深度
/btw 快速附加提问 临时确认信息
/goal 设定工作目标 多步骤任务
/ultraplan 高级规划 可视化审阅

关键要点:

  • Plan Mode 是大型变更的安全网:先探索、再规划、后执行
  • 3 个命令的选择
    • /plan:需要深入理解代码库时使用
    • /effort:根据任务复杂度调整思考深度
    • /btw:快速提问,不污染上下文
  • 规划先行的习惯:养成在修改代码前先规划的习惯,减少返工

下一步:

在下一章中,我们将根据本章规划好的架构,实际实现番茄钟应用的计时器组件。你将学会如何使用 /do 命令让 Claude 按计划逐步执行。