跳到正文
docai.cc

DOCAI · 课程 · L3 · 18 分钟 · 命令参考

`claude -r` — 按 ID 恢复会话

同时推进多条任务时,用会话编号精确回到某一条对话:编号从哪里找、恢复前后各核对什么、旧会话里哪些东西不能当真。

Claude Code 程序员 · CLI 命令详解

你将学会

  • 能找到会话编号并用 claude -r 精确恢复指定会话
  • 能在恢复前后核对目录与代码状态
  • 能管理多条并行会话,避免上下文串线

当「最近一次」不够用

上午修登录,下午查构建,第二天要回上午那条线。这时 claude -c 可能把你送进下午的对话,因为它只认最近一次。按编号恢复解决的正是这个歧义:每个会话都有唯一标识,指定它,就精确落到那一条。

如果你只有一条线,按最近一次继续就够,见继续最近对话。线一多,编号才是可靠的路标。

编号在哪里找

最省事的入口是 claude -r 不带编号:当前版本会打开会话选择器,输入关键词过滤,方向键选中后回车。也可以直接在命令后跟编号或名称。

claude -r 7f3a9c2e

这串字符只是示意,别照抄。长写法是 --resume,效果一样。会话记录保存在用户目录的 .claude/projects 下,按项目分目录,文件名通常就是会话编号;目录结构各版本可能调整,找不到时以 claude -r 的列表为准。在会话里输入 /resume 也能回到选择器。

列表里通常显示开头几句或自动生成的标题,任务相似时很容易看错,所以别只靠它辨认。先确认它属于哪个任务,再看目录。

恢复前:先对目录

会话和项目绑在一起。进错目录再恢复,它面对的是另一套文件,之前聊的路径全对不上。先跑 pwd 和 git branch,确认分支与任务一致。

最稳的做法是先进入项目根目录再启动;要临时访问项目外的目录,可以用 --add-dir 把它加进来,具体写法以 claude --help 为准。

路径也要对。项目根目录和子目录启动,默认能读写的范围不同;上一级的 CLAUDE.md 会加载,但相对路径和命令都以当前目录为基准。拿不准就在项目根启动,不要从无关目录恢复。

恢复后:别信口头汇报

恢复的是对话记录,不是文件快照。上次停在权限确认,或你在别处改过代码,磁盘状态都可能和它以为的不同。

先让它复述:

这条会话最后改到哪一步?涉及哪些文件?下一步准备做什么?先不要执行命令。

再自己核对 git status 和 git diff。它说「已经改完」,你看到工作区干净,才算真的完成。

如果它要接着改代码,先让它重读相关文件再动手。隔了一夜,文件可能已经被你或同事改过,凭对话里的旧印象直接编辑,冲突就来了。

把编号变成索引

编号本身没有意义,两天后就认不出。记录时带三样:日期、任务、分支。例如「1113 登录修复 / fix-login」。放在待办或任务系统备注里,几条线并行时就是索引。记录不必复杂,一行字就够,关键是当天写完,别等周末再回忆。

列表里的标题多是系统自动生成的摘要,不一定准确。别指望靠它认任务,记录仍要自己写。团队共用一台机器时,退出前想一下会话里有没有不该留下的内容。

会话攒多了要清理。结论已经进代码或文档的,可以不留;共享电脑上注意,对话里可能有路径、配置片段,编号别随手发到公开频道。

什么时候不如新开一条

会话很长时,恢复后前几轮又慢又费。只是接着做最后一步,新开一条、把结论和约束贴进去,常常更划算。编号的另一个用途是查证历史,不一定非要续着跑。

还有一个信号:你发现自己在恢复后花很多时间解释「现在是什么情况」。这说明旧上下文已经成了负担,不如把结论压缩成几行,开一条干净的线。上下文越长,越容易把无关的旧结论带进来,见上下文窗口。

恢复带来的是上下文,权限模式通常也会跟着回来:在终端里用 claude -r 恢复时,会话原来在什么模式,回来大多还是什么模式,可以用 --permission-mode 覆盖。一次性的批准只对当时那次调用有效,不会自动变成长期规则。

多条线互不打扰之后,下一步是把重复动作写成脚本:脚本编写。

自测

先自己回答,再展开对照;答不上来就回到对应小节。
  1. 01已经有 claude -c,为什么还需要按编号恢复?看答案

    它只认最近一条。同时开着多个任务时,「最近」随时会变,按编号才能确定回到哪一条。

  2. 02恢复会话后,能直接相信它说的「已经改完」吗?看答案

    不能。恢复的是对话记录,不是文件快照。要用版本控制命令核对工作区,必要时让它重读文件再汇报。

查看 Markdown

涉及的概念

在知识树上

相关动态

全部新闻 →