2.6 会话管理
预计耗时:10 分钟
本关任务简报
用着用着,Claude 开始"忘事"——明明之前讨论好的设计方案,现在它好像完全不知道了。或者你关了终端,第二天想继续昨天的工作,却发现不知道怎么找回来。
这一关解决两个核心问题:上下文用满了怎么办,以及怎么让会话跨越终端关闭继续存在。
通关奖励:解锁以下技能
- 📊 理解上下文窗口的概念,知道为什么 Claude 会"忘事"
- 🔄 能用
/compact和/clear正确应对上下文满的情况 - 📂 能恢复昨天或上次的会话,继续之前的工作
- 💰 知道怎么查当前会话的费用
开始前先检查装备
| 前置知识 | 说明 |
|---|---|
| 2.3 斜杠命令指南 → | /compact、/clear、/resume 都是斜杠命令,先知道斜杠命令的使用方式 |
机制解析
上下文窗口:Claude 的"短期记忆"
Claude 不是像人一样有无限记忆的 AI。它的记忆依赖上下文窗口——一个有容量上限的"当前对话缓冲区"。
你说的每句话、它的每次回复、每次工具调用的结果,都会占用这个窗口里的空间(以 token 计量)。窗口有上限,超出范围的内容会被截断,这就是为什么对话长了之后 Claude 会"忘记"早期内容的根本原因。
什么时候该关注上下文满的问题?
- Claude 开始重复问你"你说的 X 是什么意思",但这个问题之前已经解释过
- 它做出明显和之前讨论不符的操作
/context显示上下文窗口快用满了(具体怎么看见下)
用 /context 看上下文占用
想直观知道"上下文还剩多少",用 /context:
/context它会显示当前上下文窗口的占用情况——系统提示、CLAUDE.md、工具定义、对话历史各占多少、还剩多少空间。加 all(/context all)能展开逐项明细。
注意区分:
/context看的是上下文窗口占用(还能塞多少内容),/cost看的是这次会话花了多少钱(token 量和估算费用),两者不是一回事。
/clear vs /compact:两种应对策略
遇到上下文快满的情况,有两条路:
/clear | /compact [指令] | |
|---|---|---|
| 效果 | 完全清空历史,从零开始 | 把历史压缩成摘要,保留关键信息继续工作 |
| 信息保留 | 什么都不保留 | Claude 自动判断保留什么(可以加指令) |
| 适合场景 | 一个任务完成了,开始新任务 | 当前任务还没完,但上下文快满了 |
/compact 的用法:
/compact不带参数时,Claude 自动判断保留什么。
/compact 保留所有已确认的接口定义和数据库表结构,以及我们讨论好的架构决策带参数时,明确告诉 Claude 什么内容一定不能丢。在处理复杂任务时,带参数的 /compact 更可靠。
注意:CLAUDE.md 的内容不受
/compact影响,它在每次启动时都会重新加载。所以长期有效的约定放进 CLAUDE.md,比依赖对话历史更稳。
恢复历史会话
每次和 Claude 的对话都会保存在本地(每个会话一个 .jsonl 文件):
~/.claude/projects/<项目路径hash>/*.jsonl你不需要手动找这些文件,Claude Code 提供了命令来恢复:
继续上一次会话(最常用):
claude --continue启动时自动接续最近那次会话,就好像终端从没关过一样。
从列表里选一个会话恢复:
claude --resume会弹出历史会话列表,上下键选择,Enter 确认。
恢复指定 ID 的会话:
claude --resume <session-id>session-id 在列表里可以看到。
这几个也有会话内用法:已经开着 Claude Code 时,直接输入
/resume(别名/continue)就能调出同样的历史会话选择器,不必先退出再重开。
💡 装了 cc switch 的话,它的「会话管理」面板(主界面右上角钟表图标)能跨工具浏览并用关键词搜索历史会话,便于翻找回顾关键对话内容——比命令行翻列表更直观。详见 3.8 cc switch →。
查看费用
/cost显示当前会话消耗的 token 数量和估算费用。如果通过第三方平台接入,费用估算可能和实际账单有偏差,以平台后台为准。
倒回与检查点:会话内的"后悔药"
Claude Code 会自动给改动拍检查点(checkpoint):你每发一条提示就存一个还原点,Claude 用编辑工具改过的文件都被记录下来,而且跨会话保留。某几步把事情搞砸了,可以一键倒回。
怎么用:
- 输入框为空时连续快速按两次
Escape(或直接输入/rewind),打开倒回菜单 - 菜单列出本次会话里你发过的每一条提示,用
↑↓选中要回到的那一条 - 回车后,再选怎么还原——这里是三个英文选项,含义如下:
| 菜单选项 | 含义 |
|---|---|
| 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 步:重新启动并接续
在同一个项目目录下执行:
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。
下一关
对话历史会消失,但 CLAUDE.md 不会——这一关告诉你如何把最重要的项目约定写进一个文件,让 Claude 每次启动都能记住它。