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 保留当前会话并压缩上下文。如果你想保留原始会话不变、另开分支尝试不同方案,请使用 fork(
claude --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 配置文件)。检查点存储在本地,格式化磁盘或重装系统会丢失。