这篇适合谁、读完能做到什么
适合经常在同一个项目里同时推进几件事、又总遇到会话变长、模型开始「忘事」的人。读完你能按需续接旧会话,给会话起好名字,分叉出一份新对话去试方案,并知道什么时候该用 /clear、什么时候用 /compact,以及压缩之后哪些内容会自动回来。
会话是什么
在 Claude Code 里,会话(session)就是一段保存下来的对话,并且和项目目录绑定。你工作时它会持续写到本地,所以退出之后或者执行 /clear 之后,都还能接着回去[1]。会话的历史是一份 JSONL 转录文件,默认放在 ~/.claude/projects/ 下面,路径里的项目名由工作目录转换而来[1]。
桌面应用、claude.ai/code 和 VS Code 扩展各有自己的会话列表,这篇只讲命令行版本[1]。
续接:找回上次的对话
几个入口最常用:
claude --continue:重新打开当前目录里最近的一个会话[1]。claude --resume:打开会话选择器。claude --resume <名字>:直接续接指定名字的会话[1]。claude --from-pr <编号>:只列出关联到某个拉取请求的会话[1]。- 会话内输入
/resume:切换到另一个会话[1]。
续接时,历史消息、工具调用和结果都会恢复。不过,如果上一个进程在工具运行中途崩溃了,那次工具调用不会被重新执行[1]。
有些启动参数不会自动恢复。原来启动时用了 --mcp-config、--settings、--plugin-dir、--fallback-model 或 --add-dir,续接时要重新传一遍[1]。
从终端续接时,权限模式也会恢复成会话结束时的样子。想换模式,用 --permission-mode 或 --dangerously-skip-permissions 覆盖[1]。
如果会话里有后台子智能体、后台 Bash 命令或工作流,它们在上一个进程结束时没有跑完,续接后的转录里会出现一条「未完成」的说明。Claude Code 不会因为这些说明自己开始一轮对话,它会在你下一条消息时才读到它们[1]。
给会话起名字
会话多了就得起名字,否则选择器里全是相似的标题。三种方式任选:启动时用 claude -n auth-refactor,会话里用 /rename auth-refactor,或者在会话选择器里选中后按 Ctrl+R[1]。
没起名字的会话也有两个标签,但只有第二个能拿来续接。第一个是默认显示名,由工作目录名加两个字符的后缀组成,比如 my-app-3f,它只用来在运行中的会话列表里区分。第二个是自动生成的标题,由后台的小而快的模型根据第一条提示词概括而成,通常是 Haiku 级别的模型。直接在 shell 或脚本里运行的 claude -p 不会生成标题[1]。
会话选择器里有几个快捷键值得记住:/ 进入搜索,Ctrl+A 显示本机所有项目的会话,Ctrl+W 显示当前仓库所有 worktree 的会话,Ctrl+B 只看当前 git 分支的会话[1]。
分叉:试一个新思路
想试另一种做法,又不想丢掉现在的对话,就用 /branch。在会话里输入:
/branch try-streaming-approach不写名字时,新分支会以对话中第一条提示词命名。/branch 会复制到目前为止的对话,并把你切换到副本里,原会话保持不变,仍然留在选择器中[1]。
如果在命令行上操作,把 --fork-session 和 --continue 或 --resume 组合起来:
claude --continue --fork-session这里要注意一个容易踩的坑:同一个会话如果在两个终端里不分叉地同时续接,两边的消息会交错写进同一份转录,互相缠在一起[1]。想并行,就分叉。
管理上下文:/clear、/compact 和压缩
上下文窗口装着 Claude 对这次会话的全部了解:你的指令、读过的文件、它自己的回复[2]。会话内有几个命令可以直接管理它:
/clear:清空上下文,从零开始。之前的会话会被保存,之后可以用/resume找回[1]。切换到不相关的任务时,用/clear最干净。/compact [说明]:用一段摘要替换历史,还能加说明指定摘要的重点。例如/compact focus on the auth bug fix会让摘要保留认证问题的修复过程,而不是自动压缩猜测的重点[1][2]。/context:实时查看各类内容各占多少上下文[1]。
Claude Code 在接近上限时会自动压缩。压缩时它把历史总结掉,同时会从磁盘重新注入一批东西:项目根目录的 CLAUDE.md、没有 paths: 限定的规则,以及自动记忆[2]。压缩后它还会重新读取最多五个最近修改过的文件,超过 5,000 token 的文件只保留路径引用,不回填内容[2]。
调用过的技能正文也会重新注入,每个技能最多 5,000 token,所有技能合计 25,000 token,超出时最早调用的先被丢掉[2]。
有一个容易忽略的地方:带 paths: 的规则和子目录里的嵌套 CLAUDE.md 只有在 Claude 读写对应文件时才会加载进消息历史,压缩时它们会和其他内容一起被总结掉。如果某条规则必须一直生效,去掉 paths: 或者移到项目根目录的 CLAUDE.md 里[2]。
把大块阅读交给子智能体
读大量文件的调研工作,最好交给子智能体。它在自己的上下文窗口里完成,只把摘要和一小段元数据返回给主会话,所以主会话的上下文不会被文件内容撑满[2]。
从脚本里读会话
/export 能把对话导出成可读文本,供人阅读,可以复制到剪贴板,也可以写进文件[1]。如果要让脚本处理,就要用结构化的接口。比如下面这条命令向已有会话发一条后续提示,再用 jq 取出回答:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'不要直接去解析 .jsonl 文件。转录里的条目格式是 Claude Code 内部的,会随版本变化,直接解析的脚本随时可能失效[1]。
限制和常见问题
- 保留期只有 30 天。 默认保留 30 天的转录,要更长就改
settings.json里的cleanupPeriodDays[1]。 - **
claude -p的会话找不到。** 通过claude -p或 Agent SDK 创建的会话不在选择器里,claude --continue也会跳过它们,只能用claude --resume <session-id>直接续接[1]。 - 按 ID 续接可以跨目录。 你可以在任何目录里运行
claude --resume <session-id>,Claude Code 会先在当前项目和 worktree 里找,再搜本机其他项目[1]。 - 压缩不等于清空。 压缩后规则是否还在,取决于它有没有
paths:限定[2]。
下一步
会话的其他细节,会话与 worktree 怎么配合等其他细节,都可以直接看官方文档[1]。
来源
- 1Manage sessionsAnthropic Claude Code docs
- 2Explore the context windowAnthropic Claude Code docs
引用本页: Claude Code 会话续接与上下文管理. TellWorld, https://www.tellworld.net/zh/practice/practice-claude-code-sessions-context. 更新于 2026-11-14