Claude Code 学习站

Claude Code Checkpointing:会话回退与上下文压缩实用指南

Claude Code 内置检查点机制,每次 prompt 前自动记录文件状态;通过 /rewind 菜单可按需回退代码、对话或精准压缩指定区段的上下文,适合大规模重构和调试场景。

本页目录10
AI 摘要 · 已核查整理于 2026-06-15原文:Checkpointing(Anthropic)上下文与记忆会话管理
要点速览
  • 每次发送 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.txtmv old.txt new.txtcp source.txt dest.txt),这些变更无法通过回退撤销。只有 Claude 的文件编辑工具直接操作的文件才会被捕捉。

外部改动不被追踪

在 Claude Code 外部手动修改的文件,或其他并发会话的改动,通常不会被捕捉,除非恰好与当前会话操作了同一文件。

不能替代版本控制

Checkpointing 定位于会话级别的快速回退,不可替代 Git:

  • 把 Checkpointing 理解为「本地 Undo」
  • 把 Git 理解为「永久历史」
  • 两者定位互补,需配合使用,重要改动仍应及时 commit