检查点
Claude Code 自动追踪文件编辑,让你用 /rewind 回退代码和对话、或从某条消息起总结;以及检查点的局限。
Claude Code 在你工作时自动追踪 Claude 的文件编辑,让你可以快速撤销改动,并在事情偏离轨道时回退到之前的状态。
检查点如何工作
自动追踪
Claude Code 追踪其文件编辑工具做的所有改动:
- 你发送的每个开启回合的提示都会创建一个新的检查点
- Claude Code 为一个会话里最近的 100 个检查点保留文件快照
- Claude Code 把检查点和对话一起保存,所以恢复会话后仍然可以运行
/rewind - Claude Code 在保留清理中删除会话的文件快照,默认在会话最后一次保存快照约 30 天之后。回退到快照已经没有的检查点可能失败
回退与总结
运行 /rewind,或在提示输入为空时按两次 Esc,打开回退菜单。(如果提示输入里有文字,按两次 Esc 会清除它;被清除的文字保存在你的输入历史里,在回退菜单里完成后按 Up 找回。)
回退菜单列出你在会话期间发送的每个提示。选择想操作的点,然后选一个动作:
- Restore code and conversation:把代码和对话都还原到那个点
- Restore conversation:回退到那条消息,同时保留当前代码
- Restore code:还原文件改动,同时保留对话
- Summarize from here:把从这个点往后的对话压缩成摘要,释放上下文窗口空间
- Summarize up to here:把这个点之前的对话压缩成摘要,保持之后的消息不变
- Never mind:回到消息列表,不做任何改动
两个代码还原选项只在所选检查点有可还原的已追踪文件改动时才出现。恢复对话或选择 Summarize from here 之后,所选消息的原始提示会被恢复到输入框,让你可以重新发送或编辑。
回退到被清除的对话之前:如果你在同一个 Claude Code 进程里早先运行过 /clear,回退菜单会在列表顶部多出一个标为 /resume <session-id> (previous session) 的条目,选择它可以恢复 /clear 运行之前处于活动状态的对话。
引导摘要:总结不会改变磁盘上的文件,原始消息仍留在会话转录里,所以 Claude 仍可以引用细节。想引导摘要聚焦什么,用方向键高亮一个 Summarize 选项,在写着 add context (optional) 的地方输入指示。
总结让你留在同一个会话里并压缩上下文,类似有针对性的
/compact。想分叉出去尝试不同做法并保持原会话完整,改用/branch或claude --continue --fork-session。
常见用例
- 探索替代方案:尝试不同的实现方式而不丢失你的起点
- 从错误中恢复:快速撤销引入 bug 或破坏功能的改动
- 迭代功能:放心地尝试各种变体,因为你知道可以回到能用的状态
- 释放上下文空间:从中点往后总结冗长的调试会话,保留你最初的指令
局限
Bash 命令的改动不被追踪:检查点不追踪由 Bash 命令修改的文件。例如 Claude Code 运行 rm file.txt、mv old.txt new.txt、cp source.txt dest.txt,这些文件修改无法通过回退撤销。只有通过 Claude 文件编辑工具做的直接文件编辑才被追踪。
子智能体的编辑不被还原:子智能体用 Claude 的文件编辑工具做编辑,但 Claude Code 通常不会把这些编辑捕获进你会话的检查点。回退是否还原它们取决于子智能体如何运行:前台运行的 context: fork Skill 在你自己的回合里编辑工作树,所以回退照常还原它的编辑;任何其他子智能体(包括默认在后台运行的 forked Skill),回退不会还原其编辑,要用 git 来撤销。
外部改动不被追踪:检查点只追踪当前会话里被编辑过的文件。你在 Claude Code 之外对文件做的手动改动,以及其他并发会话的编辑,通常不会被捕获(除非它们恰好修改了与当前会话相同的文件)。
会话中途发送的消息没有检查点:你在 Claude 工作时排队的消息,在运行中的回合内到达 Claude 时会并入那个回合,而不是开启新回合;消息出现在对话里,但 Claude Code 不为它创建检查点。要移除这样的消息,或撤销 Claude 在它之后做的编辑,回退到启动该回合的提示,那会回退整个回合。
符号链接和硬链接路径不被还原:检查点不回退符号链接或硬链接文件。当你从 /rewind 菜单选 Restore code 或 Restore code and conversation 时,Claude Code 跳过任何已追踪的、是符号链接或硬链接的路径,并显示 Restored the code, but skipped N files 警告。
不能替代版本控制:检查点是为快速的会话级恢复设计的。永久的版本历史和协作,请继续使用 Git 这样的版本控制来做提交、分支和长期历史。