Claude Code 教程

Plan Mode 使用指南

什么是 Plan Mode

Plan Mode 是 Claude Code 的一种特殊工作模式。在默认模式下,Claude 会在理解你的需求后直接开始编写和修改代码。而在 Plan Mode 下,Claude 会先探索代码库、分析问题,然后生成一份详细的执行计划,等待你审批后再动手实施。

你可以把它理解为:

  • 默认模式 = 直接开工,边做边调整
  • Plan Mode = 先画蓝图,确认后再施工

什么时候应该使用 Plan Mode

Plan Mode 在以下场景中特别有用:

  • 大规模重构:涉及多个文件的架构调整
  • 新功能开发:需要在多个模块中添加代码的复杂功能
  • 不熟悉的代码库:你想先了解 Claude 对项目的理解再让它动手
  • 高风险操作:修改核心模块、数据库结构等不容易回滚的变更
  • 团队协作:需要先确认方案,再分享给团队成员审阅

不太适合 Plan Mode 的场景:

  • 简单的 bug 修复(例如修一个 typo)
  • 单文件的小改动
  • 格式化或重命名等机械性操作

激活 Plan Mode

有两种方式进入 Plan Mode。

方式一:使用 Shift+Tab 切换

在 Claude Code 输入框中,按 Shift+Tab 可以在不同模式之间切换。你会看到输入框左侧的模式指示器变化:

> (默认模式,正常输入)
plan> (Plan Mode,规划模式)

当看到 plan> 提示符时,你就已经进入了 Plan Mode。再次按 Shift+Tab 可以切回默认模式。

方式二:使用提示词触发

你也可以在普通模式下,通过在提示中明确要求 Claude 先制定计划:

> 请先制定一个计划,不要直接修改代码。我想给用户模块添加角色权限功能。

或者更直接地:

> 帮我分析一下如何重构 src/services/ 目录的代码结构,先给出方案,不要动代码。

这种方式的灵活性更高,你可以在任何时候要求 Claude 进入规划状态。

Plan Mode 的工作流程

进入 Plan Mode 后,Claude 的工作流程如下:

第一步:探索代码库

Claude 会自动阅读相关文件、分析项目结构、理解代码依赖关系。你会看到它在读取文件:

plan> 我想将用户认证从 session 迁移到 JWT
Claude 正在探索代码库...
- 读取 src/auth/session-manager.ts
- 读取 src/middleware/auth.ts
- 读取 src/routes/user.ts
- 读取 src/config/auth.config.ts
- 分析 package.json 中的依赖...

第二步:生成执行计划

探索完成后,Claude 会输出一份结构化的计划:

## 迁移计划:Session -> JWT 认证
### 需要修改的文件
1. **package.json** - 添加 jsonwebtoken 和 @types/jsonwebtoken 依赖
2. **src/config/auth.config.ts** - 添加 JWT 配置项
- JWT_SECRET
- JWT_EXPIRES_IN
- JWT_REFRESH_EXPIRES_IN
3. **src/auth/jwt-manager.ts** (新建)
- generateAccessToken()
- generateRefreshToken()
- verifyToken()
4. **src/middleware/auth.ts** - 修改认证中间件
- 从验证 session 改为验证 JWT
- 添加 token 刷新逻辑
5. **src/routes/user.ts** - 修改登录和登出端点
- login: 返回 JWT token 而非设置 session
- logout: 实现 token 黑名单机制
6. **src/auth/session-manager.ts** - 标记为废弃
- 添加 @deprecated 注释
- 迁移完成后删除
### 执行顺序
1. 安装依赖
2. 创建 JWT 配置和工具
3. 修改认证中间件
4. 更新路由处理
5. 编写测试
6. 清理旧代码
### 风险评估
- 需要同步更新前端的 token 存储逻辑
- 现有用户的 session 在迁移后会失效,需要考虑过渡方案

第三步:等待审批

计划输出后,Claude 会暂停并等待你的反馈。此时你有几个选择。

审批、修改或拒绝计划

批准执行

如果你对计划满意,直接告诉 Claude 开始执行:

> 计划看起来不错,请开始执行。

或者简短地:

> 开始吧

