计划模式如何使用文件
Anthropic 用一句话描述了计划模式:它“告诉 Claude 在不进行更改的情况下研究并提出更改建议”。Claude 读取文件,运行命令进行探索,并编写计划,但在你批准之前不会编辑你的源代码。
在 Claude 请求批准之前,计划已写入磁盘。Anthropic 的 hooks 参考直接说明了这一点:“Claude 在调用工具之前将计划写入磁盘上的文件”。当 hook 检查该批准步骤时,Claude Code 会向其传递两个字段:plan(计划的 Markdown 内容,“从磁盘上的计划文件注入”)和 planFilePath(文件的路径)。
因此,该文件是事实来源。你在对话中看到的是 Claude 呈现的计划;磁盘上的是 Claude Code 稍后读回的计划。
文件在哪里以及叫什么名字
默认位置是 ~/.claude/plans/。Anthropic 的 .claude 目录指南将该文件夹列为保存“在计划模式期间编写的计划文件”。如果你设置 CLAUDE_CONFIG_DIR 来移动 Claude Code 的主目录,计划文件夹也会随之移动。
文件名遵循你的提示词。Claude Code 的发布说明称:“计划文件现在根据你的提示词命名(例如 fix-auth-race-snug-otter.md),而不是纯随机单词”。因此,修复身份验证竞争(auth race)的计划名称将以这些单词开头,后跟随机单词,如 Anthropic 的示例所示。
每个项目的计划都进入同一个默认文件夹。如果你在多个仓库中工作,~/.claude/plans/ 会并排保存来自所有仓库的计划。
如何打开和编辑计划
你不需要手动查找文件来更改它。
- 在终端中: 当计划准备就绪时,“按
Ctrl+G在默认文本编辑器中打开建议的计划,并在 Claude 继续之前直接对其进行编辑。” - 在 VS Code 中: 扩展程序将计划作为一个完整的 Markdown 文档打开,你可以在其中添加行内注释。在已处于计划模式时输入
/plan会显示当前计划,而/plan open会在编辑器中打开计划文件。 - 在批准菜单中: 选择继续规划并告诉 Claude 需要更改什么。
因为该文件是 Claude Code 读回的内容,所以编辑它会改变 Claude 执行的计划。
压缩后计划会发生什么
长时间的规划会话会填满上下文窗口,而压缩会总结对话以腾出空间。计划的处理方式与其余部分不同。Anthropic 关于压缩后保留内容的表格列出了“Claude 在计划模式下编写的计划”,结果为“从磁盘重新注入”。
这意味着计划不会像其他内容一样被挤进摘要中。Claude Code 会再次读取该文件并将其放回上下文中。由此产生两个实际要点:
- 你对文件的编辑是有效的。 压缩运行时磁盘上的任何内容就是返回的内容。
- 围绕计划的讨论不会得到相同的待遇。 你拒绝某种方法的理由、你讨论过的权衡,都是对话的一部分,它们会随之被总结。如果某个理由很重要,请将其放入计划文件中。
我们的 /context 命令指南展示了如何在压缩发生前查看哪些内容填满了窗口。
使用 /clear 后会发生什么
/clear 会开始一段全新的对话,计划也会随之更新。一份发布说明描述了针对此问题的修复:“修复了计划文件在 /clear 命令后仍然存在的问题,现在确保在清除对话后使用新的计划文件”。
因此,在 /clear 之后,Claude Code 会为新对话启动一个新的计划文件。发布说明没有描述删除旧文件;它的意思是新对话不会沿用旧计划。如果你清除了对话但想继续根据该计划工作,请先打开它,或要求 Claude 通过路径读取旧文件。
批准时的 clear-context 选项
有一种清除方式旨在保留计划。showClearContextOnPlanAccept 设置在批准菜单中添加了一个首选选项,该选项“批准计划,清除对话上下文,并仅根据计划开始实施”。它默认是关闭的。Anthropic 提供该选项的原因是:“规划可能会消耗大量上下文”。
该选项是放弃冗长探索并仅保留其结果的干净方式。
/fork、恢复和云端会话的情况
分叉(Fork)拥有自己的计划文件。 一份发布说明修复了“分叉对话 (/fork) 共享同一个计划文件,导致一个分叉中的计划编辑覆盖另一个分叉”的问题。现在每个分叉都独立进行规划。
恢复(Resume)会还原计划模式。 几项修复涉及此问题,包括针对“从 claude --resume 会话选择器或使用 /resume 恢复会话时未还原计划模式”的修复。如果恢复的会话似乎离开了计划模式,请检查你是否使用的是最新版本。
云端会话在重启后保留文件。 发布说明描述了针对远程会话在容器重启后丢失计划文件,以及在计划呈现前云端会话容器重启导致计划模式下编写的计划丢失的修复。
计划文件能保存多久
计划文件不是永久性的。Anthropic 列出的 Claude Code 按计划删除的应用数据包括 plans/,以及转录文本和其他会话文件。规则是:“一旦文件早于 cleanupPeriodDays,Claude Code 就会删除下面路径中的文件”。默认值为 30 天。
Anthropic 关于自行删除应用数据会损失什么的表格将 ~/.claude/plans/ 归入“无用户面向内容”的文件夹中。换句话说,Claude Code 将默认文件夹中的计划视为会话的工作材料,而不是记录。
如果你想将计划作为记录,它需要存放在其他地方。
如何通过 plansDirectory 将计划保留在仓库中
plansDirectory 设置可以移动计划文件。“选择 Claude Code 存储其在计划模式下编写的计划文件的位置。Claude Code 会相对于项目根目录解析该路径。”Anthropic 的示例值是 ./plans。
将其放入项目的 .claude/settings.json 中,该项目的计划就会落在仓库的 plans/ 文件夹中。该设置可以放在任何设置文件中,因此你也可以在本地设置中仅为自己设置。
有两种情况会将计划发回默认文件夹:
- 项目根目录之外的路径,例如
../plans。 - macOS、Linux 和 WSL 上的反斜杠。 Anthropic 建议编写
docs/plans而不是 Windows 风格的路径;正斜杠在 Windows 上也有效。
自动清理列表指明了 ~/.claude/ 下的 plans/ 文件夹;你仓库内的计划文件夹不在该列表中。计划模式仍然可以写入那里:Anthropic 的受保护路径列表对 ~/.claude/plans/ 或你设置的 plansDirectory 中的“当前会话自己的计划文件”做了例外处理。
提交它们或忽略它们
一旦计划进入仓库,请决定是否共享它们。提交的计划可以向评审者提供更改背后的推理。忽略的计划保留在本地,且不在清理列表中。无论哪种方式,它们现在都是你控制的文件。关于 Factory 如何处理同样的问题,请参阅我们的将 Factory spec 计划移出主目录的指南。
人们首先尝试的操作
在项目文件夹中寻找计划。 默认情况下它在 ~/.claude/plans/ 中,而不是仓库中。
期望 /clear 保留计划。 它会启动一个新的计划文件。请先打开或保存旧计划。
假设计划永久存在。 默认文件夹中的文件会根据 cleanupPeriodDays 进行清理,默认值为 30 天。
将 plansDirectory 设置为父文件夹。 项目根目录之外的路径会回退到默认位置。
将计划视为项目记忆。 计划属于单个会话。应该每次都应用的规则属于 CLAUDE.md 或规则文件;我们的 Claude Code 规则指南解释了其中的区别。
解决方案:将计划保存在你能找到的地方
第 1 步:为项目设置 plansDirectory
在项目设置中添加 plansDirectory 并指定项目内的路径,例如 ./plans。该项目的新计划将落在仓库中,而不是主文件夹中。
第 2 步:将理由放入计划文件中
在批准之前,使用 Ctrl+G 或 /plan open 打开计划,并添加重要的决策和被拒绝的方法。该文件是压缩后返回的内容。
第 3 步:将持久决策移出计划
当工作完成时,将那些应该比计划更长久的决策(例如你确定的约定或排除的方法)写入 CLAUDE.md 或你自己的笔记中。如果实施过程中出现问题,我们的 Claude Code /rewind 指南涵盖了撤销编辑的内容。
在 MemoryLake 中设置
计划文件保存了一次更改的推理。其中一些推理一直很重要:为什么选择某个库,上次哪种方法失败了。当默认文件夹中的计划被清理时,这些事实就会消失,而且它们根本不会出现在下一个会话的计划中。
MemoryLake 是一个记忆层,用于将这些决策保存在一个由你维护的地方,供你连接的助手(如 ChatGPT、Claude Code 和 Codex)使用。
你用自己的话亲自编写条目。不会从你的计划文件、Claude Code 会话、CLAUDE.md 文件、自动记忆或任何供应商的存储中读取、写入或删除任何内容。计划模式和 plansDirectory 仍按 Anthropic 描述的方式工作。
第 1 步:创建 API 密钥
登录并从控制面板生成密钥。该密钥属于你的 MemoryLake 工作区,与你的 Claude 账户是分开的。

