第 5 章:会话管理 — 长对话不迷路
(申请发送: agentupdate)
在前四章中,我们完成了番茄钟项目的安装、初始化、规划和核心功能实现。随着项目深入,对话会越来越长,可能会涉及多个功能并行开发。如何在不同任务间切换,如何保存重要的决策过程,如何清理上下文而不丢失进度?本章将介绍 Claude Code 的会话管理命令,帮助你在长时间开发中保持条理清晰。
5.1 会话生命周期
Claude Code 会话从启动到退出形成完整的生命周期。一个会话包含:
- 对话历史:你与 Claude 的所有问答记录
- 文件状态:已读取、修改的文件内容和上下文
- 上下文记忆:Claude 对项目结构和代码的理解
这些信息共同构成了一个会话的"记忆"。使用 /resume 命令可以查看所有会话列表,它们按时间顺序排列,你可以通过命名来标记特定会话,方便后续识别和恢复。
5.2 /clear — 开始新对话
语法
/clear [name]
功能说明
清空当前对话的上下文历史,开始一个全新的对话。项目记忆文件(CLAUDE.md)会保留,但之前的所有对话内容都会被清除。之前的对话可以通过 /resume 命令恢复,不会永久丢失。
传递名称参数可以为当前会话命名,这样在 /resume 的选择器中更容易识别。
实际使用示例
/clear timer-done
这个命令会清除当前对话历史,并将刚结束的会话命名为"timer-done",之后可以通过 /resume 恢复。
注意事项/技巧
- 别名:
/reset、/new可以互换使用 - 与
/compact的区别:/compact会压缩当前对话历史但继续在同一对话中,/clear则是彻底开始一个新的对话 - 建议在完成一个完整功能模块后使用
/clear,命名规则可以是"功能名-done"或"功能名-phase1"等 - 项目文档 CLAUDE.md 是全局的,不受
/clear影响,适合记录跨会话的架构决策
5.3 /resume — 恢复之前的对话
语法
/resume [session]
功能说明
恢复之前关闭或中断的对话,可以按会话 ID 或名称恢复。如果不带参数,会打开一个交互式选择器,显示所有可恢复的会话列表。
实际使用示例
/resume
打开会话选择器,从中选择要恢复的对话。
/resume timer-done
直接恢复名为"timer-done"的会话。
注意事项/技巧
- 别名:
/continue功能相同 - 使用场景:关闭终端后想继续之前的工作、切换回未完成的任务分支
- 命令行启动时也可以恢复:
claude --resume或claude --continue - 恢复后,所有之前的上下文(文件内容、对话历史)都会完整保留
- 对于长时间未恢复的会话,建议先查看对话摘要,确认是否需要恢复
5.4 /branch — 创建对话分支
语法
/branch [name]
功能说明
在当前对话的时间点创建一个分支,保留原始分支不变。你会自动切换到新分支,可以在这里进行不同的尝试或临时任务。原始分支可以通过 /resume 返回。
实际使用示例
/branch fix-timer-bug
创建一个名为"fix-timer-bug"的分支,专门处理计时器的一个 bug,同时保留主对话的当前状态。
注意事项/技巧
- 别名:
/fork可以互换使用 - 使用场景:实现做到一半想尝试不同方案、临时处理紧急 bug 不想打断主流程
- 分支是独立的,新分支的修改不会影响原始分支
- 可以创建多个分支,每个分支有自己的对话历史和上下文
- 使用
/resume时,所有分支都会显示在选择器中,便于切换
5.5 /rename — 命名会话
语法
/rename [name]
功能说明
为当前会话设置一个名称,该名称会在提示栏显示,方便识别。如果不带参数,Claude 会根据对话历史自动生成一个名称。
实际使用示例
/rename todo-implementation
将当前会话命名为"todo-implementation"。
/rename
让 Claude 自动生成一个会话名称。
注意事项/技巧
- 会话名称会显示在
/resume选择器中,便于快速识别 - 建议在会话开始时或完成关键步骤后命名
- 命名规范:使用有意义的描述性名称,如"feature-todo-list"、"bugfix-timer-stopping"等
- 可以随时修改会话名称,
/rename会覆盖之前的名称
5.6 /export — 导出对话记录
语法
/export [filename]
功能说明
将当前对话的历史记录导出为纯文本文件。如果提供文件名,直接写入指定文件;如果不带参数,会打开文件保存对话框让你选择位置和名称。
实际使用示例
/export timer-design.md
将当前对话导出到项目目录下的 timer-design.md 文件。
/export
打开文件保存对话框,选择导出位置和文件名。
注意事项/技巧
- 导出格式为纯文本,便于分享和版本控制
- 使用场景:保存重要的设计决策、技术选型过程、问题排查记录
- 导出的文件可以提交到 Git,作为项目文档的一部分
- 对于长对话,导出前可以先用
/compact压缩,去除冗余内容 - 导出的内容包含时间戳,便于追溯决策的时间点
5.7 /stop — 停止后台会话
语法
/stop
功能说明
停止当前附加的后台会话。会话的日志文件和任何创建的 worktree 都会保留在磁盘上,只是停止会话进程。
实际使用示例
/stop
停止当前附加的后台会话。
注意事项/技巧
- 仅在附加到后台会话时可用,普通会话中此命令不可用
- 如果想分离但不停止后台会话,使用
/exit或按左箭头键 - 停止后会话可以重新通过
/resume恢复 - 日志和 worktree 保留,确保工作成果不会丢失
- 适用于长时间运行的后台任务完成后的清理
5.8 动手做:多任务切换
让我们通过一个实际场景来练习会话管理。假设你在开发番茄钟计时器功能时发现一个小 bug,需要临时修复,同时还在规划 Todo List 功能。
Step 1:发现 bug
在计时器开发过程中,你发现计时器在暂停后再开始时时间计算有误。
Step 2:创建分支处理 bug
使用 /branch 命令创建一个专门的 bug 修复分支:
/branch fix-timer-bug
现在你在新分支中,可以专注于修复这个 bug,不会影响主对话的上下文。
Step 3:修复 bug 并导出过程
修复完成后,将修复过程导出保存:
/export timer-fix.md
这样就有了详细的修复记录,方便后续参考和代码审查。
Step 4:返回主对话
使用 /resume 回到主对话:
/resume
在选择器中找到你的主对话(可能是未命名的对话或之前的名称),恢复继续开发。
Step 5:继续 Todo List 开发
在主对话中继续实现 Todo List 功能,不受 bug 修复分支的影响。
Step 6:完成后命名会话
Todo List 功能完成后,命名当前会话:
/clear todo-done
这样你的进度清晰标记,可以在需要时恢复。
通过这个流程,你学会了:
- 使用
/branch分支处理临时任务 - 使用
/export保存重要过程 - 使用
/resume在不同会话间切换 - 使用
/clear完成并标记会话
本章小结
本章介绍了 Claude Code 的会话管理功能,核心命令包括:
/clear:清空对话开始新会话,可命名便于识别/resume:恢复之前的对话,支持交互选择器/branch:创建对话分支,保留原始会话/rename:为会话命名,便于管理/export:导出对话记录,保存决策过程/stop:停止后台会话,保留工作成果
这些命令帮助你在长时间开发中保持清晰,在不同任务间灵活切换,同时保留重要的上下文和决策记录。
在下一章,我们将学习如何使用 /compact 和 /summarize 来管理长对话,保持对话的精简和高效。