Checkpoints:给 Claude Code 装个后悔药
用 Claude Code 写代码,最崩溃的不是写不出来,是写崩了回不去。这篇聊聊我怎么从"每次改炸了就 /clear 重来"进化到"用 Checkpoints 秒回滚"的。
Summary: 用 Claude Code 写代码,最崩溃的不是写不出来,是写崩了回不去。这篇聊聊我怎么从"每次改炸了就 /clear 重来"进化到"用 Checkpoints 秒回滚"的。
我第一次意识到"回滚"有多重要,是在一次深夜重构。
当时在改一个支付回调的处理逻辑,改到一半发现越改越乱。我想退回到二十分钟前的版本,但是——
没有版本控制,没有快照,什么都没有。
Claude Code 的对话是线性的。你往前翻,能看到所有历史,但是你不能一键回到某个时间点的状态。往上翻聊天记录截图给 Claude 看?它只会说"让我看看这段代码"然后继续在当前上下文里发挥。
那天晚上我 /clear 了三次。最后一次 /clear 之后,我看着空白的对话窗口,突然觉得:我为什么不先 git commit 一下呢?
但 git commit 解决不了一个问题:Claude Code 的对话状态本身没有版本控制。你 /clear 之后,之前讨论的方案、生成的代码片段、调试的中间结论——全没了。
后来我才发现,Claude Code 有 Checkpoints。
什么是 Checkpoints
简单说,Checkpoints 是 Claude Code 对话状态的快照。
你可以随时创建一个 checkpoint,相当于给当前 session 拍了一张"存档"。之后不管你怎么改、怎么崩,都可以一键回滚到这个存档点。
这个功能藏得比较深,很多人用了一两个月都不知道它的存在。
它的工作方式很像 Git 的 commit,但是针对的是对话状态:上下文、生成的代码、Claude 对你的项目的理解程度——所有这些都被打包进一个 checkpoint 里。
具体怎么用
创建 checkpoint
在 Claude Code 里,创建 checkpoint 很简单:
/checkpoint create 重构支付回调前
这行命令会创建一个名为"重构支付回调前"的 checkpoint。Claude 会回复说"Checkpoint 已创建"。
查看所有 checkpoints
/checkpoint list
你会看到类似这样的输出:
Checkpoints:
1. 重构支付回调前 (2026-06-23 14:32)
2. 修复订单超时问题后 (2026-06-23 10:15)
3. 初始状态 (2026-06-23 09:00)
回滚到某个 checkpoint
/checkpoint restore 1
这条命令会把当前 session 恢复到"重构支付回调前"那个状态。上下文、生成的代码、所有中间结论——全部回到 checkpoint 创建时的样子。
我第一次用的时候,看着 Claude 恢复到之前的代码状态,整个人都放松了。那种感觉很像你在玩塞尔达传说,终于找到了一个可以回血的神庙。
删除不需要的 checkpoint
/checkpoint delete 2
清理掉没用的存档,保持列表整洁。
我常用的 workflow
改代码前的"安全点"
现在我的习惯是:每次要做比较大的改动之前,先创建一个 checkpoint。
/checkpoint create 改之前
然后放心大胆地改。改崩了没关系,/checkpoint restore 回来。
这跟我写代码前 git commit 的习惯一模一样。只不过 git 管的是代码文件,checkpoint 管的是整个对话状态。
多方案对比
有时候我对同一个问题有两个方案,不确定哪个更好。
我会先创建 checkpoint A,按方案一聊一轮。然后创建 checkpoint B,回到 A,按方案二聊一轮。
对比完两个方案的结果,直接选最好的那个继续。中间过程不需要 /clear,也不需要重新对齐上下文。
这比"在两个 session 里分别试"效率高多了。因为两个方案共用同一个代码库上下文,Claude 对项目的理解是连续的。
配合 /compact 使用
我之前写过 /compact 的用法。Checkpoint 和 /compact 可以配合使用。
我的习惯是:每个阶段做完,先 /compact 压缩上下文,然后创建一个 checkpoint。这样既省 token,又保留了状态回溯的能力。
如果之后需要回滚,回滚到 checkpoint 之后发现上下文太短,再手动补充关键信息就行。
Tricks
Trick 1:用命名约定组织 checkpoints
不要用默认的编号命名,也不要写太随意。
我给自己定了个规矩:checkpoint 的命名要能回答"这个状态是什么"这个问题。
好的命名:
/checkpoint create 重构前-订单模块通过所有测试
/checkpoint create 修复后-支付回调超时问题已解决
/checkpoint create 实验性-尝试用消息队列异步处理
坏的命名:
/checkpoint create 1
/checkpoint create 测试
/checkpoint create 123
以后你 checkpoint list 的时候,好的命名能让你一眼看出来每个存档代表什么。
Trick 2:在关键决策点强制创建 checkpoint
不是只有大改动前才需要 checkpoint。
每次你让 Claude 做了一个"不可逆"的动作之后,都应该创建一个 checkpoint。比如:
- Claude 修改了一个核心配置文件
- Claude 执行了一个数据库迁移脚本
- Claude 删除了一批文件
这些操作做完之后,先创建 checkpoint,再继续下一步。万一下一步出了问题,你能准确回滚到"修改前"、"迁移前"、"删除前"。
Trick 3:checkpoint 和 git commit 配合使用
最稳的 workflow 是两者结合:
git commit保存代码状态/checkpoint create保存对话状态
代码和对话都有版本控制。之后不管出什么问题,你都能回到任何一个时间点。
我现在的习惯是:每完成一个功能点,先 git commit,再创建 checkpoint。两步加起来十秒钟,但是能省掉后面数小时的痛苦。
注意事项 / 踩坑
坑一:checkpoint 不会自动创建
这是最大的坑。
很多新人以为 Claude Code 会自动保存对话状态,就像 IDE 会自动保存文件一样。不会。
Checkpoint 需要你手动创建。如果你忘了创建,改崩了就只能 /clear 重来。
我给自己定了个规矩:只要对话进入"执行"阶段(Claude 开始改代码),就必须先创建 checkpoint。不创建就不让 Claude 动手。
坑二:checkpoint 的大小有限制
一个 checkpoint 包含整个对话上下文。如果你的 session 已经用了很多 token,创建 checkpoint 会占用不少空间。
Claude Code 对 checkpoint 的总数有限制。默认情况下,你最多保留 20 个 checkpoint。超过之后,最早的会被自动删除。
如果你经常用 checkpoint,记得定期清理不需要的存档。
/checkpoint list # 看看哪些不需要了
/checkpoint delete 3 # 删掉
坑三:回滚后 Claude 的"记忆"可能不准
回滚到某个 checkpoint 之后,Claude 的对话状态回到了那个时间点。但是,磁盘上的文件已经被你改过了。
这时候 Claude 可能会发现"代码库跟它记忆中的不一样"。
典型场景:
- 你创建了 checkpoint A
- Claude 基于 A 的状态改了三个文件
- 你回滚到 A
- 磁盘上的三个文件还是修改后的版本,但 Claude 以为它们没被改过
这时候需要让 Claude 重新读一遍代码库,或者手动把文件恢复到 checkpoint 对应的时间点。
我一般会在回滚之后说一句"重新读取当前代码状态",让 Claude 重新同步磁盘和内存。
坑四:不要在多人协作的 session 里滥用 checkpoint
Checkpoint 是你个人的存档。如果你在一个共享 session 里工作(比如 Claude Code 的 team 模式),你的 checkpoint 回滚会影响其他人的对话状态。
目前来看,团队模式下的 checkpoint 行为还不太稳定。如果多人同时在一个 session 里工作,回滚你的 checkpoint 可能会导致其他人的上下文丢失。
我的建议:多人协作时,尽量用 git + 代码评审来管理状态,不要依赖 checkpoint。
一个反直觉的事实
很长一段时间里,我以为"专业开发者"的标志是写代码快、不犯错。
后来我才明白:真正的区别在于出错之后的恢复速度。
一个不会回滚的开发者,改崩了只能硬着头皮继续,或者 /clear 重来。一个会用 checkpoint 的开发者,改崩了一秒回滚,再试一次方案二。
Checkpoint 给我的不是"不犯错"的能力,而是"犯错成本几乎为零"的自由。
这种自由带来的改变是:我敢尝试更大胆的方案,敢在不确定的时候多走几条路,敢让 Claude 做一些"可能不行"的尝试。
因为我知道,不行就回滚。
/claude、/compact、Checkpoints 这三个功能放在一起,构成了 Claude Code 的"状态管理铁三角"。
/claude 解决"怎么跟 Claude 说清楚"的问题。
/compact 解决"说清楚之后怎么保持"的问题。
Checkpoints 解决"保持不住的时候怎么回滚"的问题。
好,今天聊到这儿。接下来聊聊 Skills——按需加载的知识包,怎么让 Claude Code 变成你的专属专家。
Published: https://betterpursue.blogspot.com/2026/06/checkpoints.html
评论
发表评论