Claude Code 对话回退
课程导读
这节课主要讲 Claude Code 的“后悔药”功能:当你说错需求、执行了不满意的操作,或者想回到某一次对话之前,可以通过 checkpoint 回退对话、代码,或者同时回退两者。
一、什么是 checkpoint
在与 Claude Code 对话的过程中,你每发送一条消息,它都会自动创建一个新的 checkpoint,也就是回退点。
你可以把它理解成游戏里的存档点。后面如果发现方向不对,就可以回到某个存档点重新来。
二、进入回退界面
进入回退界面的快捷键是:
| 快捷键 | 作用 |
|---|---|
Esc + Esc | 进入 checkpoint 回退界面 |
需要注意:
| 情况 | 结果 |
|---|---|
| 输入框里有内容 | 连按两次 Esc 会先清空输入框 |
| 输入框为空 | 连按两次 Esc 才会进入回退界面 |
进入回退界面后,可以根据对话内容选择想回到哪一个 checkpoint。
三、回退选项
选中某个 checkpoint 后,Claude Code 会提供不同的回退方式。
如果这段对话没有涉及代码变更,选项会比较少;如果涉及代码变更,通常会看到更多选项。
常见选项如下:
| 选项 | 含义 |
|---|---|
Restore code and conversation | 同时回退代码和对话 |
Restore conversation | 只回退对话,代码保持当前状态 |
Restore code | 只回退代码,对话保持当前状态 |
Summarize from here | 从选中消息开始压缩总结,代码不变 |
Never mind | 取消回退 |
四、只回退对话
选择 Restore conversation 后,Claude Code 会把对话回到某条消息发送之前的状态。
效果是:
| 内容 | 结果 |
|---|---|
| 聊天记录 | 选中 checkpoint 后面的记录会消失 |
| 输入框 | 会重新出现当时那条消息,方便你修改后重发 |
| 代码文件 | 保持当前状态,不会被撤销 |
适合场景:
- 你想删掉某段无效对话
- 你希望保留已经生成的文件。
- 你想从某条消息之前重新开始对话。
五、同时回退代码和对话
选择 Restore code and conversation 后,Claude Code 会同时回退对话和它直接修改过的代码文件。
效果是:
| 内容 | 结果 |
|---|---|
| 聊天记录 | 回到选中 checkpoint 对应的位置 |
| 输入框 | 会回填当时那条消息 |
| Claude Code 创建或编辑的文件 | 会回退到当时的状态 |
适合场景:
- Claude Code 刚刚生成了一批你不满意的文件。
- 你想撤销某次任务产生的代码变更。
- 你希望从某个需求点重新开始。
六、只回退代码
选择 Restore code 后,Claude Code 会尝试回退它直接创建或修改过的代码文件,但保留当前聊天记录。
适合场景:
- 对话内容还有参考价值。
- 你只是不想保留刚才生成的代码。
- 你希望继续沿用当前沟通上下文。
七、Summarize from here
Summarize from here 不会修改磁盘上的代码文件。
它的作用是从选中的消息开始,把后续对话压缩成一段 AI 生成的摘要。
可以理解为:
| 部分 | 处理方式 |
|---|---|
| 选中消息之前的内容 | 保持原样 |
| 选中消息及之后的内容 | 替换成一段摘要 |
| 磁盘上的代码文件 | 不修改 |
| 选中的原始消息 | 会回填到输入框,方便修改后继续发送 |
这个功能更适合后面学习上下文时再深入理解。
典型场景是:前面一段对话在定义需求和架构,很重要;后面一大段都在试错、调试、看日志,比较臃肿。这时可以从开始调试的那条消息切一刀,把后面压缩成摘要。
八、回退功能的限制
回退界面下方会提示:
Rewinding does not affect files edited manually or via bash.意思是:Claude Code 的回退不会影响你手动修改的文件,也不会撤销通过 Bash 命令产生的变更。
也就是说,Claude Code 的回退功能只能处理它自己直接创建或修改的文件,并不能保证把整个项目完全恢复到过去某个状态。
| 变更来源 | 是否会被 checkpoint 回退影响 |
|---|---|
| Claude Code 直接写入的文件 | 通常会 |
| 你手动创建或修改的文件 | 不会 |
| Bash 命令产生的文件变化 | 不会 |