Claude 会按照计划逐步实施修改。

修改计划

如果你想调整计划中的某些部分:

> 计划基本可以,但有几点修改:
> 1. 不需要 token 刷新机制,我们用短期 token + 重新登录的方式
> 2. session-manager.ts 直接删除,不需要保留
> 3. 先不写测试,我后面单独处理

Claude 会根据你的反馈调整计划,然后再次确认。

拒绝计划

如果你觉得方向完全不对:

> 这个方案太复杂了。我其实只想把 session 存储从内存改到 Redis,认证机制不变。请重新规划。

Claude 会根据新的理解重新制定计划。

部分执行

你也可以选择只执行计划的一部分:

> 先只做第 1 和第 2 步(安装依赖和创建 JWT 工具),其他的等我确认后再继续。

Plan Mode 的最佳场景

场景一:大规模重构

plan> 我们的项目目前所有 API 调用都直接用 fetch,我想统一迁移到 axios,
并添加请求拦截器处理认证 token 和错误重试。

Plan Mode 会帮你梳理所有需要修改的文件,规划迁移的步骤和顺序。

场景二:新功能开发

plan> 给我们的博客系统添加评论功能,需要支持:
- 多级嵌套回复(最多 3 层)
- 评论点赞
- @提及其他用户
- 评论通知

复杂功能涉及数据库设计、API 端点、前端组件等多个层面,Plan Mode 能确保所有方面都被考虑到。

场景三:复杂调试

plan> 用户反馈在高并发下订单会出现重复扣款。请分析可能的原因并制定排查方案。

Claude 会分析相关的代码路径,找出可能存在竞态条件的地方,然后提出修复方案。

场景四:技术栈迁移

plan> 将项目的状态管理从 Redux 迁移到 Zustand。项目里有 12 个 Redux slice,
涉及约 40 个组件。

这种大规模迁移必须有清晰的计划,否则很容易遗漏或出错。

Plan Mode vs 直接执行:如何选择

维度直接执行Plan Mode
速度更快,省去规划时间较慢,需要先规划后执行
适合任务规模小型、明确的任务大型、复杂的任务
可控性较低,Claude 自行决定较高,你审批后再执行
出错风险小任务低,大任务高通过预审降低风险
上下文消耗较少较多(规划+执行)
回滚成本依赖 git可以在执行前发现问题

经验法则

  • 修改不超过 3 个文件 -> 直接执行
  • 修改 3-10 个文件 -> 视复杂度决定
  • 修改超过 10 个文件 -> 建议使用 Plan Mode
  • 涉及架构变更 -> 始终使用 Plan Mode
  • 不确定方案是否正确 -> 使用 Plan Mode 先验证

高效使用 Plan Mode 的技巧

提供充分的上下文

Plan Mode 的质量取决于你提供的信息。越具体,计划越好:

<!-- 不够好 -->
plan> 优化性能
<!-- 更好 -->
plan> 首页加载时间超过 5 秒,主要瓶颈是:
1. 初始 bundle 过大(2.3MB)
2. 首屏有 3 个瀑布式 API 请求
3. 图片未做懒加载
请针对这三个问题制定优化方案。

分阶段规划

对于特别大的任务,可以让 Claude 分阶段规划:

plan> 将 JavaScript 项目迁移到 TypeScript。项目有 200+ 文件。
请先制定第一阶段的计划:基础设施搭建和核心模块迁移。

结合 Git 使用

在 Plan Mode 执行前,确保你的 Git 工作区是干净的:

Terminal window
git stash # 暂存当前修改
git checkout -b refactor/auth-jwt # 创建新分支

这样即使计划执行后发现问题,也能轻松回滚。

小结

Plan Mode 是 Claude Code 处理复杂任务的利器。核心要点:

  • 何时使用:大规模修改、新功能开发、架构变更等复杂任务
  • 如何激活:Shift+Tab 切换或通过提示词触发
  • 工作流程:探索代码 -> 生成计划 -> 等待审批 -> 执行实施
  • 灵活控制:可以批准、修改、拒绝或部分执行计划
  • 经验法则:修改文件越多、风险越高,越应该使用 Plan Mode

评论与讨论