太长不看版
- claude --continue(短写 claude -c)直接重新打开当前目录里最近一次对话,什么都不用选。claude --resume(短写 claude -r)会打开历史会话选择器,也可以带 session ID 或名字直接跳进去。
- 每个会话都以明文 .jsonl 记录存在 ~/.claude/projects/<项目目录>/<session-id>.jsonl,默认保留 30 天(cleanupPeriodDays 设置可改)。
- 会话还开着的时候用 /rename(或启动时 --name)起个好认的名字,之后 claude --resume <名字> 就能恢复——名字必须一字不差。
- "No sessions match" 几乎总是目录不对或名字打错了:会话只属于启动它的那个目录。另外记得升级 Claude Code——仅 v2.1.288 一个版本就修了四个 resume 相关 bug。
How to Resume an Old Session in Claude Code
频道:Prompt & Flow2:37
Resume Claude Code Conversations FAST with One Simple Command
频道:Vinod Sharma1:33
Save and Resume Any Claude Code Session | Next Session Prompt Skill
频道:Kyle Chalmers | Data + AI4:27
CLI reference — official documentation
官方文档:code.claude.com/docs
本页的每一个 flag、路径和选择器状态,都对照官方 CLI reference 和 data-usage 文档核实过。上面的终端录屏是画面来源——包括忘记会话名之后的完整找回流程;两个人脸出镜的视频只作事实来源:resume 流程速览和跨机器搬会话的 markdown 交接工作流。
截图版权归各自创作者所有,并深链到对应时间点;未使用任何人脸镜头。
Claude Code 恢复会话分步走查
第 1 部分 — 用 claude --resume 恢复
- 1
关闭会话之前先给它起个名
会话好认才好恢复。录屏里,创作者让 Claude Code 给当前对话起名,执行 /rename [open session 1] 后得到确认 "Session renamed to: [open session 1]"——名字徽章就显示在输入框旁边。然后 /exit 关闭会话。什么都不会丢:记录仍然留在磁盘上。

/rename [open session 1] 得到 "Session renamed to: [open session 1]" 确认,再 /exit——记录在关闭后依然保留。跳到 0:27 观看 - 2
在项目目录里运行 claude --resume
开个新终端,输入 claude --resume(短写 claude -r)。不带参数会打开历史会话选择器;带参数就直接进入 ID 或名字匹配的会话——这里输入的是 claude --resume [session 1]。录屏马上要演示的坑:必须在原会话启动的那个目录里运行。这次就是在 C:\Users\Z 主目录里启动的。

在 PowerShell 里输入 claude --resume [session 1]——在主目录里运行,接下来就要出事了。跳到 1:04 观看 - 3
通过文件夹信任提示
Claude Code 第一次打开某个文件夹时会先做安全确认:"Is this a project you created or one you trust?" 选 "1. Yes, I trust this folder" 再回车。这个提示只管文件访问权限,跟会话无关——只是这个文件夹之前没被信任过,恢复流程之前都要先过这一关。

