AI 程式開發與代理

[Claude Code #5] /rewind:將搞壞的程式碼還原到檢查點

Claude Code 的 /rewind 會利用每次提示自動儲存的檢查點,還原程式碼與對話。本文整理按兩次 Esc 開啟的選單、還原與摘要選項,以及 Shell 副作用等無法還原的內容。

閱讀 4 分鐘
[Claude Code #5] /rewind:將搞壞的程式碼還原到檢查點 封面圖

把修改交給 AI,30 分鐘後開始後悔,相信大家都有過這種經驗。如果連提交都沒做,背上就會冒冷汗。

Claude Code 提供了應付這種情況的倒帶按鈕,就是/rewind

每次送出提示時,程式碼狀態都會保留成檢查點,隨時可以將程式碼與對話還原到該時間點。

如果Claude Code 第 4 集/branch是分支,這一集談的是還原。

檢查點會自動累積

官方檢查點文件為準,運作方式如下。

每次送出使用者提示時,就會建立一個檢查點。不需要另外開啟功能,也不必按下儲存按鈕。

每個工作階段最多保留最近 100 個檔案快照檢查點。由於檢查點會與對話一同儲存,因此工作階段恢復後仍可/rewind

開啟倒帶選單

輸入/rewind,或在輸入欄空白時按兩次 Esc,即可開啟選單。

選單會依時間順序顯示本次工作階段送出的提示。選取要返回的時間點後,就會出現選項。

  • 還原程式碼與對話:全部還原到該時間點
  • 只還原對話:保留目前程式碼狀態,只倒帶對話
  • 只還原程式碼:保留對話,只還原檔案變更

只有在該時間點之後存在受追蹤的檔案變更時,才會顯示兩個程式碼還原選項。

還原對話後,該時間點原本的提示會重新填入輸入欄。修改指示後再送出即可。

Claude Code 檢查點建立與 /rewind 還原選項示意圖
每次提示都會累積檢查點,並選擇還原範圍來返回

除了倒帶,也可以使用摘要

同一個選單中還有兩個摘要選項。

從這裡開始摘要會將選定時間點之後的對話壓縮成摘要。適合收起冗長的除錯過程,釋放上下文空間。

摘要到這裡則相反,會壓縮前面的內容,完整保留最近的對話。

摘要不會修改檔案,原始訊息也會保留在工作階段記錄中。可以把它想成精確指定位置的/compact

哪些內容無法還原

/rewind並非萬能,它有明確的追蹤範圍。

首先,它不會追蹤 Shell 指令的副作用。Claude 透過rmmv修改的檔案,無法靠倒帶復原。只有透過檔案編輯工具修改的內容會被追蹤。

子代理程式修改的檔案通常也不在還原範圍內。例外是以前景執行的 fork skill;預設的背景子代理程式所做的編輯,必須使用 git 還原。

在工作階段外手動修改的內容,以及透過符號連結或硬連結連接的檔案也一樣。還原時會略過這些路徑,並顯示略過數量的警告。

檢查點也可能在 30 天後隨工作階段一同刪除。官方文件之所以特別說明,就是因為它是工作階段層級的快速復原工具,而不是 git 等版本控制的替代品。

寫有 SAFETY NET NOT A VAULT 的安全網接住筆記型電腦,以及 git 金庫的插圖
檢查點是網,金庫則是 git

返回以 /clear 清除的對話

/clear清除對話後,也可能立刻覺得「糟了」。

只要仍在同一個 Claude Code 程序中,倒帶選單最上方就會出現返回上一個工作階段的選項(v2.1.191 以上)。選取後,/clear之前的對話會原樣恢復。

總結

/rewind是透過提示級檢查點還原程式碼與對話的安全網。按兩次 Esc 即可開啟。

只要記住 Shell 指令的副作用無法還原即可。工作階段內的實驗交給/rewind,永久歷史則交給 git。

下一集將介紹為 Claude 設定達成條件的/goal。設定目標後,每一輪結束時都會由另一個模型判斷是否符合條件;若尚未符合,工作就會繼續。

來源與確認基準

延伸閱讀

Claude Code 系列

相關主題