跳转到内容

检查点 Checkpointing

让 AI 改代码,最大的恐惧是什么?是它改错了,你不知道改了什么、回不去。

Checkpointing 就是治这个的。它是你的「时光机」——自动追踪每次文件编辑,让你随时能回到过去某个时刻。也是你的「安全绳」——攀岩时失手,绳子上挂着,掉不下去。

最让人安心的一点:Checkpointing 是全自动的。你不用手动「保存检查点」,Claude Code 在编辑文件时会自动记录每次改动。

打个比方:就像文档编辑器里的「版本历史」,你每改一下它都悄悄存一份快照。区别是,这里的快照不只记文件内容,还记对话到哪了——所以你能连对话带代码一起回退。

核心命令是 /rewind。打 /rewind 后,Claude Code 会让你选回退什么

选项 回退什么
对话 把对话回退到某个点,代码不动
代码 把文件回退到某个检查点,对话不动
两者都 对话和代码一起回到那个时刻

这给了你三种粒度:

  • 只回代码:适合「Claude 改的代码我想丢掉,但前面的讨论还有用」。代码回退,对话保留,你可以在讨论基础上换条路走。
  • 只回对话:适合「前面聊歪了想重来,但代码改动我满意」。对话清掉,代码留着。
  • 都回:彻底回到那个时刻,干干净净重新来。

不想打 /rewind 那么长?有个快捷键:连按两次 Esc

Esc Esc

这是最常用的回退姿势——Claude 刚改完一段代码,你扫一眼觉得不对劲,啪啪两下 Esc,就回到了改之前。比任何版本控制操作都快。

这个快捷键的妙处在于「即时」:你不用想「该不该 git stash」,不用切到终端打命令,眼疾手快两下就回来了。等你确认改对了再继续。

为什么叫「安全绳」?想想攀岩:

  • 没有 Checkpointing,让 AI 改代码像徒手攀岩——一步走错,摔下去代码就乱了,你不知道怎么恢复。
  • 有了 Checkpointing,像系了安全绳——你可以放心往上爬,失手时绳子拽住你,回到上一个保护点。

这改变了你和 AI 协作的心态。没有安全绳时,你每次让 Claude 改代码都提心吊胆、小心翼翼;有了安全绳,你敢于让它大胆尝试——反正能回退。Checkpointing 让「敢试」成为可能

这是 Checkpointing 最被低估的用法:多方案探索

假设你要实现一个功能,拿不准用方案 A(直接改)还是方案 B(先抽象再改)。传统做法是选一个赌一把,赌错了得手动回退。

有了 Checkpointing,你可以:

  1. 让 Claude 走方案 A,改完看效果
  2. /rewind 回到改之前
  3. 让 Claude 走方案 B,改完看效果
  4. 对比两版,选更好的留下

就像游戏里的「存档点」——你在关键岔路口存个档,每条路都试走一段,不满意的读档重来。这种「低成本试错」是 Checkpointing 带来的最大价值,远不止「改错了能撤销」。

有人会问:这不就是 Git 吗?我 git stash 不也行?

相似,但有关键区别:

维度 Git Checkpointing
触发 手动 commit/stash 自动追踪
粒度 你决定提交点 每次编辑都记
对话 不记对话 对话一起记
回退 只回代码 代码/对话/两者都可选
速度 要打几条命令 Esc Esc 两下

Checkpointing 不是替代 Git,而是补充 Git 的缝隙——你在两次 commit 之间的探索过程,它帮你记着。最终你还是要用 Git commit 来固化成果,但中间的试错过程,Checkpointing 兜着。

重构一个复杂函数时,最经典的工作流:

(你让 Claude 用方案 A 重构)
> 重构这个函数,把回调改成 async/await
(Claude 改完,你扫一眼觉得嵌套太深)
Esc Esc ← 回到改之前
> 重构这个函数,把回调拆成多个小函数
(Claude 改完,这次更清爽)

两次尝试,零成本对比。如果没有 Checkpointing,第一次改完你得手动 git checkout 恢复,还要清掉对话里的痕迹,麻烦得多。

Checkpointing 不是无限远的时光机。它记的是当前会话内的编辑历史。会话结束后,检查点就清了——长期版本管理还是 Git 的活。

所以一个习惯:重大改动用 Git commit 固化,探索过程用 Checkpointing 兜底。两者配合,既敢试又不丢。

Checkpointing 是时光机和安全绳——自动追踪每次编辑,/rewind 回退对话和/或代码,Esc Esc 两下回到过去。最香的用法是多方案探索:A 路试完回退试 B 路,低成本对比选最优。


下一站,去 设置 Settings 搞清楚配置的层级和优先级。🚀