目录
"我让 Claude Code 跑了一下,结果改动跑到了我不想要的方向。"正是为了这种时刻,checkpointing 与 /rewind能让你用几下按键就回退到"出问题之前"。Claude Code 会在每次编辑前自动拍下状态快照,你可以用 /rewind 或连按两次 Esc 回到先前的状态。
本文基于官方文档,讲解 checkpointing 是什么、如何使用、哪些会被还原、哪些不会(最重要)、与 Git 有何不同、用它从错误中恢复,以及可用性。先把要点放在前面。① 它会自动追踪文件编辑,每个提示都会成为一个还原点。② 用 /rewind 或连按两次 Esc 打开菜单,选择还原代码、对话,或两者。③ 但只有"Claude 的文件编辑"会被还原——由 bash 命令或在 Claude 之外做出的改动不会。这也正是它无法替代 Git 的原因。
把改动回退到"出问题之前"
—— 每个提示都是一个还原点;连按两次 Esc 即可返回
1. checkpointing 与 /rewind 是什么
官方的定义是:"Claude Code 会在你工作时自动追踪 Claude 的文件编辑,让你在出现偏差时快速撤销改动并回退到先前的状态。"系统会在每次编辑前自动拍下快照,并且在此之上你发送的每个提示都会创建一个新的检查点(一个可返回的点)。检查点跨会话保留,因此你在恢复的对话中也能访问它们。
换句话说,这项功能意味着"即使把事情交给 AI 而它出了岔子,你也能用几下按键回到安全的点。"在交互式 Claude Code(CLI)中,/rewind 是自动且默认开启的。
2. 如何使用(/rewind 与 Esc Esc)
打开回退菜单有两种方式:输入 /rewind,或者在提示输入框为空时连按两次 Esc。
⚠️ 关于 Esc Esc 的提醒:如果输入框含有文字,连按两次 Esc 会清空输入,而不会打开菜单。被清空的文字会保存到你的输入历史中,因此按上方向键即可调回。为确保菜单打开,请先清空输入。
菜单会列出你在本次会话中发送的每个提示。选好你想要的点,然后选择一个操作。
| 操作 | 作用 |
|---|---|
| 还原代码和对话 | 两者都回退到该点 |
| 还原对话 | 回退到该消息,但保留当前代码 |
| 还原代码 | 仅回退文件改动,保留对话 |
| 从此处开始 / 到此处为止进行总结 | 压缩上下文(不是回退;文件不变) |
| 算了 | 不做任何改动退出 |
执行"还原对话"(及类似操作)后,所选消息的原始提示会被还原到输入框中,因此你可以重新发送或编辑它。在保留对话的同时"还原代码",可以让你结合刚才出问题的经验重新措辞——这是你在实践中最常用的流程。
3. 哪些会被还原、哪些不会(最重要)
这是该功能最容易被误解的部分。checkpointing 只追踪"由 Claude 的文件编辑工具(Write / Edit / NotebookEdit)所做的改动"。任何其他副作用都不会因回退而被撤销。
⚠️ 不会被还原(官方文档明确说明)
- bash 命令对文件的改动:
rm file.txt、mv old.txt new.txt、cp source dest等无法通过回退撤销 - 会话之外 / 来自其他会话的改动:手动编辑和并发会话的编辑不会被捕获,除非它们涉及相同的文件
- 创建、移动或删除目录 / 远程或网络文件
数据库状态、迁移、软件包安装、网络调用——任何"不是文件编辑的副作用"同样不会被回退(文档没有逐一列出这些,但既然只追踪通过编辑工具所做的文件改动,逻辑上自然如此)。简而言之,请记住只有"Claude 用其编辑工具重写过的文件内容"才能被还原。而且由于 Claude 也可以通过 Bash 修改文件,稳妥的做法是不要过度依赖回退,并在里程碑处向 Git 提交。
4. 与 Git 有何不同
文档将其定位为"检查点是本地的'撤销',Git 是'永久历史'",并直白地指出"检查点是对正规版本控制的补充,而非替代。"
- 自动、即时、无需配置
- 非常适合会话内的试验
- 覆盖编辑工具所做的文件改动
- 30 天后清理(可配置)
- 提交、分支、长期存储
- 也会记录 bash 的改动
- 可在团队中共享与评审
- 不会消失(除非你删除它)
分工很简单:检查点用于会话内的快速撤销,Git 提交用于持久的历史。在更大任务的里程碑处提交,你就能安全地跨越那些回退无法覆盖的部分(例如 bash 的改动)返回。
5. 从错误中恢复
/rewind 也是当对话损坏无法继续时的恢复工具。Claude Code 的官方错误参考中,针对与工具调用并发和思考块相关的 400 错误,产品本身会提示:"API Error: 400 ... Run /rewind to recover the conversation."连按两次 Esc,退回到损坏回合之前的检查点,再从那里继续。这也是 court / invoke 标签泄漏(tool_use 并发)错误的主要恢复方法。
⚠️ 版本提示:如果你用的是 Opus 4.7 / 4.8,请先运行 claude update。据文档,v2.1.156 之前的版本可能在正常工具调用期间触发此错误,而 /rewind 无法清除它。先更新为上。
如果回退无法触及根因(例如上下文压缩导致的损坏),你也可以用 /clear 重新开始。关于错误处理的总体方法,请参阅 Claude Code 错误汇总。
6. 可用性与保留期
在交互式 Claude Code(CLI)中,它是自动且默认开启的——无需特殊配置。相比之下,在 Agent SDK 中,它是显式选择启用(例如 enableFileCheckpointing);请将两者区分开来。
关于保留期,检查点会在 30 天后随会话一起被清理(可配置)。文档没有详细说明磁盘上的存储位置、开关切换,或保留期的具体配置键,因此本文不对这些做断言(请查阅官方文档获取最新信息)。该功能在 Claude Code v2.0.0(2025 年 9 月)中发布,当时被报道为"呼声最高的功能"(发布日期与背景来自二手来源)。
总结
checkpointing 与 /rewind是一张安全网,它会自动追踪 Claude 的文件编辑,让你用几下按键回退到"出问题之前"。每个提示都会成为一个还原点,你用 /rewind 或连按两次 Esc 打开菜单,回退代码、对话,或两者。在实践中,核心流程是"保留对话的同时还原代码",然后重新措辞。
关键注意点:"只有 Claude 的文件编辑会被还原"——bash 命令的改动、外部改动、目录操作、数据库等不会。所以它不能替代 Git;原则上请在里程碑处提交。此外,/rewind 还能恢复损坏的对话,例如 400 错误(旧版本请先 claude update)。相关:court/invoke 错误、Claude Code 错误、hooks。
FAQ
Q. checkpointing 是做什么用的?
A. 它是一张用于快速把改动回退到"出问题之前"的安全网。Claude Code 会在每次编辑前自动拍下快照,并且你发送的每个提示都会成为一个还原点。即使把事情交给 AI 而它出了岔子,你也能用 /rewind 或连按两次 Esc 回到先前的状态。在交互式 CLI 中它默认开启。
Q. 怎么使用?
A. 输入 /rewind,或者在输入框为空时连按两次 Esc 打开菜单。从你发送过的提示列表中,选好要返回的点,然后选择"还原代码和对话""还原对话"或"还原代码"。最常用的是"还原代码(保留对话)",然后结合刚才出问题的经验重新措辞你的指令。请注意,如果输入框含有文字,连按两次 Esc 会改为将其清空。
Q. 由 bash 创建或删除的文件也会被还原吗?
A. 不会。只有由 Claude 的编辑工具(Write / Edit / NotebookEdit)所做的文件改动会被还原。bash 命令(rm、mv、cp 等)的改动、会话之外或来自其他会话的改动、创建/移动/删除目录,以及远程文件不会因回退而被撤销。对于"不是文件编辑的副作用"(如数据库状态)也是如此。这正是你应该在里程碑处向 Git 提交的原因。
Q. 它能替代 Git 吗?
A. 不能。文档将其定位为"检查点 = 本地撤销,Git = 永久历史",指出它是补充而非替代版本控制。检查点最适合会话内的快速撤销,并会在 30 天后被清理(可配置)。提交、分支、长期存储和团队共享请继续使用 Git。
Q. 当错误阻塞了对话时能用它吗?
A. 可以。针对与工具调用并发或思考块相关的 400 错误,产品本身会提示"Run /rewind to recover the conversation."连按两次 Esc,退回到损坏回合之前,再继续。但 v2.1.156 之前的版本可能无法通过 /rewind 清除它,因此在 Opus 4.7 / 4.8 上请先运行 claude update。另请参阅 court/invoke 错误文章。