這套方法能救回的前提:對話檔還在硬碟上。
C:\Users\<使用者>\.claude\projects\<目錄>\*.jsonl —— 對話本體,沒有它內容救不回。%APPDATA%\Claude\claude-code-sessions\<workspace>\...\local_*.json —— Recents 靠它顯示。改任何檔案之前,先把 .claude\projects 和 claude-code-sessions 這兩個目錄各整包備份一份(防改壞)。
~/.claude/projects/ 裡的 .jsonl。索引在:%APPDATA%\Claude\claude-code-sessions\<workspace-uuid>\<sub-uuid>\local_*.json
local_*.json = 一筆對話:cliSessionId 指向 projects 裡的 jsonl 檔名、title 是 Recents 顯示的標題、cwd 決定它屬於哪個 workspace。claude-code-sessions 底下每個 workspace 資料夾,讀裡面的 local_*.json,統計各 workspace 的 cwd 與筆數 → 找出「歷史對話在哪個 workspace」。C:\Users\<使用者>\.claude\sessions\*.json 的 cwd → 那是「使用者現在開 App 停的工作目錄」。解法 A(最乾淨,優先建議):請使用者在 Code 模式點「New session」,工作目錄選 cwd A(歷史所在資料夾),Recents 立刻出現,不動任何檔案。
解法 B(使用者想在「目前位置 cwd B」就看到全部歷史):把 workspace X 的記錄並入 workspace Y——
對 X 裡每一筆「有對應 jsonl」的 local_*.json:
cwd、originCwd 改成 cwd B,sessionId 換成新的唯一值(cliSessionId 不動);<cliSessionId>.jsonl 複製到 cwd B 對應的 projects 目錄。請使用者完全重啟 App(系統匣右鍵 Quit,或工作管理員結束 Claude.exe),再重開。Recents 是啟動時載入的,不重啟看不到變化。
u2420 之類可能被誤轉成怪字元(U+2420 ␠);務必核對實際落地路徑。_ 變成橫線 -(claude_work→claude-work),導致跟 App 認的 cwd 對不上,要核對。C:\Users\<你>\.claude\projects\ ← 所有對話內容(jsonl,本體)C:\Users\<你>\AppData\Roaming\Claude\claude-code-sessions\ ← Recents 索引(local_*.json)C:\Users\<你>\.claude.json ← projects / workspace 註冊(建議一起)還原時三者一起回去、且工作目錄 cwd 對得上,Recents 才會正常顯示。