本页目录10
- 每次发送 prompt 自动创建检查点,跨会话持久保存,默认 30 天后自动清理
- 通过 /rewind 命令或在输入框为空时双击 Esc 打开回退菜单,可分别回退代码、对话或二者皆回退
- Summarize from here 与 Summarize up to here 可精准压缩指定区段对话,释放上下文空间,原始消息仍保留在 transcript 中
- Bash 命令(rm、mv、cp 等)造成的文件变更不被追踪,无法通过回退撤销
- Checkpointing 是会话级「本地 Undo」,不能替代 Git,两者应配合使用
- 若要保留原会话完整同时探索另一思路,应使用 fork(claude --continue --fork-session)而非 Summarize
本文是对官方文档「Checkpointing」的中文要点摘要,完整内容以原文为准。原文链接:https://code.claude.com/docs/en/checkpointing
什么是 Checkpointing
Claude Code 会在每次编辑前自动捕捉代码状态,形成「检查点」,让你随时能回退到之前某个时刻,无需担心大规模修改意外翻车。检查点由每次用户 prompt 自动触发——即每发送一次 prompt 就会创建一个新检查点,对用户透明无感。
自动追踪机制
- 每次发送用户 prompt 都会创建一个新检查点
- 检查点跨会话持久保存,在恢复的对话中同样可访问
- 默认在会话结束 30 天后自动清理(可配置)
如何打开回退菜单
使用 /rewind 命令,或在输入框为空时连按两次 Esc,即可打开回退菜单。
注意:若输入框有内容,双击
Esc会先清空内容而非打开菜单。已清空的文本保存在输入历史中,按Up可重新调出。
回退菜单的六种操作
菜单列出当前会话的每条提示,选中某条后可执行以下操作:
| 操作 | 效果 |
|---|---|
| Restore code and conversation | 同时回退代码和对话到该点 |
| Restore conversation | 仅回退对话,保留当前代码 |
| Restore code | 仅回退文件修改,保留对话 |
| Summarize from here | 将选中消息及之后内容压缩为摘要,释放上下文 |
| Summarize up to here | 将选中消息之前的内容压缩为摘要,保留近期对话 |
| Never mind | 取消,返回消息列表 |
执行 Restore conversation 或 Summarize from here 后,被选中消息的原始提示会自动填入输入框,方便直接重发或编辑。
Restore 与 Summarize 的核心区别
Restore 系列真正回滚状态,撤销代码修改、对话历史,或二者皆撤销。Summarize 系列不改变磁盘文件,仅将部分对话替换为 AI 生成的摘要——原始消息依然保存在会话 transcript 中,Claude 仍可按需引用。
- Summarize from here:保留选中点之前的消息原文,压缩选中点及之后的内容。适合丢弃偏题的旁支讨论、保留早期上下文细节。
- Summarize up to here:压缩选中点之前的消息,保留近期对话完整,停留在会话末尾。适合压缩冗长的初始设置阶段,保留近期工作细节。
两者与 /compact 类似,但更精准——可自由选择压缩哪一侧,而 /compact 压缩整个会话。
若想保留原会话完整、同时探索另一种实现思路,应使用 fork(
claude --continue --fork-session),而非 Summarize。
典型使用场景
- 探索多种实现方案:在不丢失起点的前提下尝试不同路径
- 从错误中快速恢复:撤销引入 bug 或破坏功能的修改
- 功能迭代实验:随时可回退到可运行的工作状态
- 释放上下文空间:从调试会话中间开始压缩,保留初始指令原文
重要限制
Bash 命令的改动不被追踪
若 Claude Code 通过 bash 命令修改文件(如 rm file.txt、mv old.txt new.txt、cp source.txt dest.txt),这些变更无法通过回退撤销。只有 Claude 的文件编辑工具直接操作的文件才会被捕捉。
外部改动不被追踪
在 Claude Code 外部手动修改的文件,或其他并发会话的改动,通常不会被捕捉,除非恰好与当前会话操作了同一文件。
不能替代版本控制
Checkpointing 定位于会话级别的快速回退,不可替代 Git:
- 把 Checkpointing 理解为「本地 Undo」
- 把 Git 理解为「永久历史」
- 两者定位互补,需配合使用,重要改动仍应及时 commit