Skip to content

检查点与回溯(/rewind)

Claude Code 自动记录每次文件编辑前的代码状态,通过 /rewind(或空输入时连按两次 Esc)可回溯代码、对话或两者,并支持对会话做定向压缩总结。

对你意味着什么

你 bypassPermissions、改动飞快——checkpoint 就是你最主要的"后悔药":每条 prompt 自动建检查点,改坏了能回。

想干什么怎么做
回退代码/对话/两者双击 Esc/rewind,菜单选 Restore code / conversation / both
从某轮重新摘要继续/rewind 选 Summarize from/up to here
大胆试风险方案先记住能 /rewind,放手改
跨会话分叉claude --continue --fork-session

注意边界:Bash 的 rm/mv/cp 等不被 checkpoint 追踪(只追踪 Claude 的文件编辑工具)。你那些真正危险的删除/移动还是得靠 hook 或 git 兜底,别指望 /rewind 撤回。


官方文档要点

以下为按官方文档整理的系统性参考。

是什么

Checkpointing(检查点)是 Claude Code 的内置安全网:在你与 Claude 工作过程中,它会在每次编辑前自动捕获代码状态,让你能快速撤销改动、回到之前的状态。它支持 restore(回退代码/对话/两者)和 summarize(把会话的某一侧压缩成 AI 生成的摘要以释放上下文窗口)两类操作。官方明确定位它是"会话级的本地 undo",用来补充而非替代 Git 这类版本控制("local undo" vs "permanent history")。

怎么工作

  • 自动追踪:Claude Code 追踪它的文件编辑工具(file editing tools)所做的全部改动;每一条用户 prompt 都会创建一个新的 checkpoint。
  • 跨会话持久化:checkpoint 在会话之间保留,恢复(resumed)对话时仍可访问。
  • 自动清理:checkpoint 随会话在 30 天后被自动清理(30 days,可配置 configurable)。
  • 打开回溯菜单:运行 /rewind,或在输入框为空时连按两次 Esc(press Esc twice)即可打开 rewind 菜单。
  • Esc 行为分支:若输入框中已有文字,连按两次 Esc 会清空文字而不是打开菜单;被清空的文字会存入 input history,之后按 Up 可召回。
  • 菜单列出本次会话发送过的每条 prompt,选中某点后可选 6 个动作之一。
  • Restore 是回退状态(撤销代码/对话历史/两者);Summarize 是把对话的一侧压缩成 AI 生成的摘要,不改动磁盘文件。
  • Restore conversation 或 Summarize from here 之后,所选消息的原始 prompt 会被还原到输入框,便于重发或编辑;Summarize up to here 之后停在对话末尾且输入框为空。
  • Summarize 后原始消息仍保留在 session transcript 中,Claude 需要时仍可引用细节;可输入可选指令来引导摘要聚焦点。

怎么配置 / 用法

触发方式(无需配置文件即可用):

  • 命令:/rewind
  • 快捷键:输入框为空时连按两次 Esc(输入框有文字时 Esc Esc 改为清空文字,文字进 input history,按 Up 召回)

rewind 菜单中的 6 个动作:

  • Restore code and conversation:同时回退代码与对话到该点
  • Restore conversation:回退到该消息,但保留当前代码
  • Restore code:回退文件改动,但保留对话
  • Summarize from here:把所选消息及其之后的内容压成摘要(之前的消息保持完整)
  • Summarize up to here:把所选消息之前的内容压成摘要(所选消息及之后保持完整,并停在对话末尾)
  • Never mind:返回消息列表,不做任何改动

保留期:随会话 30 天后自动清理,可配置(configurable)。

需要"另起分支试不同方案、且保留原会话不变"时,用 fork 而非 summarize:claude --continue --fork-session

什么时候用

  • 探索替代方案(Exploring alternatives):尝试不同实现而不丢失起点。
  • 从错误中恢复(Recovering from mistakes):快速撤销引入 bug 或破坏功能的改动。
  • 迭代功能(Iterating on features):在可随时回退到可用状态的前提下试验各种变体。
  • 释放上下文空间(Freeing context space):从中点往后压缩冗长的调试会话,同时保留最初的指令。
  • 别用它替代版本控制:永久历史与协作仍用 Git(commit/branch/长期历史)。
  • 想保留原会话、另开分支试新思路时别用 summarize,改用 fork(claude --continue --fork-session)。

限制 / 坑

  • 不追踪 bash 命令造成的文件改动:例如 Claude Code 运行 rm file.txt / mv old.txt new.txt / cp source.txt dest.txt 这类,无法通过 rewind 撤销;只有通过 Claude 文件编辑工具直接做的编辑才被追踪。
  • 不追踪外部改动:只追踪当前会话内编辑过的文件;你在 Claude Code 之外手动改文件、或其他并发会话的编辑,通常不会被捕获——除非它们恰好改到了当前会话编辑的同一批文件。
  • 不是版本控制的替代品:checkpoint 面向快速的会话级恢复,定位为 'local undo',Git 才是 'permanent history',两者互补但不互相取代。
  • 输入框有文字时连按两次 Esc 不会打开菜单,而是清空文字(需注意这一行为分支)。
  • 保留期有限:checkpoint 随会话在 30 天后被自动清理。

硬事实速查(17 条)

  • 命令:/rewind 打开 rewind 菜单。
  • 快捷键:输入框为空时连按两次 Esc(press Esc twice)打开菜单。
  • 输入框有文字时 Esc Esc = 清空文字,文字存入 input history,按 Up 召回。
  • 触发粒度:每一条用户 prompt 创建一个新 checkpoint(Every user prompt creates a new checkpoint)。
  • 追踪范围:仅追踪 Claude 的 file editing tools 所做的直接编辑。
  • 持久化:checkpoint 跨会话保留,可在 resumed 对话中访问。
  • 保留期:随会话 30 天(30 days)后自动清理,可配置(configurable)。
  • 菜单 6 动作:Restore code and conversation / Restore conversation / Restore code / Summarize from here / Summarize up to here / Never mind。
  • Summarize from here:所选消息及其之后 → 替换为摘要;之前消息保持完整。
  • Summarize up to here:所选消息之前 → 替换为摘要;所选消息及之后保持完整,停在对话末尾、输入框为空。
  • Restore conversation 或 Summarize from here 后,所选消息原始 prompt 还原到输入框。
  • Summarize 后原始消息仍保留在 session transcript 中,可被 Claude 引用;支持输入可选指令引导摘要聚焦。
  • Summarize 类比 /compact,但是定向(targeted):可选择压缩所选消息的哪一侧,而非压缩整段对话。
  • bash 命令改动不可撤销,示例:rm file.txtmv old.txt new.txtcp source.txt dest.txt
  • 外部/并发会话的改动通常不被捕获,除非改到当前会话编辑的同一批文件。
  • 分支替代方案:claude --continue --fork-session(fork,保留原会话不变)。
  • 定位:checkpoints = 'local undo',Git = 'permanent history',互补不替代。

官方出处:https://code.claude.com/docs/en/checkpointing