Checkpointing 是 Claude Code 内置的会话安全网——在每次编辑前自动保存代码状态,让你随时回退到任意历史节点,无需依赖 Git。
工作原理
Claude Code 在每次用户提示词创建前自动生成 Checkpoint:
- 覆盖范围:所有通过 Claude 文件编辑工具修改的文件
- 跨会话持久:续接对话时仍可访问历史 Checkpoint
- 自动清理:随会话在 30 天后清除(可在 settings.json 中通过
cleanupPeriodDays配置)
Checkpointing 只追踪 Claude 的文件编辑工具的变更,不追踪 Bash 命令(
rm、mv、cp等)产生的文件变化。
打开回退菜单(2 种方式)
# 方式一:快捷键
Esc + Esc # 连按两次 Esc
# 方式二:命令
/rewind # 别名:/checkpoint5 种回退/操作选项
在回退菜单中,滚动列表显示本次会话的所有提示词,选择目标节点后,有 5 个操作:
| 选项 | 效果 |
|---|---|
| Restore code and conversation | 代码文件和对话历史都回退到该节点 |
| Restore conversation | 对话历史回退,代码保持当前状态 |
| Restore code | 代码文件回退,对话历史保持当前状态 |
| Summarize from here | 从该节点起压缩后续消息为摘要(不修改文件) |
| Never mind | 返回消息列表,不做任何操作 |
恢复对话或摘要操作后,所选消息的原始提示词自动填回输入框,可直接重发或修改后重发。
「恢复」vs「摘要」深度对比
三种恢复选项
回退状态:撤销已做的事情。
- 代码回退:磁盘文件恢复到该时间点的状态
- 对话回退:后续消息从历史记录中移除
- 组合回退:同时撤销代码和对话
「Summarize from here」
压缩上下文,不回退:
- 选中节点之前的消息完整保留
- 选中节点及之后的消息被 AI 生成的摘要替换
- 磁盘文件不变
- 原始消息保留在会话记录中,Claude 需要时可以引用细节
与 /compact(压缩整个对话)的区别:
- Summarize from here:保留早期上下文完整细节,只压缩后期冗余内容
/compact:压缩整个对话历史
可以传入可选说明,引导摘要的关注重点:
# 在回退菜单输入框中输入
Summarize focusing on the architecture decisions
与 Fork 的区别
如果你想保留原始会话,同时在一个新分支尝试不同方案:
claude --continue --fork-session这会创建一个新 Session ID,不影响原始会话。而「Summarize from here」和「Restore」都在同一会话内操作,无法保留原始状态。
常用场景
| 场景 | 推荐操作 |
|---|---|
| Claude 修改了错误的文件 | Restore code — 撤销文件,保留对话继续沟通 |
| 整个方向跑偏了 | Restore code and conversation — 完全重来 |
| 调试对话太冗长,但代码是对的 | Summarize from here — 压缩对话,释放上下文空间 |
| 想试试不同实现,又不想丢掉当前版本 | Fork(--fork-session)— 保留原版,新开分支 |
| 对话混乱,代码没问题 | Restore conversation — 只清理对话历史 |
三大局限性
1. Bash 命令变更不追踪
# 这些操作无法通过 Checkpoint 撤销:
rm file.txt
mv old.txt new.txt
cp source.txt dest.txt
npm install # 修改 node_modules只有 Claude 的文件编辑工具(Edit/Write)的变更才被追踪。通过 Bash 工具执行的文件操作不可撤销。
2. 外部变更不追踪
- 你在 Claude Code 外部手动修改的文件
- 其他并发 Claude Code 会话的修改
除非这些外部变更恰好修改了当前会话也编辑过的同一文件。
3. 不能替代版本控制
Checkpointing 是「会话级本地撤销」,Git 是「永久历史」——两者互补,不能互相替代:
| 功能 | Checkpoint | Git |
|---|---|---|
| 撤销粒度 | 按提示词 | 按 Commit |
| 持久性 | 30 天(可配置) | 永久 |
| 协作 | 不支持 | 支持 |
| 分支 | 通过 Fork 间接实现 | 原生支持 |
原文:Checkpointing - Claude Code Docs | 来源:Anthropic 官方文档