Checkpointing 是 Claude Code 的自动保存机制:每次你发送提示,它都会拍一张代码快照,保存 30 天。后悔时按两次 Esc 或输入 /rewind,就能在回滚菜单里选择只恢复代码、只恢复对话、或者同时恢复两者;还能从某个节点压缩对话释放上下文空间。注意,Bash 命令改动的文件无法回滚,重要变更还是要用 Git 归档。

Claude Code Checkpointing 检查点:自动追踪编辑与回滚代码对话

Claude Code 会自动追踪文件编辑,让你能随时撤销更改、回到之前的代码或对话状态。

工作原理

Checkpointing 会在每次编辑前自动保存代码快照。这个安全网让你敢让 Claude 做大量改动,就算出错也能快速恢复。

自动追踪

  • 每个用户提示都会生成一个检查点
  • 检查点跨会话保留,在恢复(/resume)的对话中仍然可访问
  • 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 后,选中消息的原始提示会恢复到输入框,方便你重新发送或编辑。

选择 Summarize up to here 后,会停留在对话末尾,输入框为空。

Restore 与 Summarize 的区别

Restore 是回退状态:撤销代码变更、对话历史,或两者都撤销。Summarize 是将部分对话压缩成 AI 生成的摘要,不修改磁盘上的文件:

  • Summarize from here:保留选中消息之前的消息。选中消息及其之后的消息被替换为摘要。适合丢弃某个旁支讨论,同时保留早期完整上下文。
  • Summarize up to here:将选中消息之前的消息替换为摘要。选中消息及其之后的消息保持完整,你仍处于对话末尾。适合压缩早期的设置讨论,同时保留近期工作的完整细节。

两种情况下原始消息都会保留在会话记录中,Claude 可以在需要时引用细节。你可以输入可选指令,引导摘要关注哪些重点。这个机制类似 /compact,但更精确:不是压缩整个对话,而是选择在选中消息的哪一侧压缩。

Summarize 保留当前会话并压缩上下文。如果你想保留原始会话不变、另开分支尝试不同方案,请使用 forkclaude --continue --fork-session)。

典型场景

  • 探索不同方案:从同一出发点尝试多种实现,不满意就回滚。
  • 从错误中恢复:快速撤销引入 Bug 或破坏功能的改动。
  • 迭代功能:大胆实验变体,知道随时能回到有效状态。
  • 释放上下文空间:在冗长的调试对话中从中间位置压缩,保留初始指令完整。

限制说明

Bash 命令修改的文件不追踪

Checkpointing 只追踪 Claude 通过文件编辑工具直接修改的文件。如果 Claude 运行了类似下面的 Bash 命令:

rm file.txt
mv old.txt new.txt
cp source.txt dest.txt

这些文件改动无法通过回滚撤销。

外部修改不追踪

只追踪当前会话内编辑过的文件。你在 Claude Code 外部手动修改的文件,或者其他并发会话的改动,一般不会被捕获(除非恰好修改了当前会话也编辑的同一文件)。

不能替代版本控制

检查点是用于会话级别的快速恢复的轻量机制。对于永久版本历史和团队协作:

  • 继续使用 Git 等版本控制工具做提交、分支和长期历史记录
  • 检查点补充版本控制,但不替代
  • 可以把检查点看作“本地撤销”,把 Git 看作“永久历史”

相关文档

常见问题

Checkpointing 和 Git 版本控制有什么区别?

检查点是 Claude Code 自动生成的代码快照,用于快速回退会话内的 AI 操作,保存 30 天后自动清理。Git 是你手动管理的长期版本历史,适合协作和永久存档。两者互补:检查点管“一时手滑”,Git 管“项目档案”。

Bash 命令改动了文件,能用 /rewind 恢复吗?

不能。Checkpointing 只记录 Claude 通过文件编辑工具直接修改的文件。如果 Claude 用 Bash 命令删了文件或移动了文件,这些改动无法通过回滚撤销。建议结合 Git 提交来保护重要修改。

检查点保存多久?能延长吗?

检查点与会话绑定,默认保存 30 天后自动清理。你可以通过配置调整清理周期(具体配置项参见 Claude Code 配置文件)。检查点存储在本地,格式化磁盘或重装系统会丢失。