恢复会话
会话在您工作时持续保存到本地文本记录文件,因此您可以在退出或运行/clear 后返回到一个会话。使用这些入口点:
使用
claude -p 或 Agent SDK 创建的会话不会出现在会话选择器中,但您仍然可以通过将其会话 ID 传递给 claude --resume <session-id> 来恢复它。从会话启动所在的目录运行此命令:会话 ID 查找的范围限于当前项目目录及其 git worktrees,因此在其他地方创建的会话会报告 No conversation found with session ID: <session-id>。
会话选择器查看的位置
会话按项目目录存储。默认情况下,会话选择器显示来自当前 worktree 的交互式会话,以及在其他地方启动但使用/add-dir 添加了当前目录的会话。使用 Ctrl+W 扩展到存储库的所有 worktree,或使用 Ctrl+A 扩展到此计算机上的每个项目。
从 v2.1.169 开始,使用 /cd 移动会话会将其重新定位到新目录的项目存储中,因此之后它会出现在该目录的选择器中。从 v2.1.196 开始,移动的会话在崩溃或强制退出后会保持不在旧目录的选择器中。在较早的版本中,当旧路径包含下划线等特殊字符时,在不干净的退出后,它也可能在旧目录的列表中重新出现。
从同一存储库的另一个 worktree 选择会话会在原地恢复它。从不相关项目选择会话会将 cd 和恢复命令复制到您的剪贴板。
按名称恢复会跨当前存储库及其 worktree 解析。两种形式都查找精确匹配并直接恢复它,即使它位于不同的 worktree 中:
命名您的会话
为会话提供描述性名称,以便在会话选择器中可以找到它们,并可以按名称恢复。当您并行处理多个任务时,这一点最重要。
会话命名后,使用
claude --resume <name> 或 /resume <name> 返回到它。有关名称解析如何跨 worktrees 工作的信息,请参阅恢复会话。
您从未命名的交互式会话在启动时仍会获得默认显示名称。需要 Claude Code v2.1.196 或更高版本。默认名称将工作目录的名称与两个字符的后缀组合在一起,例如 my-app-3f,并在运行会话的列表中标识会话,例如 agent view 和 claude agents --json 输出。
默认名称不是恢复句柄:claude --resume <name>、/resume <name> 和会话选择器仅匹配您设置的名称。命名会话会替换默认名称。
使用会话选择器
在会话内运行/resume,或不带参数运行 claude --resume,以打开交互式会话选择器。使用这些快捷键导航、搜索和扩展列表:
每行显示会话名称(如果已设置),否则显示对话摘要或第一个提示,以及自上次活动以来的时间、消息计数和 git 分支。使用
Ctrl+A 扩展到所有项目后,项目路径会出现。
使用 /branch、/rewind 或 --fork-session 创建的分叉会话会分组在其根会话下。按 → 展开一个组。
分支会话
分支创建迄今为止对话的副本并将您切换到其中,保持原始对话完整。使用它来尝试不同的方法而不会丢失您所在的路径。 从会话内,运行带有可选名称的/branch:
Branched conversation,而不是查看 compaction 摘要之外的原始第一个提示。
从命令行,将 --continue 或 --resume 与 --fork-session 结合:
/branch 确认打印两个会话 ID:您现在所在的新分支和原始分支。要返回到原始分支,将其 ID 传递给 /resume、使用会话选择器或运行 /resume <original-name>。您使用”允许此会话”批准的权限不会转移到新分支。如果您在两个终端中恢复同一会话而不分叉,来自两者的消息会交错到一个文本记录中。
对于单个会话内基于 checkpoint 的回退,请参阅 Checkpointing。
管理会话内的上下文
这些命令控制上下文窗口中的内容而不离开会话:/clear:以空上下文重新开始。之前的对话已保存并可通过/resume恢复,或在同一个 Claude Code 进程中,从倒带菜单的上一个会话条目恢复/compact [instructions]:用摘要替换历史记录,可选地专注于您指定的内容/context:显示当前消耗的上下文
导出和定位会话数据
运行/export 打开一个菜单,让您将当前对话复制到剪贴板或将其保存为纯文本文件,消息和工具输出呈现为可读文本。传递文件名以跳过菜单并直接写入该文件。
从脚本访问对话
/export 生成一个供人阅读的呈现文本记录。下面的接口生成结构化数据供脚本解析:运行的 JSON 结果、会话文本记录文件的路径或事件的实时流。根据触发脚本的内容选择:
- 运行 Claude 一次并捕获结果:使用
--output-format json或stream-json调用claude -p以捕获非交互式运行的结果、会话 ID、使用情况和成本作为结构化 JSON。 - 向现有会话提问:将会话 ID 传递给
claude -p --resume以发送后续提示(例如摘要请求),并捕获结构化响应。 - 对会话事件做出反应:读取 hooks 和 status line commands 作为输入接收的
transcript_path字段。SessionEndhook 可以在会话结束时存档文本记录。 - 在 TypeScript 或 Python 应用中嵌入 Claude:使用 Agent SDK 以编程方式接收每条消息。
jq 读取答案:
文本记录存储位置
默认情况下,文本记录存储为 JSONL,位置为~/.claude/projects/<project>/<session-id>.jsonl,其中 <project> 是您的工作目录路径,非字母数字字符被替换为 -。每行是消息、工具使用或元数据条目的 JSON 对象。条目格式是 Claude Code 的内部格式,在版本之间会发生变化,因此直接解析这些文件的脚本可能在任何版本上中断。要基于会话数据构建,请改用 /export 或 脚本接口。
位置、保留期和写入行为是可配置的:
另请参阅
这些页面涵盖相关的会话和并行性机制:- Worktrees:在单独的分支上运行隔离的并行会话
- Checkpointing:将代码和对话回退到较早的点
- Context window:什么填充上下文以及什么在压缩中保留
- Non-interactive mode:
claude -p下的会话行为