Plan Mode 深度解析:为什么你不需要外部规格工具
TL;DR: Claude Code 的 Plan Mode 实现了与 OpenSpec、SpecKit 相同的 Spec-driven 开发原则,但无需安装额外依赖。最新版本(2.1.116+)新增了本地计划存储、默认启用 Extended Thinking、以及任务依赖追踪。
Spec-driven 开发为什么火了
Spec-driven 开发工具现在遍地开花。OpenSpec、SpecKit、KIRO… 新工具层出不穷,承诺的都是同一件事:别瞎写代码,先写规格,再让 AI 实现。
这个思路从何而来?
当你和 AI 编程助手聊天时,需求散落在长长的对话里。没有结构,没有持久化。当上下文窗口填满,AI 就会忘记你们之前达成的共识。于是你得到代码回退、逻辑断层和幻觉。
解决方案?编码前先写规格,让规格成为唯一的事实来源。
这不是什么新概念——优秀的工程师一直都是这么干的。区别在于,现在 AI 可以帮你写规格、然后执行规格。
像 OpenSpec 和 SpecKit 这样的工具把这个流程形式化了:描述你想要什么 → AI 生成详细规格 → 你批准 → AI 把工作拆成任务并实现。
很好用,但需要安装外部工具、学习新命令、管理又一个依赖。
如果你在用 Claude Code,其实不需要这些。
Plan Mode:内置的 Spec-driven 工作流
Claude Code 从 2025 年中就有 Plan Mode 了,但最初只是个简单的「编码前先想想」功能。过去几个月,它进化成了更强大的东西。
现在的 Plan Mode 是一个形式化的状态机。
核心有两个工具:Enter Plan Mode 和 Exit Plan Mode。
激活方式有三种:
- 按两次
Shift+Tab - 输入
/plan命令 - 从终端启动时使用
--permission-mode Plan
激活后,Claude 切换到只读模式。它可以探索你的代码库、搜索文件、获取文档,但不能写代码——直到你批准计划。
这和 SpecKit 的原则一样:规格先行,代码后写。
Plan Mode 的四个阶段
1. 探索 (Exploration)
Claude 使用只读工具(Glob、Grep、Read)扫描你的代码库。它在提出任何方案之前,先理解你的架构。
2. 设计 (Design)
Claude 起草一个高层级的实现方案。这不是模糊的描述,而是具体的计划——要创建或修改哪些文件。
3. 审查 (Review)
这时候 Ask User Question 工具派上用场。如果有任何模糊的地方,Claude 会问多选题——清晰的选项,不用猜。
4. 最终计划 (Final Plan)
Claude 把批准的计划写入一个 Markdown 文件。这成为持久化的产物——能够在上下文切换和会话重置后存活下来。
最近的重要更新
本地计划存储(v2.1.9,1月16日)
以前,计划存储在你 home 目录下的全局文件夹里。现在你可以在设置中把 plans directory 设为项目内的 /plans 目录。
你的计划和代码放在一起。可以提交到 Git,版本控制你的规格。这是之前最缺失的功能之一,让 Plan Mode 和 SpecKit 的本地存储方案站在了同一起跑线上。
一个限制:目前还不能自定义计划文件名。它们仍然是随机名字,像 cosmic-purcolating-something.md。想要有意义的名字,需要在 Claude 创建后手动重命名。
Extended Thinking 默认启用
你不需要再输入 ultrathink 或任何魔法关键词了。Claude Code 自动使用它的完整思考预算。对于 Opus 4.5 这样的模型,这意味着大量的推理能力在后台工作。
任务依赖追踪(v2.1.116,1月22日)
最新版本增加了原生的任务管理和依赖追踪。这是在现有的 todo write 系统上构建的,但允许任务声明它们依赖什么。
Claude 不会在依赖项完成之前开始实现某个任务。如果你在构建一个需要先有数据库 schema 的用户资料页,Claude 应该能追踪这个关系并按正确顺序执行。
这个功能刚发布,文档还很少,但值得关注。
内置的子代理编排
这是 OpenSpec 和 SpecKit 都没有的东西。
当 Claude 进入 Plan Mode,它可以生成专门的代理来帮助研究:
- Plan Agent:处理深度代码库分析
- Explore Agent(由 Haiku 驱动):处理快速文件搜索
每个代理有自己的上下文窗口,所以你的主对话保持干净。
你不需要配置这个——它自动发生。Claude 自动编排研究过程。
实际演示
假设我要给网站添加一个「Buy Me a Coffee」按钮。
- 首先,在设置中配置
plans directory为plans,这样计划存储在项目根目录 - 按两次
Shift+Tab,看到 Plan Mode 激活 - 描述我想要什么:header 里的一个按钮,在订阅按钮左边,样式匹配网站——黑色背景配橙色装饰。我还问 Claude 怎么设置 Buy Me a Coffee,因为我从没用过
Claude 开始探索。它读取我的组件,检查 header 的结构,查看现有样式。然后它写了一个计划——要修改哪些文件、组件设计、甚至需要的环境变量,还有我问的设置说明:注册、获取链接、连接支付。
计划保存到 Plans 目录。我可以提交到 Git。
对于这样的简单功能,我直接批准,让 Claude 实现。一分钟后运行 npm run dev,按钮就在那里,样式匹配,hover 效果正常。只需要添加实际的 Buy Me a Coffee 链接。
对于更大的功能,你会在计划本身上迭代更多,也可以清空上下文,在新会话中按照计划继续。
与外部工具的比较
| 特性 | Plan Mode | OpenSpec | SpecKit |
|---|---|---|---|
| 内置 | ✅ | ❌ | ❌ |
| 本地规格存储 | ✅ | ✅ | ✅ |
| Git 版本控制 | ✅ | ✅ | ✅ |
| 子代理编排 | ✅ | ❌ | ❌ |
| 跨工具兼容 | ❌(仅 Claude Code) | ✅ | ✅ |
| 需要安装 | ❌ | ✅ | ✅ |
| 自定义文件名 | ❌ | ✅ | ✅ |
OpenSpec 和 SpecKit 都是可靠的选择。OpenSpec 更精简,上手更快。SpecKit 提供更多结构。两者都兼容 Claude Code、Copilot、Cursor 等。
如果你使用多个 AI 工具,它们提供了一致的工作流。但如果 Claude Code 是你的主要工具,Plan Mode 给你同样的好处,没有额外的层。 不需要安装,不需要学新命令,不需要在工具之间切换上下文。
子代理编排是外部规格工具没有的。Claude 智能地处理研究阶段,为快速搜索启动轻量级代理,为深度分析启动重量级代理。
有了本地计划存储,之前缺失的版本控制故事也补全了。
何时使用 Plan Mode
Plan Mode 不是万能的。
如果你在修复一个 typo 或添加一行 console.log,直接做就好。
但对于任何非平凡的事情——新功能、重构、架构变更——先进入 Plan Mode。
让 Claude 探索,回答它的问题,审查计划,然后执行。迭代发生在规划阶段——那里成本低,而不是在实现阶段——那里错误代价高昂。
一点诚实的说明
Plan Mode 对小到中等规模的功能效果最好。对于更大的功能,新的任务依赖系统应该有帮助。Claude 可以把工作拆成有依赖关系的任务并按顺序执行,但你仍然需要保持控制。重新阅读计划,在脑子里保持上下文。
你可以用 git worktrees 并行运行多个计划——不同的功能,不同的分支,不同的 Claude 会话。但超过两个就难以管理了。你成了瓶颈。
对于真正的可扩展性,有工具带有交互式看板来编排多个代理——但那是另一个话题了。
总结
Plan Mode 已经悄悄成为 Claude Code 最强大的功能之一。它实现了 OpenSpec 和 SpecKit 提供的相同 spec-driven 原则,但它是内置的。没有额外依赖,没有新的工作流要学。
有了本地计划存储和自动启用的 Extended Thinking,它已经准备好正式使用了。
在你的下一个功能上试试。你可能会发现不需要另一个工具。
本文整理自 The Gray Cat 的视频 “Plan Mode Deep Dive: Why External Spec Tools Are Redundant”
如果这篇文章对你有帮助,欢迎请我喝杯咖啡,支持我继续创作更多内容。
Buy me a coffee