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 在[保留掃描](/docs/zh-TW/claude-directory#cleaned-up-automatically)中刪除會話的檔案快照,預設情況下約在會話最後一次儲存後 30 天。回溯到快照已消失的 checkpoint 可能會失敗,並出現 [`No files were restored`](/docs/zh-TW/errors#no-files-were-restored) 錯誤。若要保留快照更久,請設定 [`cleanupPeriodDays`](/docs/zh-TW/settings-reference#cleanupperioddays)。22* Claude Code 在[保留掃描](/docs/zh-TW/claude-directory#cleaned-up-automatically)中刪除會話的檔案快照,預設情況下約在會話最後一次儲存後 30 天。回溯到快照已消失的 checkpoint 可能會失敗,並出現 [`No files were restored`](/docs/zh-TW/errors#no-files-were-restored) 錯誤。若要保留快照更久,請設定 [`cleanupPeriodDays`](/docs/zh-TW/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 仍然可以參考詳細資訊。若要引導摘要的重點,請用方向鍵反白**總結**選項,並在該列顯示\*\*新增上下文(選用)\*\*的位置輸入指示,然後按 `Enter`。使用其數字鍵選擇選項會立即總結,不需要指示。53總結不會改變磁碟上的檔案,原始訊息保留在會話記錄中,因此 Claude 仍然可以參考詳細資訊。若要引導摘要的重點,請用方向鍵反白**總結**選項,並在該列顯示\*\*新增上下文(選用)\*\*的位置輸入指示,然後按 `Enter`。使用其數字鍵選擇選項會立即總結,不需要指示。
64 54
65<Note>55> [!NOTE]
66 總結讓您保持在同一會話中並壓縮上下文,就像有針對性的 `/compact`。若要分支並嘗試不同的方法,同時保持原始會話完整,請改用 [`/branch`](/docs/zh-TW/sessions#branch-a-session) 或 `claude --continue --fork-session`。56>
67</Note>57> 總結讓您保持在同一會話中並壓縮上下文,就像有針對性的 `/compact`。若要分支並嘗試不同的方法,同時保持原始會話完整,請改用 [`/branch`](/docs/zh-TW/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-TW/sub-agents)使用 Claude 的檔案編輯工具進行編輯,但 Claude Code 通常不會在您的會話檢查點中捕捉這些編輯。回溯是否復原這些編輯取決於子代理的執行方式:84[子代理](/docs/zh-TW/sub-agents)使用 Claude 的檔案編輯工具進行編輯,但 Claude Code 通常不會在您的會話檢查點中捕捉這些編輯。回溯是否復原這些編輯取決於子代理的執行方式:
103 85
104* **前景分叉技能**:[具有 `context: fork` 的技能](/docs/zh-TW/skills#run-skills-in-a-subagent)在前景執行,在您自己的回合期間編輯您的工作樹,因此回溯會照常復原其編輯。設定 `background: false` 以在前景執行分叉;有幾種情況([列在技能頁面上](/docs/zh-TW/skills#run-skills-in-a-subagent))無論設定如何都會在那裡執行。86* **前景分叉技能**:[具有 `context: fork` 的技能](/docs/zh-TW/skills#run-skills-in-a-subagent)在前景執行,在您自己的回合期間編輯您的工作樹,因此回溯會照常復原其編輯。設定 `background: false` 以在前景執行分叉;有幾種情況([列在技能頁面上](/docs/zh-TW/skills#run-skills-in-a-subagent))無論設定如何都會在那裡執行。
105* **任何其他 subagent**:回溯只會復原 Claude 在您的對話中已經編輯過的檔案。subagent 對其他檔案的編輯會保留,因此請使用 git 來還原它們。這包括在背景執行的分叉 skill(預設值)和背景 [`/code-review --fix`](/docs/zh-TW/code-review-local) 執行。87* **任何其他 subagent**:回溯只會復原 Claude 在您的對話中已經編輯過的檔案。subagent 對其他檔案的編輯會保留,因此請使用 git 來還原它們。這包括在背景執行的分叉 skill(預設值)和背景 [`/code-review --fix`](/docs/zh-TW/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-TW/interactive-mode#queue-messages-while-claude-works)可能會被標記為**不復原程式碼**。Claude 在其回合結束前讀取了該訊息。[檢查點是為開始回合的提示詞建立的](#how-checkpoints-work),因此此訊息沒有自己的檢查點。Claude 讀取該訊息後所做的編輯會計入開始該回合的提示詞。95在回溯功能表中,您[在 Claude 仍在工作時輸入的訊息](/docs/zh-TW/interactive-mode#queue-messages-while-claude-works)可能會被標記為**不復原程式碼**。Claude 在其回合結束前讀取了該訊息。[檢查點是為開始回合的提示詞建立的](#how-checkpoints-work),因此此訊息沒有自己的檢查點。Claude 讀取該訊息後所做的編輯會計入開始該回合的提示詞。
118 96
119您不需要對訊息本身做任何處理。若要撤銷工作階段中該部分的檔案變更,請選擇開始該回合的提示詞,然後選擇**復原程式碼**或**復原程式碼和對話**。這會還原 Claude 在整個回合中的檔案編輯,包括您的訊息到達之前所做的編輯。選擇被標記的訊息仍會提供**復原對話**,這會將對話回溯到該訊息,並保持您的檔案原樣。97您不需要對訊息本身做任何處理。若要撤銷工作階段中該部分的檔案變更,請選擇開始該回合的提示詞,然後選擇**復原程式碼**或**復原程式碼和對話**。這會還原 Claude 在整個回合中的檔案編輯,包括您的訊息到達之前所做的編輯。選擇被標記的訊息仍會提供**復原對話**,這會將對話回溯到該訊息,並保持您的檔案原樣。
120 98
121<h3 id="symlinked-and-hard-linked-paths-not-restored">99### 符號連結和硬連結路徑未復原
122 符號連結和硬連結路徑未復原
123</h3>
124 100
125檢查點功能不會回溯符號連結或硬連結檔案。當您從 `/rewind` 功能表中選擇**復原程式碼**或**復原程式碼和對話**時,Claude Code 會跳過任何是符號連結或硬連結的追蹤路徑,並顯示 `Restored the code, but skipped N files` 警告。跳過的檔案保持其目前內容。若要撤銷工作階段對其中一個檔案的變更,請要求 Claude 反轉編輯或自己編輯檔案。dotfile 管理器符號連結到您的專案中的設定檔以及 pnpm 硬連結到位置的檔案都屬於此類別。101檢查點功能不會回溯符號連結或硬連結檔案。當您從 `/rewind` 功能表中選擇**復原程式碼**或**復原程式碼和對話**時,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-TW/errors#restored-the-code-but-skipped-files)。103若要查看復原跳過的路徑,請在復原前使用 `/debug` 開啟偵錯記錄:`~/.claude/debug/<session-id>.txt` 中的偵錯記錄會列出每個跳過的路徑。如需每個跳過原因和復原步驟,請參閱[錯誤參考中的 skipped-files 項目](/docs/zh-TW/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-TW/interactive-mode) - 快捷鍵和會話控制111* [Interactive mode](/docs/zh-TW/interactive-mode) - 快捷鍵和會話控制
140* [Commands](/docs/zh-TW/commands) - 使用 `/rewind` 存取 checkpoints112* [Commands](/docs/zh-TW/commands) - 使用 `/rewind` 存取 checkpoints