跳到主要内容

检查点与回溯

进阶
What you'll learn
  • 理解检查点捕获了什么——以及它悄悄地没有捕获什么
  • 用两种方式打开回溯菜单,并每次都选对正确的恢复操作
  • 分清「恢复」(撤销状态)与「总结」(压缩上下文)
  • 确切知道为什么检查点是 Git 的补充,却永远无法取代它

核心理念

当你放手让 Claude 进行一次大胆、大规模的改动时,最令人担心的问题是「如果它在第三次编辑深处出了岔子怎么办?」**检查点(Checkpointing)**就是答案:Claude Code 会在每次编辑前自动为你的代码拍下快照,这样你就能回溯到任意更早的状态,而不必手动去理清一个半成品的重构。

把它想象成面向整个会话的本地撤销——一张让你可以放心说「好,试试那个大胆的方案」的安全网。

检查点是如何创建的

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

Guided walkthrough1 of 3
  1. 每条用户提示都会在 Claude 的文件编辑工具运行之前捕获你的代码状态。无需命令、无需配置、无需任何仪式。

打开回溯菜单

有两种进入方式:

Guided walkthrough1 of 2
  1. 在提示框中输入该斜杠命令。始终有效。

Open the rewind menu

/rewind

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

恢复 vs. 总结:关键区别

人们正是在这里犯糊涂。菜单提供两操作:

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

恢复类操作

Guided walkthrough1 of 3
  1. 将你的文件和聊天记录都还原到所选的那个点——干净利落地「把时间倒回」那一刻。

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

总结类操作

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

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

无论哪种方式,原始消息都会保留在会话的记录(transcript)里,因此 Claude 仍能引用这些细节。你可以输入可选的指令来引导摘要聚焦于什么。

关于整个流程,参见 上下文管理——/rewind 的总结操作是手术刀,而 /compact 则是大笔刷。

跨越 /clear 进行回溯

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

检查点的边界——那些会咬人的局限

检查点感觉很神奇,直到它不再神奇。有三个盲区值得注意:

Guided walkthrough1 of 3
  1. 被 Claude 运行的 shell 命令触碰的文件——rm、mv、cp、代码生成器、格式化工具——都不会被追踪。只有通过 Claude 的文件编辑工具进行的直接编辑才会被记入检查点。就回溯而言,被 rm 删除的文件就是没了。

检查点 vs. Git:两者并用

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

检查点(/rewindGit
范围单个会话整个项目历史
粒度每条提示,自动每次提交,刻意为之
追踪 bash 造成的改动?是(一旦暂存/提交)
存续期约 30 天,然后消失永久
可共享 / 协作
心智模型「本地撤销」「永久历史」
Pro tip
  • 在一次有风险的大规模运行之前,用 Git 提交可用的状态——那是你可靠的底线。
  • 在两次提交之间,用 /rewind 做快速的会话内恢复,而不污染你的 Git 历史。
  • 如果 Claude 会运行破坏性的 bash(rm/mv)或生成器,就依靠 Git——回溯救不了那些文件。

何时该动用它

Guided walkthrough1 of 4
  1. 尝试一个大胆的实现,如果不满意,就把代码与对话恢复到分岔点,再试另一个。

Check yourself

0/3
  1. Claude 通过 bash 命令运行了 `rm config.old.json`,你想把它找回来。`/rewind` 能恢复它吗?
  2. 你的代码没问题,但一段冗长的调试岔路把上下文窗口填满了。哪个操作合适?
  3. 检查点是如何创建的?
Checkpoints & rewind vocabulary
按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。
1 / 5
Key takeaways
  • 检查点是自动的、每条提示一次的代码快照——面向整个会话的本地撤销,保留约 30 天。
  • 用 /rewind 或在输入为空时双击 Esc 打开回溯菜单;它会列出你发送过的每一条提示。
  • 恢复操作撤销状态(代码、对话或两者);总结操作压缩上下文且绝不触碰文件。
  • bash 造成的、外部的以及并发的改动都不被追踪——只有直接的文件工具编辑才被追踪。
  • 检查点是 Git 的补充,而非替代:把它想成「本地撤销」对「永久、可共享的历史」。

下一步

  • 上下文管理 —— /compact/clear,以及总结如何契合更大的图景
  • 规划模式 —— 在编辑运行之前调查并批准一个计划,从而减少回溯的次数
  • 权限 —— 安全地运行大胆任务的另一半