恢復 session
Sessions 在您工作時會持續儲存到本地文字記錄檔案,因此您可以在退出或執行/clear 後返回到一個。使用這些進入點:
使用
claude -p 或 Agent SDK 建立的 sessions 不會出現在 session 選擇器中,但您仍然可以透過將其 session ID 傳遞給 claude --resume <session-id> 來恢復它。從啟動 session 的目錄執行此命令:session ID 查詢的範圍限於目前專案目錄及其 git worktrees,因此在其他地方建立的 session 會報告 No conversation found with session ID: <session-id>。
session 選擇器查看的位置
Sessions 按專案目錄儲存。預設情況下,session 選擇器顯示來自目前 worktree 的互動式 sessions,以及在其他地方啟動並使用/add-dir 新增目前目錄的 sessions。使用 Ctrl+W 擴展到儲存庫的所有 worktrees,或使用 Ctrl+A 擴展到此機器上的每個專案。
從 v2.1.169 開始,使用 /cd 移動 session 會將其重新定位到新目錄的專案儲存空間,因此之後會出現在該目錄的選擇器中。從 v2.1.196 開始,移動的 session 即使在當機或強制退出後,也會保持不在舊目錄的選擇器中。在較早的版本上,當舊路徑包含特殊字元(例如底線)時,在不乾淨的退出後,它也可能在舊目錄的清單中重新出現。
從同一儲存庫的另一個 worktree 選擇 session 會在原地恢復它。從不相關的專案選擇 session 會將 cd 和恢復命令複製到您的剪貼簿。
按名稱恢復會在目前儲存庫及其 worktrees 中解析。兩種形式都會尋找完全相符的項目,並直接恢復它,即使它位於不同的 worktree 中:
命名您的 sessions
為 sessions 提供描述性名稱,以便在 session 選擇器中找到它們並按名稱恢復。當您並行處理多個任務時,這最為重要。
session 命名後,使用
claude --resume <name> 或 /resume <name> 返回到它。請參閱恢復 session 以了解名稱解析在 worktrees 中的行為方式。
您從未命名的互動式 sessions 在啟動時仍會獲得預設顯示名稱。需要 Claude Code v2.1.196 或更新版本。預設名稱結合了工作目錄的名稱和一個兩字元的後綴,例如 my-app-3f,並在執行中 sessions 的列表中識別該 session,例如 agent view 和 claude agents --json 輸出。
預設名稱不是恢復控制代碼:claude --resume <name>、/resume <name> 和 session 選擇器只符合您設定的名稱。命名 session 會取代預設名稱。
使用 session 選擇器
在 session 內執行/resume,或不帶引數執行 claude --resume,以開啟互動式 session 選擇器。使用這些快捷鍵來導航、搜尋和擴展清單:
每一列顯示 session 名稱(如果已設定),否則顯示對話摘要或第一個提示,以及自上次活動以來的時間、訊息計數和 git 分支。使用
Ctrl+A 擴展到所有專案後,專案路徑會出現。
使用 /branch、/rewind 或 --fork-session 建立的分支 sessions 會分組在其根 session 下。按 → 展開群組。
分支 session
分支會建立迄今為止對話的副本並將您切換到其中,保持原始對話完整。使用它來嘗試不同的方法,而不會失去您所在的路徑。 從 session 內,執行/branch 並使用可選名稱:
Branched conversation,而不是查看壓縮摘要之外的原始第一個提示。
從命令列,將 --continue 或 --resume 與 --fork-session 結合:
/branch 確認會列印兩個 session ID:您現在所在的新分支和原始分支。要返回原始分支,將其 ID 傳遞給 /resume、使用 session 選擇器或執行 /resume <original-name>。您使用「允許此 session」核准的權限不會轉移到新分支。如果您在兩個終端中恢復同一 session 而不進行分支,來自兩者的訊息會交錯到一個文字記錄中。
有關單個 session 內基於 checkpoint 的 rewind,請參閱 Checkpointing。
在 session 內管理上下文
這些命令控制上下文視窗中的內容,而無需離開 session:/clear:以空上下文重新開始。先前的對話已儲存並可恢復,使用/resume恢復,或在同一個 Claude Code 程序中,從倒帶選單的前一個 session 項目/compact [instructions]:用摘要替換歷史記錄,可選擇性地專注於您指定的內容/context:顯示目前消耗上下文的內容
匯出和定位 session 資料
執行/export 以開啟一個選單,讓您將目前對話複製到剪貼簿或將其儲存為純文字檔案,訊息和工具輸出呈現為可讀文字。傳遞檔案名以略過選單並直接寫入該檔案。
從指令碼存取對話
/export 產生供人閱讀的呈現文字記錄。下列介面產生供指令碼解析的結構化資料:執行的 JSON 結果、session 文字記錄檔案的路徑,或事件的即時串流。根據觸發指令碼的內容選擇:
- 執行 Claude 一次並擷取結果:使用
--output-format json或stream-json叫用claude -p,以將非互動執行的結果、session ID、使用情況和成本擷取為結構化 JSON。 - 詢問現有 session 一個問題:將 session ID 傳遞給
claude -p --resume,以傳送後續提示(例如摘要要求),並擷取結構化回應。 - 對 session 事件做出反應:讀取 hooks 和 status line commands 作為輸入接收的
transcript_path欄位。SessionEndhook 可在 session 結束時封存文字記錄。 - 在 TypeScript 或 Python 應用程式中嵌入 Claude:使用 Agent SDK 以程式設計方式接收每條訊息。
jq 讀取答案:
文字記錄儲存位置
根據預設,文字記錄儲存為 JSONL,位置為~/.claude/projects/<project>/<session-id>.jsonl,其中 <project> 是您的工作目錄路徑,非英數字元已被 - 取代。每一行都是訊息、工具使用或中繼資料項目的 JSON 物件。項目格式是 Claude Code 的內部格式,在版本之間會變更,因此直接解析這些檔案的指令碼可能在任何版本上中斷。若要建立在 session 資料上,請改用 /export 或 指令碼介面。
位置、保留期和寫入行為可設定:
另請參閱
這些頁面涵蓋相關的 session 和平行處理機制:- Worktrees:在單獨的分支上執行隔離的平行 sessions
- Checkpointing:將程式碼和對話 rewind 到較早的點
- Context window:什麼填充上下文以及什麼在壓縮中存活
- Non-interactive mode:
claude -p下的 session 行為