Appearance
Claude Code 会话可以按名称、PR、会话 ID 或最近一次记录继续,也可以在 /resume 里切换、重命名、分支和导出。CLI 的会话历史按项目目录保存,/clear 只会清空当前上下文,不会删除可恢复的会话;/export 能把当前对话写成可读文本,转录文件默认在 ~/.claude/projects/<project>/<session-id>.jsonl。
Claude Code 会话怎么继续、分支和导出
Claude Code 的会话是绑定到项目目录的本地保存对话。你可以在退出后继续上次对话,给会话命名方便检索,把当前对话分支成另一条路线,或者在不同任务之间切换。
桌面应用、Claude Code on the web 和 VS Code 扩展 都各自维护独立的会话历史。这里讲的是 CLI。
- 继续会话:用参数、名称或 PR 恢复之前的对话
- 命名会话:给会话起一个好找的名字
- 使用会话选择器:在
/resume里浏览和搜索会话 - 分支会话:复制当前对话,尝试另一种方案
- 导出和定位会话数据:导出转录,并找到本地文件
继续会话
会话会在你工作时持续保存到本地转录文件,所以即使退出或执行 /clear,之后也能继续。
可用入口如下:
| 命令 | 作用 |
|---|---|
claude --continue | 继续当前目录里最近的一次会话 |
claude --resume | 打开会话选择器 |
claude --resume <name> | 直接继续指定名称的会话 |
claude --from-pr <number> | 继续与该 pull request 关联的会话 |
/resume | 在当前会话里切换到另一段对话 |
用 claude -p 或 Agent SDK 创建的会话不会出现在会话选择器里,但你仍然可以通过把 session ID 传给 claude --resume <session-id> 来恢复它。
会话选择器会查哪些会话
会话按项目目录保存。默认情况下,会话选择器会显示当前 worktree 中的交互式会话,也会显示那些在别处启动、但通过 /add-dir 加入了当前目录的会话。按 Ctrl+W 可以扩大到当前仓库的所有 worktree,按 Ctrl+A 可以扩大到这台机器上的所有项目。
从同一仓库的另一个 worktree 里选中会话时,会在原位继续它。选中不相关项目里的会话时,系统会改为把 cd 和 resume 命令复制到剪贴板。
按名称恢复时,查找范围覆盖当前仓库及其 worktree。两种形式都会先找精确匹配,并直接恢复,即使它位于其他 worktree 里:
| 命令 | 精确匹配 | 名称有歧义时 |
|---|---|---|
claude --resume <name> | 直接继续 | 打开会话选择器,并把名称预填为搜索词 |
/resume <name> | 直接继续 | 报错;改用不带参数的 /resume 打开会话选择器 |
命名会话
给会话起一个描述性名字,方便在会话选择器里找到,也方便后续按名称恢复。并行处理多个任务时,这一点最有用。
| 时机 | 设置方式 |
|---|---|
| 启动时 | claude -n auth-refactor |
| 会话中 | /rename auth-refactor。名字也会显示在提示栏上 |
| 从会话选择器里 | 选中会话后按 Ctrl+R |
| 接受 plan 时 | 在 plan mode 中接受计划时,会根据计划内容自动命名,除非你已经手动设置过名称 |
一旦会话被命名,就可以用 claude --resume <name> 或 /resume <name> 回到它。关于名称在不同 worktree 中如何解析,见继续会话。
使用会话选择器
在会话内运行 /resume,或者在命令行里执行不带参数的 claude --resume,都会打开交互式会话选择器。下面这些快捷键可以用来浏览、搜索和扩大列表范围:
| 快捷键 | 操作 |
|---|---|
↑ / ↓ | 在会话之间移动 |
→ / ← | 展开或折叠分组会话 |
Enter | 继续当前高亮的会话 |
Space | 预览会话内容。某些不会把 Ctrl+V 识别成粘贴的终端也可用 Ctrl+V |
Ctrl+R | 重命名当前高亮会话 |
/ 或任意可打印字符(Space 除外) | 进入搜索模式并过滤会话。也可以粘贴 GitHub、GitHub Enterprise、GitLab 或 Bitbucket 的 pull request / merge request URL 来查找创建它的会话 |
Ctrl+A | 显示这台机器上所有项目的会话。再按一次返回当前仓库 |
Ctrl+W | 显示当前仓库所有 worktree 的会话。再按一次返回当前 worktree。仅在多 worktree 仓库里显示 |
Ctrl+B | 只筛选当前 git 分支上的会话。再按一次显示所有分支 |
Esc | 退出会话选择器或搜索模式 |
每一行会显示会话名称;如果没有命名,则显示对话摘要或第一条提示词,同时显示最近活动时间、消息数量和 git 分支。按 Ctrl+A 扩大到所有项目后,还会显示项目路径。
由 /branch、/rewind 或 --fork-session 创建的分支会话,会按根会话分组显示。按 → 可以展开这一组。
分支会话
分支会把当前对话复制一份,并切换到这份副本,原会话保持不变。适合在不丢掉原路线的情况下试另一种方案。
在会话里运行带可选名称的 /branch:
text
/branch try-streaming-approach在命令行里,把 --continue 或 --resume 和 --fork-session 一起使用:
bash
claude --continue --fork-session原会话不会被修改,仍然可以在会话选择器里找到。执行 /branch 后,确认信息会打印两个 session ID:一个是你现在进入的新分支,另一个是原会话。要回到原会话,可以把原 session ID 传给 /resume,也可以用会话选择器,或者运行 /resume <original-name>。
你用“allow for this session”批准的权限,不会带到新分支里。若不 fork 而是在两个终端里继续同一个会话,两个终端发出的消息会交错写进同一份转录。
如果你要在单个会话里按检查点回退,见 Checkpointing。
管理会话内的上下文
这些命令只控制上下文窗口里的内容,不会离开当前会话:
/clear:用空上下文重新开始。之前的对话会被保存,之后仍可恢复/compact [instructions]:把历史压缩成摘要,也可以指定希望摘要重点关注的内容/context:显示当前有哪些内容在占用上下文
关于压缩如何与 CLAUDE.md、技能和规则一起工作,见 context window guide。关于什么时候该清空、什么时候该压缩,见 best practices。
导出和定位会话数据
运行 /export 可以把当前对话复制到剪贴板,或者保存成纯文本文件,消息和工具输出都会转成可读文本。你也可以传入文件名,直接写到那个文件里。
转录会以 JSONL 格式存储在 ~/.claude/projects/<project>/<session-id>.jsonl,其中 <project> 由你的工作目录路径派生得到。每一行都是一个 JSON 对象,表示一条消息、一次工具调用或一条元数据。要把会话存到 ~/.claude 以外的位置,可以设置 CLAUDE_CONFIG_DIR。这些本地文件默认会在 30 天后删除;可通过 cleanupPeriodDays 修改。
如果要完全禁止写入转录,设置 CLAUDE_CODE_SKIP_PROMPT_HISTORY;在非交互模式下则使用 --no-session-persistence。
相关页面
这些页面覆盖了与会话和并行执行有关的其他机制:
- Worktrees:在不同分支上运行隔离的并行会话
- Checkpointing:把代码和对话回退到更早的状态
- Context window:哪些内容会占用上下文,压缩后哪些内容会保留
- Non-interactive mode:
claude -p下的会话行为
常见问题
claude --resume 找不到我刚才的会话,为什么?
先确认你当前所在目录还是原来的项目目录。会话按项目目录存储,切到别的项目后,claude --resume 看到的是另一组历史。
/resume <name> 提示名称有歧义怎么办?
这种情况说明当前仓库或 worktree 里有多个同名会话。直接运行不带参数的 /resume,让会话选择器帮你选中具体那一条。
/clear 会删除会话记录吗?
不会。/clear 只是清空当前上下文窗口,之前的对话仍会保存为可恢复的会话。