跳转到内容

会话管理

新手用 Claude Code,开一个会话从早写到晚,什么功能都往里塞,聊到下午上下文已经糊成一锅。高手不一样:一个功能、一次重构、一个子系统 = 一个会话,每个会话有名字,做完能回溯,下次能接着干。

会话管理是 Claude Code 长期使用的刚需。这一篇讲清楚怎么命名、怎么恢复、怎么分叉、怎么从 PR 续上。

高手复盘里有一条朴素但有效的规矩:

一个功能/重构/子系统 = 一个会话,会话名 = 任务名。

不要把所有事情倒进一个会话。重构 auth 是 auth-refactor,加支付回调是 payment-webhook,修性能瓶颈是 perf-bottleneck——每个任务一个独立会话,名字直接说明在干什么。

为什么这样做?三个理由:

  1. 上下文干净——每个会话只装一件事的来龙去脉,不会被无关讨论污染。
  2. 能回溯——一周后你想起来「当时 auth 重构是怎么决策的」,按名字恢复会话就能翻到。
  3. 自动生成开发日志——会话历史天然就是一份带时间戳的工作记录,比手写日志完整。

会话跑起来第一件事,是给它改名。用斜杠命令:

/rename auth-refactor

高手复盘里强调一个细节:别等做完再改。会话刚开起来、任务方向定了,就立刻 /rename。这样后续恢复、回溯、引用都对得上号,不用面对一堆 session-2024-11-03-abc123 这种没意义的默认名。

回头接着干一个之前开过的会话,用 /resume

/resume auth-refactor

也可以不带参数,让它列出最近的会话给你挑。恢复后,之前的对话上下文、读过的文件、做过的改动记录都还在,不用从头交代背景。

这就是「会话名 = 任务名」的红利:你不用记一串 session id,记任务名就行。

不在交互模式里、想直接从命令行续上,有几个 flag:

命令 作用
claude -c 继续最近一个会话
claude -r <id-or-name> 按 id 或名字恢复指定会话
claude --name <name> / claude -n <name> 启动时就给会话命名
claude --fork-session 从当前会话分叉出一条新线
claude --from-pr 123 从 PR 123 的上下文恢复会话
claude --no-session-persistence 这次不持久化,跑完就忘

几个常用场景:

Terminal window
# 接着昨天那个 auth-refactor 干
claude -r auth-refactor
# 开个新会话并直接命名
claude -n payment-webhook
# 从 PR 续上,让 Claude 读懂 PR 上下文再继续
claude --from-pr 123

--fork-session 是个被低估的能力。它从当前会话分叉出一条新线——原来的会话不动,新会话继承所有上下文,但从分叉点开始走自己的路。

适合什么场景?想试一个方向,又怕搞砸原来的进度

(auth-refactor 会话进行到一半,你想试个激进方案)
$ claude --fork-session
(在新会话里试激进方案,原来的 auth-refactor 一字未动)
(试成了,把方案搬回原会话;试不成,丢掉这条分叉即可)

这和 /rewind 安全绳 是一对:rewind 是会话内回退,fork 是会话级分叉。一个管单次会话里的探索,一个管整条任务线的实验。

--from-pr <number> 让会话带着 PR 的上下文启动——Claude 会先读懂这个 PR 改了什么、为什么这么改,然后接着你的指令走。

典型场景:

  • PR review 后续修——同事 review 提了一堆意见,开个会话从 PR 续上,让 Claude 在 PR 上下文里挨个修。
  • 接手别人的 PR——同事休假了,他的 PR 还没合,你从 PR 起一个会话接着干。
  • PR 出了 CI 失败——从 PR 续上,让 Claude 直接看 CI 报错修。
Terminal window
claude --from-pr 123

有些活你不想留痕——比如一次性脚本、临时探索、或者涉及敏感数据不想被持久化。用 --no-session-persistence

Terminal window
claude --no-session-persistence

这次会话不存历史,关了就没了。适合「我就是想知道个答案,不需要回溯」的场景。

把上面的习惯串起来用,你会得到一个自动生成的开发日志

  • 每个任务一个会话,名字就是任务名
  • 会话里天然有「为什么这么做」「改了哪些文件」「踩了什么坑」
  • 按时间或名字随时回溯

比起手写开发日志,这套是被动积累的——你正常干活,日志自己就有了。一周后写周报,/resume 翻几个会话,内容比凭记忆写的准得多。

为什么把这个单列一篇?因为短期用 Claude Code 体会不到它的价值——你只开一两个会话,乱点也无所谓。但长期、每天用、跨多个项目,会话管理就是刚需:

  • 没有命名习惯,一周后面对几十个 session-xxx 找不到要续的那个。
  • 没有分叉习惯,想试个方向又怕搞砸,只能纠结不敢动。
  • 没有从 PR 续上的习惯,接手别人的活要花半小时重新交代背景。

这些痛点短期不显,长期致命。所以会话管理的习惯,越早养成越省事

一个功能一个会话,会话名 = 任务名。/rename 立刻命名,/resume 或 claude -r 按名恢复,claude -c 续最近,–fork-session 分叉实验,–from-pr 从 PR 续上。长期用,会话历史就是自动开发日志。


下一步,去看 上下文管理——会话里的 token 怎么管才不爆炸。🚀