Skip to content

2.6 会话管理

预计耗时:10 分钟

本关任务简报

用着用着,Claude 开始"忘事"——明明之前讨论好的设计方案,现在它好像完全不知道了。或者你关了终端,第二天想继续昨天的工作,却发现不知道怎么找回来。

这一关解决两个核心问题:上下文用满了怎么办,以及怎么让会话跨越终端关闭继续存在。


通关奖励:解锁以下技能

  • 📊 理解上下文窗口的概念,知道为什么 Claude 会"忘事"
  • 🔄 能用 /compact/clear 正确应对上下文满的情况
  • 📂 能恢复昨天或上次的会话,继续之前的工作
  • 💰 知道怎么查当前会话的费用

开始前先检查装备

前置知识说明
2.3 斜杠命令指南 →/compact/clear/resume 都是斜杠命令,先知道斜杠命令的使用方式

机制解析

上下文窗口:Claude 的"短期记忆"

Claude 不是像人一样有无限记忆的 AI。它的记忆依赖上下文窗口——一个有容量上限的"当前对话缓冲区"。

你说的每句话、它的每次回复、每次工具调用的结果,都会占用这个窗口里的空间(以 token 计量)。窗口有上限,超出范围的内容会被截断,这就是为什么对话长了之后 Claude 会"忘记"早期内容的根本原因。

什么时候该关注上下文满的问题?

  • Claude 开始重复问你"你说的 X 是什么意思",但这个问题之前已经解释过
  • 它做出明显和之前讨论不符的操作
  • /context 显示上下文窗口快用满了(具体怎么看见下)

/context 看上下文占用

想直观知道"上下文还剩多少",用 /context

text
/context

它会显示当前上下文窗口的占用情况——系统提示、CLAUDE.md、工具定义、对话历史各占多少、还剩多少空间。加 all/context all)能展开逐项明细。

注意区分:/context 看的是上下文窗口占用(还能塞多少内容),/cost 看的是这次会话花了多少钱(token 量和估算费用),两者不是一回事。


/clear vs /compact:两种应对策略

遇到上下文快满的情况,有两条路:

/clear/compact [指令]
效果完全清空历史,从零开始把历史压缩成摘要,保留关键信息继续工作
信息保留什么都不保留Claude 自动判断保留什么(可以加指令)
适合场景一个任务完成了,开始新任务当前任务还没完,但上下文快满了

/compact 的用法

text
/compact

不带参数时,Claude 自动判断保留什么。

text
/compact 保留所有已确认的接口定义和数据库表结构,以及我们讨论好的架构决策

带参数时,明确告诉 Claude 什么内容一定不能丢。在处理复杂任务时,带参数的 /compact 更可靠。

注意:CLAUDE.md 的内容不受 /compact 影响,它在每次启动时都会重新加载。所以长期有效的约定放进 CLAUDE.md,比依赖对话历史更稳。


恢复历史会话

每次和 Claude 的对话都会保存在本地(每个会话一个 .jsonl 文件):

~/.claude/projects/<项目路径hash>/*.jsonl

你不需要手动找这些文件,Claude Code 提供了命令来恢复:

继续上一次会话(最常用):

bash
claude --continue

启动时自动接续最近那次会话,就好像终端从没关过一样。

从列表里选一个会话恢复

bash
claude --resume

会弹出历史会话列表,上下键选择,Enter 确认。

恢复指定 ID 的会话

bash
claude --resume <session-id>

session-id 在列表里可以看到。

这几个也有会话内用法:已经开着 Claude Code 时,直接输入 /resume(别名 /continue)就能调出同样的历史会话选择器,不必先退出再重开。

💡 装了 cc switch 的话,它的「会话管理」面板(主界面右上角钟表图标)能跨工具浏览并用关键词搜索历史会话,便于翻找回顾关键对话内容——比命令行翻列表更直观。详见 3.8 cc switch →


查看费用

text
/cost

显示当前会话消耗的 token 数量和估算费用。如果通过第三方平台接入,费用估算可能和实际账单有偏差,以平台后台为准。


倒回与检查点:会话内的"后悔药"

Claude Code 会自动给改动拍检查点(checkpoint):你每发一条提示就存一个还原点,Claude 用编辑工具改过的文件都被记录下来,而且跨会话保留。某几步把事情搞砸了,可以一键倒回。

怎么用

  1. 输入框为空时连续快速按两次 Escape(或直接输入 /rewind),打开倒回菜单
  2. 菜单列出本次会话里你发过的每一条提示,用 选中要回到的那一条
  3. 回车后,再选怎么还原——这里是三个英文选项,含义如下:
菜单选项含义
Restore code and conversation代码和对话回到那一刻(最彻底的"重来")
Restore conversation只把对话退回那条消息,保留当前代码
Restore code只还原文件改动,保留对话历史

菜单里通常还有 Summarize from here / up to here(把某一侧的对话压成摘要、腾出上下文空间,不动文件)和 Never mind(什么都不做、退回列表)。

重要边界——检查点只跟踪 Claude 用编辑工具改的文件,下面这些它管不了:

  • Claude 跑 bash 命令改的文件(rm / mv / cp 等)不在跟踪范围
  • 你在 Claude Code 之外手动改的、或别的会话改的文件
  • 已经 git commit 的永久历史

所以它的定位是"会话级的本地 undo",不替代 Git。真正要把整个项目还原到某个时刻、或防 bash 误删,仍然靠 Git(见 2.14 Git 入门 →)。


开始闯关

目标:用 --continue 恢复一次历史会话。

第 1 步:关掉当前会话

Ctrl+D/exit 退出 Claude Code。

第 2 步:重新启动并接续

在同一个项目目录下执行:

bash
claude --continue

你应该看到之前的对话历史被加载进来,Claude 知道你们之前聊过什么。

第 3 步:验证上下文还在

发一条消息,问 Claude 之前讨论的某个内容,确认它能"记住"。


通关检定

  • [ ] 知道上下文窗口是什么,以及为什么对话长了 Claude 会"忘事"
  • [ ] 能区分 /clear/compact 的适用场景
  • [ ] 用 claude --continue 成功恢复了一次历史会话
  • [ ] 知道 /cost 能查什么
  • [ ] 知道倒回模式(双击 Escape)和 /clear 的区别

全部点亮就算通关 ✓


卡关了?翻车指南在这

claude --continue 启动后,感觉上下文没有恢复

可能原因:① 你在不同的项目目录下启动,会话和目录绑定,换目录找不到同一批历史;② 上次会话已经超过一段时间,历史文件可能被清理。尝试 claude --resume 看列表里还有没有。

/compact 后 Claude 丢了重要信息

不带参数的 /compact 让 Claude 自主判断保留什么,它可能会漏掉你认为重要的细节。下次使用时加上明确的保留指令:/compact 保留[你不想丢的关键信息]

历史会话列表里找不到某个会话

会话按项目路径分类存储。如果你之前在 ~/projects/foo 下工作,现在在 ~/projects/bar 启动,看不到 foo 的历史。需要切换到正确的项目目录再 claude --resume


下一关

2.7 CLAUDE.md 配置 →

对话历史会消失,但 CLAUDE.md 不会——这一关告诉你如何把最重要的项目约定写进一个文件,让 Claude 每次启动都能记住它。

面向公开用户维护,内容基于 Claude Code 官方文档与真实使用经验整理