Skip to content

检查点与回退

检查点允许你保存会话状态,并回退到 Claude Code 会话中之前的某个时刻。在探索不同方案、从错误中恢复或对比不同解决方案时,这一功能无比实用。

概述

检查点可以保存会话状态并回退到历史节点,让你能够安全地进行实验和探索多种方案。检查点是会话状态的快照,包含:

  • 所有交流的消息
  • 已做的文件修改
  • 工具使用历史
  • 会话上下文

在探索不同方案、从错误中恢复或对比多种解决方案时,检查点极具价值。

核心概念

概念说明
检查点(Checkpoint)会话状态快照,含消息、文件和上下文
回退(Rewind)返回到某个检查点,丢弃之后的所有变更
分支点(Branch Point)用于开始探索多种方案的检查点

访问检查点

有两种主要方式访问和管理检查点:

使用键盘快捷键

按两次 EscEsc + Esc)打开检查点界面,浏览已保存的检查点。

使用斜杠命令

使用 /rewind 命令(别名:/checkpoint)快速访问:

bash
# 打开回退界面
/rewind

# 或使用别名
/checkpoint

回退选项

回退时,你会看到包含五个选项的菜单:

  1. 恢复代码和对话 —— 将文件和消息都恢复到该检查点的状态
  2. 恢复对话 —— 仅回退消息,保留当前代码不变
  3. 恢复代码 —— 仅回退文件变更,保留完整对话历史
  4. 从此处总结 —— 将该时间点之后的对话压缩为 AI 生成的摘要,而非直接丢弃。原始消息会保留在记录中,可提供额外指令以聚焦特定主题。
  5. 取消 —— 取消操作,回到当前状态

自动检查点

Claude Code 会自动为你创建检查点:

  • 每次用户提示 —— 每条用户输入都会创建一个新检查点
  • 持久化 —— 检查点跨会话保留
  • 自动清理 —— 检查点在 30 天后自动清除

这意味着你随时可以回退到对话中任意之前的时刻,无论是几分钟前还是几天前。

使用场景

场景工作流
探索方案保存 → 尝试方案 A → 保存 → 回退 → 尝试方案 B → 对比
安全重构保存 → 重构 → 测试 → 失败则回退
A/B 测试保存 → 设计 A → 保存 → 回退 → 设计 B → 对比
错误恢复发现问题 → 回退到上一个正确状态

实际使用

查看与回退

按两次 Esc 或使用 /rewind 打开检查点浏览器。你会看到所有可用检查点及其时间戳,选择任意一个即可回退到该状态。

检查点详情

每个检查点显示:

  • 创建时的时间戳
  • 被修改的文件
  • 对话中的消息数量
  • 使用过的工具

实战示例

示例一:探索不同方案

用户:给 API 增加一个缓存层

Claude:我来为你的 API 接口加上 Redis 缓存……
[在检查点 A 做出变更]

用户:不对,我们试试内存缓存吧

Claude:我来回退到检查点 A,探索另一种方案……
[用户按 Esc+Esc 回退到检查点 A]
[在检查点 B 实现内存缓存]

用户:现在可以对比两种方案了

示例二:从错误中恢复

用户:把认证模块重构为 JWT 方式

Claude:我来重构认证模块……
[做了大量修改]

用户:等一下,这把 OAuth 集成搞坏了。回退吧。

Claude:帮你回退到重构之前的状态……
[用户按 Esc+Esc,选择重构前的检查点]

用户:这次我们采取更保守的方案

示例三:安全实验

用户:我们试着把这段代码改成函数式风格
[在实验前创建检查点]

Claude:[进行实验性修改]

用户:测试失败了,回退吧。
[用户按 Esc+Esc,回退到检查点]

Claude:已回退所有修改,我们换一种思路吧。

示例四:分支探索

用户:我想对比两种数据库设计
[记录当前检查点,称为"起点"]

Claude:我来创建第一种设计……
[实现 Schema A]

用户:现在回退,尝试第二种方案
[用户按 Esc+Esc,回退到"起点"]

Claude:现在实现 Schema B……
[实现 Schema B]

用户:太好了!现在两种 Schema 都有了,可以做选择了

检查点保留策略

