跳转到内容

一次说错可以撤回:checkpoint 用法

📍 干活 5/10 · 上一篇:← 上下文窗口怎么算的

一个时光倒退的箭头盖在文件堆上,机器人轻微抱歉的表情

某个工作日午后,你跟 Claude Code 说:

「把这个项目的代码风格统一一下,有些地方用 camelCase 有些用 snake_case,挑一个标准全部统一。」

它非常热情:

「好的,我看了一下,你的项目大部分文件偏向 camelCase,我已经把全项目 26 个文件全部统一成了 camelCase!」

你打开 git diff,3,400 行修改

你心一沉——你早上刚跟客户对齐过,这个项目要走 snake_case 才能跟他们的库对接它把方向完全做反了

如果只有 git,你接下来要:git reset + 解释为什么 staging 区里有这么多怪改动 + 担心丢掉同时段的另一组合理改动…

Checkpoint 就是为这一刻而生:按两下 Esc,回到改之前,不影响其他东西。

灾难场景,机器人手悬在空中

简单粗暴:Claude Code 每次动你的文件之前,自动存一个快照

这个快照:

  • ✅ 记录了所有被改文件的「改前」内容
  • ✅ 不污染你的 git 历史(完全独立)
  • ✅ 跟着会话保留(直到超过保留期被清理)
  • ✅ 打开回滚菜单,选一下就能跳回去

⚠️ 但有一条必须先知道的边界:快照只保文件编辑。它跑的命令造成的后果——rm 删掉的文件、git 操作、装进系统的软件——不在快照里,回滚救不回。这也是后面「坑 0」要单独讲的。

自动存档时间线

类比一下:

  • Checkpoint = 游戏存档点 — 死了能读档,不用从头开始
  • Git commit 是给团队看的「正式版本」(整理过、配 message)
  • Checkpoint 是给你和 AI 之间的「小灶」(自动、密集、随便丢)

重点区别:Git 是你手动commit;Checkpoint 是 Claude 自动存,你不用想着保存

两个入口,效果一样:

  • 连按两下 Esc(最快,建议练成肌肉记忆)
  • 输入 /rewind(它有两个别名:/checkpoint/undo,打哪个都行)

打开后是一个交互式菜单:你们这段对话的历史消息一条条列出来,每一条就是一个可以回去的节点

checkpoint 列表的 UI 卡片样式

用方向键挑中你想回到的那个时间点——比如「它开始大改之前、你说那句话的时刻」。

选中节点后,菜单会问你恢复什么,三个选项:

选项效果什么时候用
只恢复代码(Restore code)文件回到那时,对话记录保留改坏了,但想让它记得刚才聊过什么
只恢复对话(Restore conversation)对话回到那时,文件保持现状文件没问题,只想「收回」后面说的话
两个都恢复(Restore both)文件 + 对话一起回去整段方向都错了,彻底重来

选完回车,瞬间还原。菜单上能看到受影响的范围;想看具体哪几行变了,用 git diff 最清楚。

⚠️ 关键提醒:回滚是累积的——回到某个节点,等于把那之后的所有改动一起撤掉,不能只挑着撤中间某一组。想精细挑选,那是 git cherry-pick 的活,checkpoint 做不到。

高风险操作前,先钉一个安全点

Section titled “高风险操作前,先钉一个安全点”

手往时间线插一面小旗,标记安全点

自动快照跟着它的每次编辑走。但接下来要干的事风险特别高的时候(大重构、bypass 模式跑大任务、周五下班前),多给自己留一层保险——让它先提交一个 git 安全点:

「先 git commit 一下当前状态,message 写 before-refactor-api,然后再开始改。」

这样哪怕 checkpoint 过期、会话丢了,git 里永远有一个你亲手钉住的版本

场景为什么要钉安全点
准备让 AI 大刀阔斧重构一旦方向错,要能秒退
已经跑通了一个 demo,想试新方案试新方案前先存「已知能跑」的版本
准备让它 bypass 模式跑大任务给自己留个底牌
周五下班前周一回来如果方向乱了,周五的版本随时回

