Skip to content

先别改代码:Plan mode 怎么进、怎么批、怎么回来

大改一上来就写文件,后面往往要整段回滚。Plan mode 把节奏反过来:先摸清现状、写出可编辑的方案,你点头之后才动手。状态栏会亮着 plan mode,提醒它现在不能改源码。

小到改一行、修一个文件,没必要绕这一圈。不熟的模块、跨目录重构、牵动权限和测试边界的活,才值得先规划。

怎么进

三种入口,效果一样:

  1. 反复按 Shift+Tab,直到状态栏显示 plan mode
  2. 会话里跑 /plan
  3. 启动时带上:claude --permission-mode plan

进了之后,它只能读文件、搜代码、提方案。写源码、改配置这类会动仓库的动作,要等你批准计划之后才放开。

想和别的权限模式对照:沙箱与 allow / ask / deny 见 权限怎么配;分类器驱动的免确认路径见 Auto mode 配置。Plan mode 管的是「先规划再实现」,不是分类器,也不是 acceptEdits 那种批量同意编辑。

规划阶段实际在干什么

它会探索仓库结构、读关键文件、比较几种改法,然后把计划写成 Markdown。这份计划可以打开编辑器改:删掉你不认同的步骤、补上约束、把「先测再改」写死。

常见会看到的内容包括:

  • 要动哪些目录和入口
  • 依赖顺序(先抽接口还是先迁调用方)
  • 风险点:破坏性命令、共享类型、跨包引用
  • 建议的验证步骤:单测、类型检查、手工冒烟

你批的是这份文档,不是某一句聊天里的口头承诺。改计划比事后扯皮便宜。

批准之后会发生什么

批准计划后,会话退出 plan mode,进入实现阶段。状态栏上的 plan mode 标记会消失。此时它按你刚批过的步骤改代码。

实现中途若发现方向偏了——比如摸到了计划里没写的耦合——可以再切回 plan mode:同样用 Shift+Tab/plan。不必推倒重来整个会话;补一版计划、再批一次,继续干。

阶段能不能改源码你要做什么
Plan mode 开着否,只读探与提案审 Markdown 计划,改完再批
批准后实现看 diff、跑测试、必要时再进 plan
中途重进 plan再次只读修订计划,避免顺着错误假设写下去

和 Auto mode、acceptEdits 别混

  • Plan mode:先方案后动手;适合陌生区和大范围改动
  • Auto mode:工具调用过分类器;deny / ask 仍先生效,见 Auto mode 配置
  • acceptEdits:倾向自动接受文件编辑,不等于「先规划」

三者可以按任务叠用,但不要指望「开了 Auto 就等于开了 Plan」。不熟的大重构,宁可先 plan;已知的一文件小修,直接改更快。

远程或云端派发任务时,本地还在 plan 里犹豫,远端可能已经按别的权限在跑。分工见 Remote Control 与云端派发。多 worktree 并行时,每个树各自的 plan 状态也不共用,见 Worktree 用法

什么时候用,什么时候跳过

适合:

  • 第一次碰的子系统
  • 要动公共 API、迁移目录、拆包
  • 你自己也说不清「该先改哪」

可以跳过:

  • 改错别字、补一条日志
  • 你已经写好完整 patch 思路,只差它落地
  • 时间极紧、且回滚成本极低的一次性脚本

Skills 适合固化「碰到某类任务再加载」的流程;Plan mode 适合「这一次还没想清楚」。两者怎么搭配,可对照 Skills 指南。硬性「不许碰某路径」仍要靠权限与 Hooks,见 CLAUDE.md 与 Hooks

实操小结

  1. Shift+Tab/plan 进入,确认状态栏是 plan mode
  2. 让它读、搜、写 Markdown 计划;你直接改计划文本
  3. 批准后退出 plan,开始改代码
  4. 飘了就再进 plan,补约束再批
  5. 小修别硬套;大重构别省这一步

Plan mode 的价值不是多一个开关,而是把「想清楚」和「写下去」拆开。批的是可编辑的计划,回来的入口也始终开着。

Claude-cn.org,专注于 Claude Code 中文教程