Claude Code 自动管理你的检查点:

  • 每次用户提示都会自动创建检查点
  • 旧检查点最多保留 30 天
  • 自动清理,防止无限占用存储空间

工作流模式

分支探索策略

探索多种方案时:

1. 初始实现 → 检查点 A
2. 尝试方案一 → 检查点 B
3. 回退到检查点 A
4. 尝试方案二 → 检查点 C
5. 对比 B 和 C 的结果
6. 选择最佳方案继续推进

安全重构模式

进行重大修改时:

1. 当前状态 → 检查点(自动)
2. 开始重构
3. 运行测试
4. 测试通过 → 继续开发
5. 测试失败 → 回退,尝试其他方案

最佳实践

由于检查点是自动创建的,你可以专注于工作本身,无需手动保存状态。但请注意以下事项:

高效使用检查点

推荐做法:

  • 回退前先查看可用检查点
  • 想探索不同方向时使用回退
  • 保留检查点以对比不同方案
  • 了解每个回退选项的含义(恢复代码和对话、恢复对话、恢复代码、从此处总结)

不推荐做法:

  • 仅依赖检查点来保存代码
  • 期望检查点能追踪外部文件系统的变更
  • 用检查点替代 git commit

配置

可在设置中切换自动检查点:

json
{
  "autoCheckpoint": true
}
  • autoCheckpoint:是否在每次用户提示时自动创建检查点(默认:true

限制

检查点存在以下限制:

  • Bash 命令的变更不会被追踪 —— rmmvcp 等文件系统操作不会被捕获
  • 外部变更不会被追踪 —— 在 Claude Code 之外(编辑器、终端等)做的修改不会被捕获
  • 不能替代版本控制 —— 代码库的永久性、可审计变更请使用 git

故障排查

检查点丢失

问题:找不到预期的检查点

解决方案

  • 检查检查点是否被清除
  • 确认设置中 autoCheckpoint 已启用
  • 检查磁盘空间

回退失败

问题:无法回退到某个检查点

解决方案

  • 确认没有未提交的冲突变更
  • 检查检查点是否损坏
  • 尝试回退到其他检查点

与 Git 的结合使用

检查点是 git 的补充,而非替代:

功能Git检查点
范围文件系统对话 + 文件
持久性永久会话级别
粒度commit 节点任意时间点
速度较慢即时
共享支持有限

两者结合使用:

  1. 用检查点快速实验
  2. 用 git commit 保存最终变更
  3. 在 git 操作前创建检查点
  4. 将成功的检查点状态 commit 到 git

快速入门

基本工作流

  1. 正常工作 —— Claude Code 自动创建检查点
  2. 想回退? —— 按两次 Esc 或使用 /rewind
  3. 选择检查点 —— 从列表中选择要回退的节点
  4. 选择恢复内容 —— 恢复代码和对话、恢复对话、恢复代码、从此处总结,或取消
  5. 继续工作 —— 回到了那个时间点

键盘快捷键

  • Esc + Esc —— 打开检查点浏览器
  • /rewind —— 访问检查点的另一种方式
  • /checkpoint —— /rewind 的别名

关于回退时机:上下文监控

检查点让你可以回退——但如何判断什么时候该回退?随着对话增长,Claude 的上下文窗口被填满,模型质量会悄悄下降。你可能在不知不觉中使用了"半盲"状态的模型写代码。

cc-context-stats 通过在 Claude Code 状态栏显示实时上下文区间来解决这个问题。它追踪你在上下文窗口中所处的位置——从 Plan(绿色,适合规划和编码)到 Code(黄色,避免开始新计划)再到 Dump(橙色,收尾并准备回退)。当你看到区间切换时,就知道是时候创建检查点并重新开始了。

相关内容

总结

检查点是 Claude Code 的自动功能,让你无需担心丢失工作成果就能安全地探索不同方案。每次用户提示都会自动创建新检查点,因此你可以随时回退到会话中的任意历史节点。

核心优势:

  • 无顾虑地尝试多种方案
  • 快速从错误中恢复
  • 并排对比不同解决方案
  • 与版本控制系统安全配合使用

记住:检查点不能替代 git。检查点用于快速实验,git 用于永久性代码变更。