8 8
9Claude Code 自动跟踪 Claude 在工作时所做的文件编辑,允许您快速撤销更改并回溯到之前的状态,以防任何事情出现偏差。9Claude Code 自动跟踪 Claude 在工作时所做的文件编辑,允许您快速撤销更改并回溯到之前的状态,以防任何事情出现偏差。
10 10
11<h2 id="how-checkpoints-work">11## checkpointing 如何工作
12 checkpointing 如何工作
13</h2>
14 12
15当您与 Claude 合作时,checkpointing 会自动捕获每次您发送开始一个回合的提示前代码的状态。13当您与 Claude 合作时,checkpointing 会自动捕获每次您发送开始一个回合的提示前代码的状态。
16 14
17<h3 id="automatic-tracking">15### 自动跟踪
18 自动跟踪
19</h3>
20 16
21Claude Code 跟踪其文件编辑工具所做的所有更改:17Claude Code 跟踪其文件编辑工具所做的所有更改:
22 18
25* Claude Code 将 checkpoints 与对话一起保存,因此您可以在恢复会话后仍然运行 `/rewind`21* Claude Code 将 checkpoints 与对话一起保存,因此您可以在恢复会话后仍然运行 `/rewind`
26* Claude Code 在 [retention sweep](/docs/zh-CN/claude-directory#cleaned-up-automatically) 中删除会话的文件快照,默认情况下在会话最后一次保存后约 30 天。回溯到快照已消失的 checkpoint 可能会失败,出现 [`No files were restored`](/docs/zh-CN/errors#no-files-were-restored) 错误。要保留快照更长时间,请设置 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays)。22* Claude Code 在 [retention sweep](/docs/zh-CN/claude-directory#cleaned-up-automatically) 中删除会话的文件快照,默认情况下在会话最后一次保存后约 30 天。回溯到快照已消失的 checkpoint 可能会失败,出现 [`No files were restored`](/docs/zh-CN/errors#no-files-were-restored) 错误。要保留快照更长时间,请设置 [`cleanupPeriodDays`](/docs/zh-CN/settings-reference#cleanupperioddays)。
27 23
28<h3 id="rewind-and-summarize">24### 回溯和总结
29 回溯和总结
30</h3>
31 25
32运行 `/rewind`,或在提示输入为空时按两次 `Esc`,打开回溯菜单。26运行 `/rewind`,或在提示输入为空时按两次 `Esc`,打开回溯菜单。
33 27
34<Note>28> [!NOTE]
35 如果提示输入包含文本,双 `Esc` 会清除它而不是打开菜单。清除的文本会保存到您的输入历史记录中,因此在您完成回溯菜单后,按 `Up` 可以调用它。29>
36</Note>30> 如果提示输入包含文本,双 `Esc` 会清除它而不是打开菜单。清除的文本会保存到您的输入历史记录中,因此在您完成回溯菜单后,按 `Up` 可以调用它。
37 31
38回溯菜单列出了您在会话期间发送的提示词。选择您想要操作的点,然后选择一个操作:32回溯菜单列出了您在会话期间发送的提示词。选择您想要操作的点,然后选择一个操作:
39 33
50 44
51选择"到此处总结"会让您留在对话末尾,输入字段为空。使用任一总结选项,**总结的对话** 标记会出现在对话中压缩消息的位置。45选择"到此处总结"会让您留在对话末尾,输入字段为空。使用任一总结选项,**总结的对话** 标记会出现在对话中压缩消息的位置。
52 46
53<h4 id="rewind-past-a-cleared-conversation">47#### 回溯过去已清除的对话
54 回溯过去已清除的对话
55</h4>
56 48
57如果您在同一 Claude Code 进程中较早运行了 `/clear`,回溯菜单会在列表顶部显示一个额外的条目,标记为 `/resume <session-id> (previous session)`。选择它可以恢复在 `/clear` 运行前活跃的对话。该条目在您退出 Claude Code 或恢复不同会话之前可用。49如果您在同一 Claude Code 进程中较早运行了 `/clear`,回溯菜单会在列表顶部显示一个额外的条目,标记为 `/resume <session-id> (previous session)`。选择它可以恢复在 `/clear` 运行前活跃的对话。该条目在您退出 Claude Code 或恢复不同会话之前可用。
58 50
59<h4 id="guide-a-summary">51#### 指导总结
60 指导总结
61</h4>
62 52
63总结不会改变磁盘上的文件,原始消息保留在会话记录中,因此 Claude 仍然可以参考详细信息。要指导总结的重点,用箭头键突出显示 **总结** 选项,并在行显示 **add context (optional)** 的位置输入说明,然后按 `Enter`。用其数字键选择选项会立即总结,无需说明。53总结不会改变磁盘上的文件,原始消息保留在会话记录中,因此 Claude 仍然可以参考详细信息。要指导总结的重点,用箭头键突出显示 **总结** 选项,并在行显示 **add context (optional)** 的位置输入说明,然后按 `Enter`。用其数字键选择选项会立即总结,无需说明。
64 54
65<Note>55> [!NOTE]
66 总结将您保持在同一会话中并压缩上下文,类似于有针对性的 `/compact`。要尝试不同的方法,同时保持原始会话完整,请改用 [`/branch`](/docs/zh-CN/sessions#branch-a-session) 或 `claude --continue --fork-session`。56>
67</Note>57> 总结将您保持在同一会话中并压缩上下文,类似于有针对性的 `/compact`。要尝试不同的方法,同时保持原始会话完整,请改用 [`/branch`](/docs/zh-CN/sessions#branch-a-session) 或 `claude --continue --fork-session`。
68 58
69<h2 id="common-use-cases">59## 常见用例
70 常见用例
71</h2>
72 60
73Checkpoints 在以下情况下特别有用:61Checkpoints 在以下情况下特别有用:
74 62
77* **迭代功能**:进行变体实验,知道您可以恢复到工作状态65* **迭代功能**:进行变体实验,知道您可以恢复到工作状态
78* **释放上下文空间**:从中点开始总结冗长的调试会话,保持初始说明完整66* **释放上下文空间**:从中点开始总结冗长的调试会话,保持初始说明完整
79 67
80<h2 id="limitations">68## 限制
81 限制
82</h2>
83 69
84<h3 id="bash-command-changes-not-tracked">70### Bash 命令更改未跟踪
85 Bash 命令更改未跟踪
86</h3>
87 71
88Checkpointing 不跟踪由 Bash 命令修改的文件。例如,如果 Claude Code 运行:72Checkpointing 不跟踪由 Bash 命令修改的文件。例如,如果 Claude Code 运行:
89 73
95 79
96这些文件修改无法通过回溯撤销。只有通过 Claude 的文件编辑工具进行的直接文件编辑才会被跟踪。80这些文件修改无法通过回溯撤销。只有通过 Claude 的文件编辑工具进行的直接文件编辑才会被跟踪。
97 81
98<h3 id="subagent-edits-not-restored">82### 子代理编辑未恢复
99 子代理编辑未恢复
100</h3>
101 83
102[子代理](/docs/zh-CN/sub-agents)使用 Claude 的文件编辑工具进行编辑,但 Claude Code 通常不会在您的会话检查点中捕获这些编辑。回溯是否恢复这些编辑取决于子代理的运行方式:84[子代理](/docs/zh-CN/sub-agents)使用 Claude 的文件编辑工具进行编辑,但 Claude Code 通常不会在您的会话检查点中捕获这些编辑。回溯是否恢复这些编辑取决于子代理的运行方式:
103 85
104* **前台分叉技能**:[具有 `context: fork` 的技能](/docs/zh-CN/skills#run-skills-in-a-subagent)在前台运行,在您自己的回合期间编辑您的工作树,因此回溯会照常恢复其编辑。设置 `background: false` 以在前台运行分叉;有几种情况([列在技能页面上](/docs/zh-CN/skills#run-skills-in-a-subagent))无论设置如何都会在那里运行。86* **前台分叉技能**:[具有 `context: fork` 的技能](/docs/zh-CN/skills#run-skills-in-a-subagent)在前台运行,在您自己的回合期间编辑您的工作树,因此回溯会照常恢复其编辑。设置 `background: false` 以在前台运行分叉;有几种情况([列在技能页面上](/docs/zh-CN/skills#run-skills-in-a-subagent))无论设置如何都会在那里运行。
105* **任何其他子代理**:回溯只会恢复 Claude 已在您的对话中编辑过的文件。子代理对其他文件的编辑会保留,因此请使用 git 来还原它们。这包括在后台运行的分叉 skill(默认设置)和后台 [`/code-review --fix`](/docs/zh-CN/code-review-local) 运行。87* **任何其他子代理**:回溯只会恢复 Claude 已在您的对话中编辑过的文件。子代理对其他文件的编辑会保留,因此请使用 git 来还原它们。这包括在后台运行的分叉 skill(默认设置)和后台 [`/code-review --fix`](/docs/zh-CN/code-review-local) 运行。
106 88
107<h3 id="external-changes-not-tracked">89### 外部更改未跟踪
108 外部更改未跟踪
109</h3>
110 90
111Checkpointing 仅跟踪在当前会话中编辑过的文件。您在 Claude Code 外部对文件所做的手动更改以及来自其他并发会话的编辑通常不会被捕获,除非它们碰巧修改了与当前会话相同的文件。91Checkpointing 仅跟踪在当前会话中编辑过的文件。您在 Claude Code 外部对文件所做的手动更改以及来自其他并发会话的编辑通常不会被捕获,除非它们碰巧修改了与当前会话相同的文件。
112 92
113<h3 id="messages-sent-mid-turn-not-checkpointed">93### 中途发送的消息未检查点
114 中途发送的消息未检查点
115</h3>
116 94
117在回溯菜单中,您[在 Claude 仍在工作时输入的](/docs/zh-CN/interactive-mode#queue-messages-while-claude-works)消息可能会被标记为 **No code restore**。Claude 在其轮次结束之前读取了该消息。[检查点是为启动轮次的提示词创建的](#how-checkpoints-work),因此该消息没有属于自己的检查点。Claude 在读取该消息之后所做的编辑会计入启动该轮次的提示词。95在回溯菜单中,您[在 Claude 仍在工作时输入的](/docs/zh-CN/interactive-mode#queue-messages-while-claude-works)消息可能会被标记为 **No code restore**。Claude 在其轮次结束之前读取了该消息。[检查点是为启动轮次的提示词创建的](#how-checkpoints-work),因此该消息没有属于自己的检查点。Claude 在读取该消息之后所做的编辑会计入启动该轮次的提示词。
118 96
119您无需对该消息本身做任何处理。要撤销会话中那部分的文件更改,请选择启动该轮次的提示词,然后选择 **Restore code** 或 **Restore code and conversation**。这会还原 Claude 在整个轮次中所做的文件编辑,包括您的消息到达之前所做的编辑。选择被标记的消息时仍会提供 **Restore conversation**,它会将对话回溯到该消息,并保持您的文件不变。97您无需对该消息本身做任何处理。要撤销会话中那部分的文件更改,请选择启动该轮次的提示词,然后选择 **Restore code** 或 **Restore code and conversation**。这会还原 Claude 在整个轮次中所做的文件编辑,包括您的消息到达之前所做的编辑。选择被标记的消息时仍会提供 **Restore conversation**,它会将对话回溯到该消息,并保持您的文件不变。
120 98
121<h3 id="symlinked-and-hard-linked-paths-not-restored">99### 符号链接和硬链接路径未恢复
122 符号链接和硬链接路径未恢复
123</h3>
124 100
125检查点功能不会回溯符号链接或硬链接文件。当您从 `/rewind` 菜单中选择 **Restore code** 或 **Restore code and conversation** 时,Claude Code 会跳过任何是符号链接或硬链接的跟踪路径,并显示 `Restored the code, but skipped N files` 警告。跳过的文件保持其当前内容。要撤销会话对其中一个文件的更改,请要求 Claude 反转编辑或自己编辑文件。dotfile 管理器符号链接到您项目中的配置文件,以及 pnpm 硬链接到位的文件,都属于此类别。101检查点功能不会回溯符号链接或硬链接文件。当您从 `/rewind` 菜单中选择 **Restore code** 或 **Restore code and conversation** 时,Claude Code 会跳过任何是符号链接或硬链接的跟踪路径,并显示 `Restored the code, but skipped N files` 警告。跳过的文件保持其当前内容。要撤销会话对其中一个文件的更改,请要求 Claude 反转编辑或自己编辑文件。dotfile 管理器符号链接到您项目中的配置文件,以及 pnpm 硬链接到位的文件,都属于此类别。
126 102
127要查看恢复跳过的路径,请在恢复前使用 `/debug` 打开调试日志:`~/.claude/debug/<session-id>.txt` 中的调试日志会列出每个跳过的路径。有关每个跳过原因和恢复步骤,请参阅[错误参考中的 skipped-files 条目](/docs/zh-CN/errors#restored-the-code-but-skipped-files)。103要查看恢复跳过的路径,请在恢复前使用 `/debug` 打开调试日志:`~/.claude/debug/<session-id>.txt` 中的调试日志会列出每个跳过的路径。有关每个跳过原因和恢复步骤,请参阅[错误参考中的 skipped-files 条目](/docs/zh-CN/errors#restored-the-code-but-skipped-files)。
128 104
129<h3 id="not-a-replacement-for-version-control">105### 不是版本控制的替代品
130 不是版本控制的替代品
131</h3>
132 106
133Checkpoints 设计用于快速的会话级恢复。对于永久版本历史和协作,继续使用版本控制(例如 Git)进行提交、分支和长期历史。107Checkpoints 设计用于快速的会话级恢复。对于永久版本历史和协作,继续使用版本控制(例如 Git)进行提交、分支和长期历史。
134 108
135<h2 id="see-also">109## 另请参阅
136 另请参阅
137</h2>
138 110
139* [Interactive mode](/docs/zh-CN/interactive-mode) - 快捷键和会话控制111* [Interactive mode](/docs/zh-CN/interactive-mode) - 快捷键和会话控制
140* [Commands](/docs/zh-CN/commands) - 使用 `/rewind` 访问 checkpoints112* [Commands](/docs/zh-CN/commands) - 使用 `/rewind` 访问 checkpoints