第 2 步:上传你的第一条记忆
从解决方案的第 3 步中的决策开始:你做出的选择和排除的方法,每条都附带一行理由。每个条目一个要点。

第 3 步:连接你的 AI 和代理
连接 Claude Code 和你使用的任何其他助手。下一个计划将从上一个可用决策开始。

这在实践中改变了什么
第一个区别是你能找到计划。它们在仓库中,根据提示词命名,且不在清理列表中。
第二个是计划在会话中幸存。压缩会重新读取文件,你添加到其中的理由也会随之返回。
第三个是减少了重复的争论。你上个月排除的方法已被记录下来,因此下一个计划不会再次提议它。如果你使用不同的模型进行规划,我们的会话中途切换模型指南涵盖了这对对话的影响。
Claude Code 计划文件的最佳实践
了解默认文件夹。 除非设置了 plansDirectory,否则计划会进入 ~/.claude/plans/。
在项目内部设置 plansDirectory。 根目录之外的路径会回退到默认位置。
使用正斜杠。 在 macOS 和 Linux 上,反斜杠会将计划发回默认位置。
编辑文件,而不仅仅是聊天。 文件是压缩后返回的内容。
在 /clear 之前保存计划。 下一段对话会获得一个新的计划文件。
注意 30 天清理。 它适用于默认计划文件夹。
将持久决策移入 CLAUDE.md。 计划属于单个会话。
结论
Claude Code 在请求批准之前会将每个计划写入文件,默认位于 ~/.claude/plans/,并根据你的提示词命名。压缩后会从磁盘重新注入该文件,/clear 后会使用新文件,每个分叉都有自己的文件,默认文件夹在 30 天后会被清理。
要保留计划,请将 plansDirectory 设置为项目内的文件夹。通过编辑文件来更改计划,将理由放入其中,并将应该比会话更长久的决策移到能再次找到它们的地方。