一句话:Checkpoint 不替代 Git,Git 也不替代 Checkpoint

用 Checkpoint 处理:

  • 跟 AI 的密集试错(它改 → 你看 → 不对再回滚 → 它再改)
  • 不想污染 git 历史的零碎改动
  • 当天的回退需求

用 Git 处理:

  • 正式发布的版本(打 tag、做 release)
  • 团队协作的版本(同步给别人 / pull request)
  • 跨周 / 跨月的回退

最佳节奏:

  1. 早上git pull 拿最新代码
  2. 白天用 Claude Code 改,全程靠 checkpoint 来回试
  3. 改顺了,手动 git add + git commit 给团队
  4. 第二天重新走一遍

❌ 坑 0(最重要):以为它啥都能撤——命令的后果救不回

Section titled “❌ 坑 0(最重要):以为它啥都能撤——命令的后果救不回”

checkpoint 只给文件编辑拍快照。它跑 rm 删掉的文件、git push 出去的提交、装进系统的软件包,都不在快照里——回滚回不来。

修正:高危命令(删除、推送、装卸软件)通过之前多看一眼;真要试险,先让它 git commit 一个安全点。

❌ 坑 1:不知道 checkpoint 存在,出了事傻乎乎用 git

Section titled “❌ 坑 1:不知道 checkpoint 存在,出了事傻乎乎用 git”

新手第一次撞上「AI 改坏了」,第一反应是:

  • git status 看一堆乱七八糟的修改
  • git reset --hard 强行撤回(可能误伤其他改动)
  • git stash 然后再 stash pop

修正:装好 Claude Code 第一周,就把「Esc Esc 打开回滚菜单」练成本能。出事第一件事,先打开菜单看有哪些节点能回。

❌ 坑 2:回滚出好版本后,不钉进 git

Section titled “❌ 坑 2:回滚出好版本后,不钉进 git”

回滚回到的「好版本」还只躺在工作区。接着又让 AI 折腾几轮、或 checkpoint 过期,你可能再也回不到这个点。

修正:回滚完确认没问题,立刻 git add + git commit——把好版本钉到 git 历史里,才算真正落袋。

❌ 坑 3:依赖 checkpoint 当唯一备份

Section titled “❌ 坑 3:依赖 checkpoint 当唯一备份”

checkpoint 是本地的有保留期的Claude Code 进程相关的——

  • 换电脑:checkpoint 不跟你走
  • 保留期超了:checkpoint 可能被自动清理
  • Claude Code 重装 / 升级:checkpoint 不一定保留

修正:长期 backup 还是要 git。Checkpoint 是「临时撤销键」,不是替代品

假设你跟 Claude Code 这样一段对话:

你: 把全项目代码风格统一成 camelCase。
AI: 好的,已修改 26 个文件。
你: (git diff 扫了一眼)完蛋,客户那边要 snake_case,撤回。
你: (按两下 Esc,回滚菜单弹出)
你: (选中「统一 camelCase」之前的那条消息 → 选「只恢复代码」→ 回车)
AI: ✓ 已还原到该节点。
你: 把全项目代码风格统一成 snake_case 而不是 camelCase。
AI: 好的,已修改 26 个文件。
你: (git diff 再扫一眼)好,这次对了。
你: git add . && git commit -m "unify code style to snake_case"

整个过程不到 10 分钟,没有污染 git 历史,也没有损失任何代码

这就是 checkpoint 的真实价值——让你敢让 AI 大胆改

读完这一篇你应该记住 4 件事:Esc Esc 打开回滚菜单、三种恢复选项怎么选、命令的后果救不回、好版本要钉进 git

接下来:

出错怎么办:常见报错排雷大全 —— 8 个最常见报错的「症状 → 原因 → 修复」速查

怎么省钱:成本控制实战 —— 4 个手法把 Claude Code 月费砍到三十块

想第一时间收到,可以收藏 niuxue.org 主页。


如果你跟 AI 之间发生过最戏剧的 checkpoint 回滚,告诉我们 hi@niuxue.org,优秀案例会精选放上来。