Skip to content

Checkpointing 是 Claude Code 的自动存档机制——每次你提交提示词,Claude Code 都会创建一个包含当时代码状态的检查点,保存 30 天。后悔了?按两次 Esc 或输入 /rewind 弹出时间线,可以选择只回滚代码、只回滚对话,或同时回滚两者。也可以从任意历史节点重新分叉、或压缩上下文继续。核心价值:让你敢于让 Claude 大胆尝试,知道随时可以安全回退。

Checkpointing:追踪、回滚和压缩会话状态

Claude Code 会自动追踪每次文件编辑,随时可以撤销改动、回到之前的状态。

工作原理

自动记录:每次你提交提示词,Claude Code 就创建一个检查点,保存当时的代码状态。

特点:

  • 记录所有通过 Claude 文件编辑工具做的改动
  • 跨会话持久化,恢复(/resume)后仍然可以访问
  • 30 天后自动清理(可配置)

如何使用 Rewind

触发方式:

  • 按两次 EscEsc + Esc
  • 输入 /rewind 命令

会弹出一个可滚动列表,显示当前会话的所有提示词记录。选择想要操作的节点,然后选择操作:

操作效果
Restore code and conversation代码和对话都回滚到该节点
Restore conversation只回滚对话,保留当前代码
Restore code只回滚文件改动,保留对话
Summarize from here从该节点开始压缩对话,释放上下文空间
Never mind取消,返回消息列表

回滚后,选中节点的原始提示词会恢复到输入框,可以直接重新发送或修改。

Restore vs Summarize 的区别

Restore(三种还原选项):真正回退状态,撤销代码改动或对话历史,或两者都撤销。

Summarize from here

  • 选中节点之前的消息原样保留
  • 选中节点及其后续消息被替换为 AI 生成的摘要
  • 磁盘上的文件不变
  • 原始消息保留在会话记录里(Claude 需要时可以参考细节)

Summarize 和 /compact 的区别:/compact 压缩整个对话,而 Summarize 可以精确指定从哪条消息开始压缩,保留早期的完整上下文,只压缩用空间的部分。压缩时可以加指令说明保留什么重点。

想保留当前会话完整状态、同时尝试不同方向?用 Forkclaude --continue --fork-session,而不是 Summarize。


典型应用场景

探索不同实现方案:多种方案都可以从同一起点试,不满意就回滚。

从错误中恢复:引入 bug 或破坏功能时,立即回滚到正常状态。

迭代功能实现:实验不同变体,知道随时可以回到有效状态。

释放上下文空间:在一次冗长的 debug 会话中间压缩,保留最初的指令完整,压缩中间过程。


限制说明

Bash 命令产生的文件改动不追踪

Checkpointing 只追踪 Claude 通过文件编辑工具做的改动。如果 Claude 运行了这样的 Bash 命令:

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

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

外部改动不追踪

只追踪当前会话内的文件编辑。你手动在外部做的改动,或其他并发会话的改动,通常不被捕获(除非恰好修改了相同文件)。

不替代版本控制

Checkpoints 是会话级别的快速恢复工具,不是版本历史:

  • Git:永久历史、分支管理、团队协作 → 继续正常使用
  • Checkpoints:本次会话内的"本地撤销"

两者互补,共同使用。


相关文档

常见问题

Q: Checkpointing 和 Git 有什么区别?

A: Git 是你手动提交的版本控制,Checkpointing 是 Claude Code 自动记录的每次 AI 操作快照。两者互补:Checkpointing 帮你回退 AI 的修改,Git 帮你管理项目版本。

Q: /rewind 回滚后原来的代码能找回来吗?

A: Checkpointing 只记录前向历史,回滚到某个检查点后,之后的检查点分支仍保存 30 天。你可以重新进入 /rewind 选择"更新"的检查点来找回被撤销的内容。

Q: 检查点存在哪里?电脑格式化后还有吗?

A: 检查点存储在本地 Claude Code 数据目录(与会话数据相同位置),30 天后自动清理。格式化系统盘会丢失,建议重要变更仍要通过 Git 提交保存。