先問你自己一個問題:終端機不小心關了,或電腦重開,那段跟 AI 弄到一半的對話——你想怎麼把它接回來?

大部分人卡住的地方,不是「不知道有沒有辦法接回來」,而是「辦法太多,不知道該用哪個」。Claude Code 至少有四條路可以帶你回到過去的對話,而它們解決的其實是不同的問題。搞混了,你會用挖地道的力氣去開一扇本來就開著的門。

所以這篇不從「怎麼操作」開始,從「你到底想接回什麼」開始。把這件事想清楚,該走哪條路自己就浮出來了。

先搞懂一件事:對話是被存下來的

在挑路之前,先拆開一個很多人沒意識到的機制:你跟 Claude Code 的每一段對話,都被完整存在硬碟上。

它存在 ~/.claude/projects/ 底下,用你當前目錄的雜湊分資料夾,一段對話一個 .jsonl 檔,檔案裡一行是一個事件——一則訊息、一次工具呼叫、一個結果。另外還有一份全域索引在 ~/.claude/history.jsonl,記著每段對話的 session id 和它是從哪個專案開出來的。

打個比方,這就像你講過的每通電話都被自動錄音存檔了。所以「找回對話」這件事,本質上不是「把消失的東西變回來」,而是「從一堆錄音檔裡,用對的方式撈出你要的那一段」。四條路,就是四種不同的撈法。

第一條路:你要的就是「剛剛那一段」→ --continue

最常見的情況:你剛剛還在跟 Claude 弄一個東西,電腦當機、或手殘把終端機關了,你只想無縫接回去。

這時候答案最簡單:

1
claude --continue   # 或簡寫 claude -c

它只做一件事:把你「當前目錄」最近的那段對話載入,直接把你丟回去。不問你任何問題、不跳選單、不用記任何 id。

費曼式的類比:這就是 Netflix 那顆「繼續播放」的按鈕。你不用去片庫翻你看到哪,它直接跳回你上次關掉的那一集那一分鐘。適合「我就是要接回剛剛」的場景,快到你不會想用別的方法。

有一個坑要記住:如果你是在腳本裡搭配 -p(headless 模式)用 --continue,它有時候會開一段新對話,而不是接回舊的。要在自動化裡穩穩接回同一段,別靠 --continue,改用下面第三條路的「指定 session id」。

第二條路:你要的是「好幾段裡的某一段」→ --resume

情況變了:你手上不只一段對話。一段在修付款的 bug,一段在開新功能的 dashboard,兩段平行進行。這時 --continue 只會給你「最近動過的那段」,但你想要的是另一段。

這條路是給你「精準挑」的:

1
claude --resume     # 或簡寫 -r,開互動選單

它會列出一張清單,每一列告訴你這段對話的名稱(如果你設過)、摘要或第一句話、多久沒動、有幾則訊息、在哪個 git branch。你用眼睛挑,挑中就進去。選單裡還有幾個好用的快捷鍵:Ctrl+W 把範圍擴到整個 repo 的所有 worktree、Ctrl+A 擴到整台電腦所有專案、Ctrl+B 只看你當前這個 branch、Space 不進去先預覽、Ctrl+R 當場改名。

--continue--resume 的差別,就像回家跟找車。--continue 是「回我家」——只有一個答案,閉著眼睛也走得到。--resume 是「在停車場找我的車」——有一整排,你得看著挑。

這裡有個很多人踩過的雷:只有你「自己設過名字」的對話,才能用 claude --resume <名稱> 直接跳過去。系統自動生成的那些預設名字不算數,拿它們當跳轉的 handle 會找不到。想之後好找,就在對話中途幫它取個名。

第三條路:你要的那段「選單裡根本看不到」→ --resume <session-id>

再刁鑽一點的情況:你用 claude -p 或 Agent SDK 在腳本裡跑過一段任務,現在想接回去——但你打開 --resume 的選單,翻遍了都找不到它。

這不是 bug。用 -p 或 SDK 跑的 session,設計上就不會出現在互動選單裡。但它沒有消失,還好好躺在硬碟上。只要你有它的 session id,就能直接接回:

1
claude --resume <session-id>

這招還有個進階用法,社群給它取了個很浪漫的名字叫「session archaeology」(對話考古)——你甚至可以把一段「在別的專案目錄開出來的」舊對話挖回來。前提是你手上有那段對話的 session id(去 ~/.claude/history.jsonl 裡翻)。

一個範圍上的陷阱:用 session id 找對話時,預設是綁在「你當前的專案目錄」和它的 worktree 上。如果那段對話是在別的目錄開的,你在錯的地方跑會得到「找不到這個 session id」。解法是回到它原本的目錄去跑,或明確指定。這也是為什麼在自動化腳本裡,把 session id 抓下來、之後回傳給 --resume,是唯一能保證「每次都接回同一段」的做法——比 --continue 可靠得多。

第四條路:你要的其實不是對話,是「AI 對你的認識」→ 記憶系統

這條路最容易被前面三條蓋掉,但它解的是完全不同的問題。

停下來想一個訊號:如果你發現自己「每開一段新對話,都在重講同一套專案背景、同一套個人偏好」——這個專案用什麼框架、你習慣怎麼命名、哪些坑不要踩——那你真正缺的,根本不是「接回某一段對話」。你缺的是「讓 AI 打從第一句話就記得這些」。

這時候硬去 resume 舊對話是搞錯方向了。你要的是記憶,不是接續。而記憶在 Claude Code 裡有兩層做法:一層是 CLAUDE.md,把專案的穩定事實寫成一份檔案,每次自動載入;另一層是 自動記憶系統,讓 AI 跨 session 自己累積對你的認識。

判準很乾脆:接回對話,是要回到「這件事做到哪」;建立記憶,是要 AI 記住「這個專案、這個人長什麼樣」。 前者是進度,後者是認識,兩個是不同的東西。你一直在用「接對話」的方式重建背景,就像每次見面都要重新自我介紹一次——問題不在你不會交換名片,在你們該建立長期關係了。

(順帶一提,還有第五扇偏門:如果那段對話是透過 GitHub PR 在雲端跑的,你可以用 PR 連結直接找回會話,貼個網址就跳回去。那是專門給雲端/PR 情境的路,這裡不展開。)

所以,到底該用哪個

不騎牆,給你一句話的判準。

大多數時候,你要的就是「接回剛剛」——那就 --continue,別想太多。只有當你「同時開了很多段」,或要挖一段「選單裡看不到的 headless / 舊 session」,才需要 --resume(前者用選單挑,後者用 session id 撈)。

而如果你回頭發現,自己一而再、再而三地在「接回對話來重建背景」——那是個訊號:你真正缺的不是 resume,是記憶。這時候該做的不是更熟練地找回舊對話,是把那些反覆重講的東西,一次寫進 CLAUDE.md 或交給記憶系統。

一句話收束整篇:接回對話之前,先問自己——我要回去拿的,是一段進度,還是一份認識? 答對這個問題,四條路你自己就分得清了。

參考來源:Manage sessions - Claude Code Docs