1. 从「Plan Mode 标配」到「Plan Mode 已死」:一场关于 AI 编程范式的争论
最近 AI 编程圈子里有个话题吵得挺凶:Plan Mode 刚刚被各大 AI 编程工具当作标配功能推出来没多久,就有人跳出来说它「已死」。乍一听挺离谱的,一个功能还没捂热乎呢,怎么就死了?但如果你真的天天泡在 Claude Code、Codex、Cursor 这些工具里写代码,你会发现这个说法虽然标题党,但背后指向的问题非常真实。
先说清楚 Plan Mode 是什么。简单讲,它就是在 AI 动手写代码之前,先让 AI 输出一份「计划」——要改哪些文件、按什么顺序改、每个文件改什么逻辑,用户确认之后再执行。这个思路的出发点是好的:AI 编程最大的痛点之一就是「它上来就改,改完你一看全错了」。Plan Mode 相当于在「想」和「做」之间加了一道人工审核关卡。
那为什么有人说它「已死」?核心矛盾在于:Plan Mode 把 AI 编程的效率优势又还回去了。你想想,你用 AI 编程图的是什么?图的是它帮你省时间。结果现在每次任务都要先看一遍计划、确认一遍、再等它执行,遇到复杂任务计划本身就要生成几十秒,你读计划又要几分钟,读完发现计划有问题还得重新生成。一套流程走下来,比自己写还慢。这就好比你请了个装修队,结果他们每刷一面墙都要先给你出一份施工方案让你签字,你签完字他们才动手——效率直接归零。
但话说回来,Plan Mode 真的没用吗?也不是。它在某些场景下确实能救命,比如涉及多文件重构、数据库迁移、核心链路改动这种「改错了代价很大」的任务。问题在于,大部分日常编程任务并不需要这么重的确认流程。写个工具函数、加个接口、修个 bug,这些任务让 AI 直接干就完了,出错了再回滚,成本远低于走一遍 Plan Mode 的流程。
所以这场争论的本质不是「Plan Mode 好不好」,而是「Plan Mode 应该什么时候用」。把它当默认流程,那确实「已死」;把它当高风险操作的保险栓,它还有价值。下面我从实际使用角度,把这件事拆开讲清楚。
2. Plan Mode 的设计逻辑与它的致命缺陷
2.1 Plan Mode 到底解决了什么问题
要理解 Plan Mode 为什么会火,得先理解 AI 编程工具在没有 Plan Mode 之前是什么状态。早期用 Claude Code 或者 Codex 的时候,最让人抓狂的场景是这样的:你给 AI 一个任务描述,它噼里啪啦开始改代码,改了七八个文件,你一看,方向完全错了。这时候你要么手动一个个回滚,要么用 git 硬回退,之前它改对的那些文件也一起没了。
Plan Mode 就是冲着这个痛点来的。它的逻辑是:先让 AI 把「打算怎么做」说清楚,你确认没问题了它再动手。这样你可以在它动手之前就发现方向错误,避免无效改动。从工程角度看,这确实是一个合理的防御性设计——就像代码 review 一样,在合并之前先看一眼。
而且 Plan Mode 还有一个隐性好处:它强迫 AI 把思考过程外化。很多时候 AI 直接写代码会漏掉一些边界情况,但当你要求它先写计划时,它不得不把步骤列出来,这个过程中它自己就更容易发现逻辑漏洞。这一点在我实际使用中感受很明显——同一个任务,让它直接写和让它先写计划再写,后者出来的代码质量确实更高。
2.2 为什么它变成了效率杀手
问题出在「标配」这两个字上。当所有工具都把 Plan Mode 设成默认开启,用户每次都要走一遍「生成计划→阅读计划→确认→执行」的流程,效率问题就暴露了。
我实测过一组数据:一个中等复杂度的任务(比如给一个 Express 项目加一套用户认证中间件),让 Claude Code 直接执行大概需要 40 秒完成,走 Plan Mode 的话,生成计划 15 秒,我读计划加确认 30 秒,执行 40 秒,总共 85 秒。也就是说,Plan Mode 让这个任务的时间成本翻了一倍。而这还是一个「计划基本没问题」的理想情况,如果计划有问题需要重新生成,时间成本还要再翻。
更关键的是,阅读计划本身是有认知成本的。AI 生成的计划往往写得很详细,十几条步骤,每条都带文件路径和改动说明。你认真读一遍要花不少精力,不认真读又失去了 Plan Mode 的意义。这就陷入了一个尴尬境地:认真读太累,不认真读不如不开。
2.3 「已死」论背后的真实诉求
所以当有人说 Plan Mode「已死」时,他真正想表达的不是这个功能没用,而是它不应该成为默认流程。用户需要的是「按需触发」——简单任务直接干,复杂任务我再手动开启 Plan Mode。把选择权还给用户,而不是替用户做决定。
这个诉求其实反映了 AI 编程工具的一个普遍问题:工具厂商总想用一套流程覆盖所有场景,但实际使用中场景差异极大。写一个 CRUD 接口和重构一个核心模块,风险等级差了十万八千里,用同一套确认流程显然不合理。
3. 不同 AI 编程工具的 Plan Mode 实现对比
既然聊到 Plan Mode,就不得不对比一下主流工具的实现方式。我最近把 Claude Code、Codex、Cursor 这三个用得最多的工具都试了一遍,它们在 Plan Mode 上的设计思路差异挺大的。
| 工具 | Plan Mode 触发方式 | 计划粒度 | 是否可跳过 | 适用场景 |
|---|---|---|---|---|
| Claude Code | 手动开启(Shift+Tab 切换) | 文件级+步骤级 | 可随时跳过 | 复杂重构、多文件改动 |
| Codex | 默认建议模式 | 步骤级 | 可直接执行 | 中等复杂度任务 |
| Cursor | Composer 内可选 | 文件级 | 可关闭 | 前端改动、UI 调整 |
Claude Code 的设计是我个人比较喜欢的:Plan Mode 不是默认开启的,你需要主动切换。它用 Shift+Tab 在普通模式和 Plan Mode 之间切换,切换后 AI 会先输出计划,你确认后才执行。这个设计的好处是,日常简单任务你根本不用管它,遇到复杂任务再切过去。
Codex 的做法不太一样,它更倾向于「先给建议再执行」,但这个建议比较轻量,不像 Claude Code 那样生成完整的计划文档。实际用下来,Codex 的方式对简单任务更友好,但对复杂任务的把控力不如 Claude Code。
Cursor 的 Plan Mode 藏在 Composer 里,更偏向「前端改动预览」的场景。它会把要改的文件和改动内容列出来,但粒度比较粗,适合 UI 调整这种「看一眼就知道对不对」的任务。
提示:不管你用哪个工具,建议把 Plan Mode 设成手动触发而不是默认开启。日常 80% 的任务不需要它,剩下 20% 的高风险任务再手动开。
4. 实操:如何判断一个任务该不该走 Plan Mode
说了这么多理论,落到实操上其实就一个问题:怎么判断当前任务要不要开 Plan Mode。我总结了一个简单的判断框架,你可以直接拿去用。
4.1 三个维度快速判断
判断一个任务是否需要 Plan Mode,看三个维度:
- 改动范围:涉及几个文件?如果超过 3 个文件,建议开 Plan Mode。单文件改动基本不需要。
- 回滚成本:改错了要多久才能恢复?如果涉及数据库 schema 变更、配置文件修改、核心业务逻辑,回滚成本高,建议开。
- 逻辑复杂度:任务本身有没有歧义?如果需求描述清晰、实现路径唯一,不需要开;如果需求模糊、有多种实现方案,开 Plan Mode 让 AI 先理清思路。
举个例子:给项目加一个日志中间件,改动范围 1-2 个文件,回滚成本低(删掉就行),逻辑简单(就是拦截请求打日志),这种任务直接让 AI 干,不用开 Plan Mode。但如果是「把项目的认证体系从 session 改成 JWT」,涉及十几个文件、回滚成本高、逻辑复杂,这种就必须开 Plan Mode 先看计划。
4.2 实操中的混合策略
我实际使用中的策略是「默认不开,按需开启,事后检查」:
- 简单任务直接让 AI 执行,不开启 Plan Mode
- 执行完用
git diff快速扫一眼改动,确认没问题就提交 - 遇到复杂任务,手动切到 Plan Mode,看完计划再执行
- 执行完同样用
git diff检查,双重保险
这个策略的核心是用 git 作为最后一道防线。Plan Mode 是事前防御,git diff 是事后检查,两者配合使用效果最好。而且 git diff 的成本远低于读 Plan Mode 的计划——你只需要扫一眼改动,不需要理解 AI 的完整思路。
4.3 一个具体的操作示例
以 Claude Code 为例,假设我要给一个 Node.js 项目加一套限流中间件。我的操作流程是这样的:
# 第一步:先看当前 git 状态,确保工作区干净 git status # 第二步:直接让 Claude Code 执行(不开 Plan Mode) # 在 Claude Code 中输入: # "给这个 Express 项目加一个基于内存的限流中间件,每个 IP 每分钟最多 100 次请求" # 第三步:执行完检查改动 git diff # 第四步:确认没问题后提交 git add . && git commit -m "feat: add rate limiting middleware"如果换成复杂任务,比如「把项目的数据库从 MySQL 迁移到 PostgreSQL」,流程就变成:
# 第一步:切到 Plan Mode(Claude Code 中按 Shift+Tab) # 第二步:输入任务描述 # "把项目的数据库从 MySQL 迁移到 PostgreSQL,包括 schema 转换、查询语句适配、连接配置修改" # 第三步:仔细阅读 AI 生成的计划,确认迁移步骤合理 # 第四步:确认后让 AI 执行 # 第五步:执行完检查 git diff,并跑一遍测试注意:Plan Mode 生成的计划不一定完全正确,尤其是涉及数据库迁移这种复杂任务,AI 可能会漏掉一些边界情况。读计划的时候重点看「有没有遗漏关键步骤」,而不是「步骤写得对不对」。
5. 常见问题与排查技巧实录
在实际使用 Plan Mode 的过程中,我踩过不少坑,这里整理成速查表,方便你对照排查。
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| Plan Mode 生成的计划太笼统 | 任务描述不够具体 | 在任务描述中补充文件路径、技术栈、约束条件 |
| 计划正确但执行时跑偏 | AI 执行时「自由发挥」 | 执行前明确要求「严格按照计划执行,不要额外改动」 |
| Plan Mode 切换后没反应 | 工具版本问题或快捷键冲突 | 检查工具版本,确认快捷键设置 |
| 计划生成太慢 | 任务过于复杂或上下文太长 | 拆分成多个子任务,分步执行 |
| 执行完发现计划漏了步骤 | AI 对项目结构理解不完整 | 在任务描述中提供项目结构说明或相关文件路径 |
除了这些常见问题,还有几个实操心得值得分享:
心得一:Plan Mode 的计划要「读重点」而不是「逐字读」。AI 生成的计划往往很长,但核心信息就那么几条:改哪些文件、每个文件改什么、有没有风险操作。抓住这三点就够了,不需要逐字阅读。
心得二:复杂任务拆成多个 Plan Mode 会话。如果一个任务涉及 20 个文件的改动,不要指望一次 Plan Mode 就能搞定。拆成 3-4 个子任务,每个子任务单独走 Plan Mode,成功率会高很多。
心得三:Plan Mode 和 git 分支配合使用。开启 Plan Mode 之前先切一个新分支,这样即使 AI 执行出问题,直接删分支就行,不影响主分支。
心得四:不要迷信 Plan Mode 的「确认」环节。很多人开了 Plan Mode 之后,看到计划就习惯性点确认,根本没认真读。这样还不如不开。要么认真读,要么别开,走形式没意义。
6. Plan Mode 之后,AI 编程的下一个范式是什么
聊完 Plan Mode 的现状,不妨往前看一步:如果 Plan Mode 真的「已死」,那替代它的会是什么?
从目前各大工具的演进方向看,有几个趋势比较明显:
趋势一:从「事前确认」转向「事后回滚」。与其让用户在 AI 动手前确认计划,不如让 AI 直接干,但提供更强大的回滚能力。比如自动创建 checkpoint,出错了可以一键回滚到任意步骤。这个思路的核心是「让试错成本趋近于零」,而不是「让试错概率趋近于零」。
趋势二:从「统一流程」转向「智能判断」。未来的工具可能会根据任务复杂度自动决定要不要走 Plan Mode,而不是让用户手动切换。简单任务直接执行,复杂任务自动生成计划,用户只需要在关键节点确认。
趋势三:从「文本计划」转向「可视化预览」。现在的 Plan Mode 输出的是文本计划,读起来累。未来可能会用 diff 预览、流程图、影响范围图等更直观的方式展示 AI 的意图,降低用户的认知成本。
趋势四:Agent 化。这是目前最热的方向。Plan Mode 本质上是「单次任务」的确认流程,而 Agent 模式下,AI 会持续执行多步任务,中间可能需要多次决策。这种情况下,传统的 Plan Mode 就不够用了,需要更细粒度的「决策点确认」机制。
我个人判断,Plan Mode 不会真的「死」,但它的形态会变。从「每次任务都要走的流程」变成「高风险操作的保险栓」,从「文本计划」变成「可视化预览」,从「用户手动触发」变成「AI 智能判断」。这个演进方向是合理的,因为它把选择权还给了用户,同时保留了必要的安全网。
最后分享一个我自己的使用习惯:我现在基本不开 Plan Mode,但我会在每次让 AI 执行任务前,用一句话告诉它「先告诉我你打算怎么做,我说 OK 你再动手」。这样既保留了 Plan Mode 的核心价值(事前确认),又避免了完整 Plan Mode 流程的繁琐。实测下来,这个方式在简单任务和复杂任务之间取得了不错的平衡。