一分钟看懂
- 检查点是自动的:每条开启新回合的提示都会先给代码拍快照。无需任何设置——你只需要知道怎么回滚。
- 运行 /rewind(或输入框为空时按两次 Esc)会弹出恢复点菜单,每一项都能选:同时恢复代码和对话、只恢复对话、或只恢复代码。
- 回滚是会话级的恢复,不是版本控制:Bash 造成的副作用(rm、mv、cp)、大多数子智能体的修改、你自己手动改的内容都不在捕获范围内。git 照常提交。
- Claude Code 为每个会话保留最近 100 个检查点,保存约 30 天(可用 cleanupPeriodDays 调整)。检查点在 /resume 之后仍然存在,昨天的会话今天照样能回滚。
12 Claude Code Features Every Engineer Should Know: Subagents, CLAUDE.md, Checkpoints, MCP, and more
频道:ByteByteAI7:30
Claude Code Checkpoints Are Here (First Look)
频道:Build at Scale8:16
Checkpointing — official documentation
官方文档:code.claude.com/docs
本页的每一个恢复选项、限制和保存期限数字,都对照官方检查点文档核实过;上面的视频是画面与事实来源。
截图版权归各自创作者所有,并深链到对应时间点;未使用任何人脸镜头。
用 Claude Code 检查点回滚,一步一步来
第 1 部分 — 什么会被捕获
- 1
弄清检查点是什么
检查点是在每条开启新回合的提示之前自动拍下的代码状态快照。它存在的意义:一次失败的重构、一次下猛了 edits、一个跑偏的方向,都只隔一条命令就能撤销——不用 stash,不用 commit,没有任何仪式。

检查点的卖点:每次编辑前先快照,实验翻车了就把代码和对话一起滚回去。跳到 2:15 观看 - 2
每条开启回合的提示都会生成一个
检查点不用你手动创建——每条让 Claude 开始干活的提示都会给即将修改的文件拍快照。一段长会话会积累出一条恢复点链,一条提示对应一个,就像给仓库装的自动存档点。

编辑循环:Claude 改文件,快照落进检查点链,下一条提示开启新一轮。跳到 2:33 观看 - 3
用 /rewind 打开回滚菜单
在提示符输入 /rewind 即可列出当前会话的检查点。键盘路线更快:输入框为空时连按两次 Esc。(输入框里有文字时,双击 Esc 只会清空输入——按 ↑ 可以找回刚才输入的内容。)

在 Claude Code 提示符输入 /rewind——检查点列表直接在会话里打开。跳到 2:40 观看 - 4
选定恢复点
菜单会列出每个检查点以及创建它的提示——「把代码和/或对话恢复到……之前」。导航到出问题那一刻,按 Enter,选择要恢复什么。

恢复菜单:挑出错前的那条提示——红色高亮的条目是这个会话里更早的问题。跳到 2:45 观看
第 2 部分 — 回滚菜单
- 5
代码和对话一起恢复
完全回滚:文件回到快照状态,对话也分叉回那个时点。整个方向都错的时候用它——代码和 Claude 对任务的记忆一起重置。
- 6
只恢复代码——保留对话
只恢复代码会把文件回滚,对话停在原地。完美对应「思路是对的,结果是错的」:Claude 记得你们讨论过的一切,只有那些坏掉的修改消失了。
- 7
只恢复对话——让聊天分叉
第三个选项把对话回退到较早的时点,文件纹丝不动——就是检查点出现之前 double-Esc 的分叉行为。代码没问题、只是讨论钻进死胡同的时候用它。
- 8
不回滚,改为从这里总结
菜单里还有「Summarize from here」和「Summarize up to here」——一种精准版的 /compact,把对话中的一段压缩成摘要,同时保留你的初始指令。真正要分叉就用 /branch 或 claude --continue --fork-session。
第 3 部分 — 限制与 git 习惯
- 9
知道回滚救不了什么
检查点追踪的是 Claude 做出的文件编辑,而不是所有事情:通过 Bash 做的改动(rm、mv、cp)、大多数子智能体的修改、你自己的手动修改、其他会话的变更都不在捕获范围。符号链接会被跳过——恢复时会提示「Restored the code, but skipped N files」。
- 10
检查点与 git:分工协作
检查点负责快速的会话级恢复:撤销这条提示、换个思路重试。git 负责永久历史:提交能用的状态、开分支、推送。推荐的节奏是:探索时放心回滚,值得保留的改动郑重提交。
- 11
留心保存期限
Claude Code 为每个会话保留最近 100 个检查点,并在大约 30 天后清扫旧快照——和会话记录用的是同一个 cleanupPeriodDays 设置。想让 /rewind 和 /resume 够到更早,就在 settings.json 里把期限调长。
检查点 vs git vs /branch vs double-Esc vs /compact
Claude Code 给了你五种「回去」的方式——它们解决的问题各不相同:
- 1检查点(/rewind)——即时、自动、会话级:把代码、对话或两者撤销到任意提示边界。零配置,不永久,不共享。
- 2git——真正的历史:工作值得保留时由你做出的显式提交。检查点永远替代不了它,而是排在安全链条的前一环。
- 3/branch 和 --fork-session——不碰文件,从当前对话开一条并行时间线。想探索另一条路又想保留两条线的时候用。
- 4double-Esc——输入框为空时通往同一个回滚菜单的键盘路径;有文字时只会清空输入(历史里还在,按 ↑ 找回)。
- 5/compact 和「Summarize from here」——不是在时间里移动,而是把对话压缩:拿细节换上下文空间,决定保留。
一个简单的心智模型:失误用回滚,进展用 git,分叉用 fork,腾地方用 summarize。
回滚没达到预期?
检查点四个常见的意外,以及各自的应对:
- 1「No files were restored」。快照已被清扫——超过了 100 个检查点的上限,或者约 30 天的保存期已过。想让尾巴留得更长,就把 settings.json 里的 cleanupPeriodDays 调大。
- 2「Restored the code, but skipped N files」。符号链接和硬链接按设计会被跳过。运行 /debug,到 ~/.claude/debug/<session-id>.txt 里查确切被跳过的路径,然后手动恢复它们。
- 3通过 Bash 改的文件纹丝不动。rm、mv、cp 是在快照系统之外的 shell 里跑的——用 git checkout 撤销,或者从备份恢复。
- 4想要的那条提示不在列表里。回合中途插入的排队消息不会生成检查点——改为回滚到最近一条回合开头的提示;子智能体的修改可能得靠 git revert。
- 5压根没有 /rewind 命令。检查点是 Claude Code 2.0 才加入的——先跑 claude update(或 claude doctor)确认版本;另外注意,早于该功能的老会话没有可回滚的快照。
黄金法则:改动重要就提交。检查点是安全气囊,git 是安全带——两个都系上。