"Quick safety check"——1. Yes, I trust this folder / 2. No, exit——Claude Code 打开文件夹前先问一句。跳到 1:12 观看 - 4
在 Resume session 选择器里搜索
没有精确匹配时,claude --resume 会打开标题为 "Resume session" 的交互选择器:一个搜索框加当前项目的会话列表。输入即筛选,回车进入,Esc 清空或取消。带名字启动时搜索框会预填——这里是 [session——列表随输入实时更新。

"Resume session" 选择器边打字边筛选——回车选择,Esc 清空搜索。跳到 1:16 观看
第 2 部分 — 选择器里找不到时
- 5
"No sessions match"——目录不对
整段录屏的核心一课:明明会话存在,选择器却回答 "No sessions match "[session 1]"."——因为会话属于启动它的文件夹,而选择器默认只看当前项目。提示行给出了出路:"Ctrl+A to show all projects";v2.1.223 起还会自动搜索其他项目,视频里那台 v2.1.220 还没有这个能力。

"No sessions match "[session 1]"."——会话就在磁盘上,但选择器只看主目录。跳到 1:22 观看 - 6
开一个普通 claude 会话来排查
想按内容而不是靠猜名字找回对话,就先开一个正常的 claude 会话。录屏里的欢迎横幅还顺手点名了刚才的错误——"Note: You have launched claude in your home directory"——确认选择器空空如也的原因是目录,而不是会话丢了。

C:\Users\Z 里的 Claude Code v2.1.220 欢迎横幅——home directory 提示解释了选择器为什么是空的。跳到 1:33 观看 - 7
让 Claude 帮你找上一个会话
在新会话里用大白话描述需求:"I forgot the name of my last session. Name it so I can resume it." Claude Code 能直接读磁盘上自己的历史记录,所以选择器帮不上忙的地方它照样能查。

提交 "i forgot the name of my last session name it so i can resume it"——Claude 开始翻记录。跳到 1:50 观看 - 8
Claude 按时间列出 ~/.claude/projects
Claude 的办法是对自己的存储跑一条 shell 命令:Get-ChildItem "C:\Users\Z\.claude\projects" -Recurse -Filter *.jsonl | Sort-Object LastWriteTime -Descending。这正是文档里的布局——每段对话都是 ~/.claude/projects 下的一个 .jsonl 记录,按项目分子文件夹,默认保留 30 天。

对 C:\Users\Z\.claude\projects 跑 Get-ChildItem,只看 *.jsonl,按新旧排序——会话真正的存放处。跳到 1:54 观看
第 3 部分 — 用 session ID 找回
- 9
Claude 用第一条消息认出每个记录
最新的那个记录是当前会话,于是 Claude 把最近几条记录的第一条用户消息各拉出来——文件形如 C:\Users\Z\.claude\projects\C--Users-Z\<session-id>.jsonl——用来给它们起名:一个 WiFi 信号调研项目、一次 "lets go to phase 2"、一个 WhatsApp 项目搭建。看第一条消息是区分同项目会话的可靠办法。

从 projects\C--Users-Z 下每个 .jsonl 里抽第一条用户消息,会话之间就能对上号。跳到 2:07 观看 - 10
Claude 给出答案:claude --resume <id>
回复直接点名目标并打印确切命令——"Resume it with: claude --resume 7d824e2f-2592-4625-b863-43d5f24670ab"——随后附上其余近期会话的表格,列出 Session ID、Last active、Opened with 三列,并注明其中一个 ID 是空的半途而废的开头,不值得恢复。

"Resume it with: claude --resume 7d824e2f-…",附 Session ID、Last active、Opened with 表格。跳到 2:18 观看 - 11
用 session ID 恢复会话
session ID 就是钥匙。关掉这个帮忙排查的会话,cd 进项目目录,运行 claude --resume <session-id>——或者直接传 .jsonl 记录的绝对路径。想另起炉灶就加 --fork-session,复用记录但生成新的 session ID。对话会带着完整上下文重新打开。

提示符里输入的 session ID——claude --resume <id> 重新打开那段确切的对话。跳到 2:32 观看
--resume、--continue 与会话选择器对比
Claude Code 提供了好几条回到旧对话的路,区别在于你要做多少决定:
- 1claude --continue(短写 claude -c)——零决定。直接重开当前目录最近一次对话,v2.1.257 起也包括已结束的后台会话。适合"我刚把它关了"。
- 2claude --resume(短写 claude -r)不带参数——交互选择器。列出当前项目的会话(仍在后台跑的会标 bg);Ctrl+A 扩大到所有项目,Esc 取消。适合一个目录里有多个会话时。
- 3claude --resume <id | 名字 | 路径>——直达。接受 session ID、用 /rename 或 --name 起的准确名字、或 .jsonl 记录的绝对路径。v2.1.223 起,ID 不在当前项目时还会自动搜其他项目。
- 4会话内的 /resume 和 /rename——不退出 REPL 就能切换对话,并给当前会话贴上名字,明天的 claude --resume <名字> 一击即中。名字全局唯一,撞了会自动加后缀。
- 5claude --resume <id> --fork-session——分叉而不是续写。复用记录但生成新的 session ID,原会话历史原样冻结,相当于一个存档点。
- 6claude attach <id>——接手仍在后台跑的会话。选择器会给活跃会话标 bg;attach 之后你的下一条提示就是那个会话的下一轮。
录屏只演示了 --resume,--continue 一帧都没出现——这是视频的取材范围,不是功能边界。官方 CLI reference 把两个 flag 并列写清;视频没讲到的部分,上面对比以文档为准。
Claude Code 恢复会话不生效——真正管用的修法
大多数"resume 没反应"都能归到下面其中一条,按顺序排查:
- 1目录不对。选择器只看当前项目的会话——录屏就是在 C:\Users\Z 里这样翻车的。cd 回会话启动的那个文件夹;v2.1.223 起 --resume 也会搜其他项目,但站对目录仍然是最快的路。
- 2版本太旧。仅 v2.1.288 就修了四件事:--resume 丢掉刚被 compaction 恢复的文件、恢复后的会话没保存上一轮回复(下次 resume 看起来提示没人答过)、记录加载被截断、以及恢复 2.1.286 及更早会话时丢失思考过程。v2.1.290 修了 --resume <session-id>;v2.1.292 修好了选择器里的计划模式状态。
- 3会话过期了。记录默认保留 30 天——cleanupPeriodDays 设置可以改窗口——而无头的 -p 运行根本不落盘。claude rm 只是把会话从列表里拿掉,但被清理掉的记录谁也救不回来。
- 4名字对不上。--resume 的名字匹配是精确匹配。录屏里的 claude --resume [session 1] 连错两次:真名字是 "open session 1",而且方括号本身也被当成了搜索词。去掉括号,带空格的名字加引号。
- 5--continue 抓错了对象。它会跳过 print 模式(-p)/SDK 和 /loop 会话,而且只看当前目录——如果这期间有别的会话碰过这个文件夹,放弃它,改用 ID 恢复。
- 6换了台电脑。~/.claude/projects 是本机的,笔记本上创建的会话在台式机上并不存在。要么按相同目录结构把项目文件夹拷过去,要么学 markdown 交接:让 Claude 把会话状态、决定和下一步写进一个文件,同步过去,在另一台机器上接着聊。
以上都不管用?直接打开 ~/.claude/projects 看 .jsonl 文件的时间戳。文件还在,claude --resume 加绝对路径就是最硬核的进法;文件不在,说明这段对话从没写进过磁盘。
