跳到主要内容

检查点与回溯

进阶
What you'll learn
  • 理解检查点会记录什么——以及它悄悄不会记录什么
  • 用两种方式打开回溯菜单,并每次都选对恢复操作
  • 区分“恢复”(撤销状态)与“总结”(压缩上下文)
  • 清楚知道检查点为何是 Git 的补充而绝不是替代

核心思想​

当你放手让 Claude 去做一项雄心勃勃的大范围改动时,最可怕的问题是“如果做到第三处编辑就出错了怎么办?”检查点(Checkpointing) 就是答案:Claude Code 会在你每次发起一轮对话之前自动为你的代码拍下快照,这样你就可以回溯到任何更早的状态,而不必手动去收拾一个做到一半的重构。

可以把它看作针对整个会话的本地撤销——一张安全网,让你可以放心地说“好,试试那个大胆的方案”。

检查点是如何创建的​

你不需要创建检查点——它们是自动产生的。

Guided walkthrough1 of 4
  1. 每个开启一轮的提示,都会在 Claude 的文件编辑工具运行之前记录下你的代码状态。无需命令,无需配置,没有任何繁琐流程。

打开回溯菜单​

有两种进入方式:

Guided walkthrough1 of 2
  1. 在提示符处输入这个斜杠命令。始终可用。/checkpoint 和 /undo 是同一条命令的别名,想到哪个名字就用哪个。

打开回溯菜单

/rewind
Watch out
  • 别名的名字比它的字面意思更亲切:/checkpoint 不会按需拍摄快照(快照是自动的),/undo 也不会自己撤销上一次编辑。三个名字打开的是同一个菜单,你仍然要在其中选择时间点和操作。

菜单会列出本次会话中你发送的每一个提示。选择你想操作的那个时间点,然后选择一个操作。

恢复与总结:关键区别​

很多人会在这里搞混。菜单提供两类操作:

  • **恢复(Restore)**操作会改变磁盘上和/或对话中的状态——它们是撤销。
  • **总结(Summarize)**操作绝不会触碰你的文件——它们把对话压缩以释放上下文窗口空间。
Watch out
  • 恢复 = 撤销(回退代码、对话,或两者)。总结 = 压缩上下文(磁盘上的文件不受影响)。
  • 编辑把东西弄坏了,就用恢复。会话变得臃肿但代码没问题,就用总结。

恢复操作​

Guided walkthrough1 of 3
  1. 把你的文件和聊天历史都回退到所选时间点——干净利落地“回到那一刻”。

两个代码恢复选项只有在所选检查点确实有可回退的已跟踪文件改动时才会出现。如果那个时间点之后没有记录到任何文件编辑,菜单就只提供恢复对话、两个总结选项,以及Never mind(返回消息列表,不做任何更改)。

恢复对话之后(或选择“从此处开始总结”之后),所选消息的原始提示会被放回输入框,方便你重新发送或修改。

总结操作​

两者都会把对话的一部分压缩成 AI 生成的摘要——就像一个有针对性的 /compact,由你选择压缩所选消息的哪一侧。

Guided walkthrough1 of 2
  1. 所选消息之前的消息保持原样。所选消息及其之后的一切都会变成摘要。适合在保留早期上下文完整细节的同时,丢弃一段旁支讨论。

无论哪种方式,原始消息都仍保留在会话记录中,所以 Claude 仍能参考其中的细节,并且在被压缩的消息原来的位置会出现一个Summarized conversation标记。若想引导摘要的侧重点,用方向键高亮某个总结选项,在显示为add context (optional) 的那一行输入指示,然后按 Enter——如果直接按数字键选择该选项,则会立即总结,不带任何指示。

完整流程请参阅上下文管理——/rewind 的总结操作是手术刀,而 /compact 是大刷子。

What you'll learn
  • 总结会让你留在同一个会话中。如果想另开分支尝试不同的方案、同时保持原会话不变,请改用 /branch 或 claude --continue --fork-session。

回溯到 /clear 之前​

如果你在同一个 Claude Code 进程中更早运行过 /clear,回溯菜单的顶部会多出一项:/resume <session-id> (previous session)。选择它即可跳回 /clear 之前的那段对话。

检查点的边界——会让你栽跟头的局限​

检查点在失灵之前都显得很神奇。这些缺口很重要:

Guided walkthrough1 of 7
  1. 跟踪是按文件进行的,只有当 Claude 用它的文件编辑工具编辑过某个文件后,该文件才会进入跟踪。一旦如此,/rewind 也会撤销之后 Bash 命令对同一文件所做的改动——格式化工具或生成器重写一个已被编辑过的文件,是可以回溯的。只有 Bash 碰过的文件不会被跟踪,会保持原样,所以 Claude 从未编辑过、却被 rm 删除的文件需要靠 Git。菜单也反映了这一点:在每个提示下方,它会统计对 Claude 已经编辑过的文件的改动,无论这些改动由什么造成。

检查点 vs. Git:两者并用​

它们解决的是不同的问题,所以要搭配使用。

检查点(/rewind)Git
范围一个会话整个项目历史
粒度每个开启一轮的提示,自动每次提交,刻意为之
跟踪 bash 造成的改动?仅限 Claude 已编辑过的文件是(一旦暂存/提交)
寿命最近 100 个检查点,会话结束后约 30 天清理永久
可共享 / 可协作否是
心智模型“本地撤销”“永久历史”
Pro tip
  • 在冒险的大范围运行之前,先用 Git 提交可工作的状态——那是你持久的底线。
  • 用 /rewind 在两次提交之间快速进行会话内恢复,而不会弄脏你的 Git 历史。
  • 对于 Claude 从不直接编辑的文件——只有破坏性的 bash(rm/mv)或后台子代理才会碰的那些——请依靠 Git。只有当 Claude 用自己的文件工具编辑过某个文件后,rewind 才会覆盖它。

何时使用​

Guided walkthrough1 of 4
  1. 尝试一个大胆的实现,如果不喜欢,就把代码和对话恢复到分叉点,再试另一条路。

自测一下

0/3
  1. Claude 从未用文件工具编辑过 `config.old.json`,随后在 bash 命令中用 `rm` 把它删除了。`/rewind` 能把它找回来吗?
  2. 你的代码没问题,但一段很长的调试岔路已经占满了上下文窗口。哪个操作合适?
  3. 检查点是如何创建的?
检查点与回溯词汇表
按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。
1 / 6
Key takeaways
  • 检查点是在每个开启一轮的提示之前自动拍下的快照——会话的本地撤销。保留最近 100 个,会话结束后约 30 天清理。
  • 用 /rewind(别名:/checkpoint、/undo)或在输入为空时连按两次 Esc 打开回溯菜单;它会列出你发送的每一个提示。
  • 恢复操作撤销状态(代码、对话,或两者);总结操作压缩上下文,绝不触碰文件。
  • 跟踪是按文件进行的,从 Claude 用文件工具编辑它时开始——此后,即使是对该文件的 Bash 改动也会被回溯。Claude 从未编辑过的文件(仅 bash、外部、并发、大多数子代理改动)不会被跟踪,符号链接或硬链接路径在 restore 时会被跳过。
  • 检查点是 Git 的补充,而不是替代:想想“本地撤销”与“永久、可共享的历史”。

下一步​

  • 上下文管理 —— /compact、/clear,以及总结如何融入更大的图景
  • 规划模式 —— 在运行编辑之前先调查并批准方案,这样你就不必那么频繁地回溯
  • 权限 —— 安全地运行大型任务的另一半