Claude Code 上下文管理
课程导读
这节课主要讲 Claude Code 的“记忆空间”怎么管理:如何查看上下文占用,什么时候使用 /compact 压缩,什么时候用 Summarize from here 折叠一段对话,什么时候用 /clear 开启空白上下文,以及如何恢复历史会话。
一、什么是上下文
在模型选择界面中,模型名称后面可能会标注上下文长度,例如 1M。
你可以把上下文理解成模型的“记忆上限”。它决定了模型一次最多能记住和处理多少内容。
Claude Code 会把很多信息放进上下文中:
| 内容 | 说明 |
|---|---|
| 历史对话 | 你和 Claude Code 前面说过的话 |
| 任务说明 | 当前任务目标、约束和计划 |
| 文件内容 | Claude Code 读过的代码和文档 |
| 工具结果 | 命令输出、搜索结果、读取文件结果等 |
| 系统信息 | 系统提示、工具定义、技能说明等基础开销 |
上下文空间不是无限的。随着对话越来越长、读取的文件越来越多,模型对早期内容的把握可能会变弱。
二、查看上下文占用
查看当前上下文使用情况:
/context常见信息可以这样理解:
| 项目 | 含义 |
|---|---|
| 模型名 | 当前使用的模型,例如 Sonnet 4.6 |
28.3k/200k tokens (14%) | 已使用 28.3k token,总窗口 200k,占 14% |
System tools | 系统提示、工具定义等基础开销 |
Skills | 当前加载的技能说明占用 |
Messages | 对话、工具结果、文件内容、命令输出等累计内容 |
Free space | 当前还能继续使用的空间 |
Autocompact buffer | 系统为自动压缩和回复生成预留的缓冲区 |
不要把 Autocompact buffer 当作普通可用空间。它更像是 Claude Code 为自动压缩和后续回复保留的安全垫。
三、自动压缩
当上下文快满时,Claude Code 会自动管理上下文。
通常会经历类似过程:
- 清理较早的工具输出。
- 如果仍然不够,就把长对话压缩成摘要。
- 保留关键内容,让当前会话继续进行。
需要注意:压缩的是对话上下文,不会删除项目里的代码文件。
四、compact
如果你觉得当前上下文已经比较长,可以主动使用 /compact。
/compact也可以附加压缩重点:
/compact 重点保留漏洞排查、最终修复方案和关键文件修改/compact 的作用是在同一个对话里压缩上下文,让 Claude Code 保留重要信息,减少冗余过程。
压缩完成后,可以使用 Ctrl + O 展开查看压缩后的上下文内容。
适合场景:
- 当前任务还没结束,但上下文已经很长。
- 你希望继续同一个对话,只是压缩掉冗余过程。
- 你想提醒 Claude Code 重点保留某些信息。
五、Summarize from here
Summarize from here 是回退界面里的一个选项。
它不会修改磁盘上的代码文件,而是从你选中的那条消息开始,把后续对话压缩成摘要。
可以理解为:
| 部分 | 处理方式 |
|---|---|
| 选中消息之前的内容 | 保持原样 |
| 选中消息及之后的内容 | 替换成一段 AI 摘要 |
| 磁盘上的代码文件 | 不修改 |
| 选中的原始消息 | 回填到输入框,方便你重发或改写 |
适合场景:
- 前面 20 条消息在定义需求和架构,很重要。
- 后面 30 条消息主要是试错、调试、跑日志,比较臃肿。
- 你只想保留最终结论、修复原因和关键修改思路。
可以把它理解为:前半段保留全文,后半段折叠成摘要,然后从这个分界点重新继续聊。
六、清空上下文:clear
/clear 会保存当前对话,然后开启一个新的空白上下文。
/clear执行后,当前新对话里不会再带着之前那些旧上下文。
如果你连按两次 Esc 进入回退界面,也会发现旧对话记录已经不在当前新对话里了。
适合场景:
- A 功能已经做完,准备开始完全无关的 B 功能。
- 旧上下文可能干扰 Claude Code 的判断。
- 你想让 Claude Code 从一个干净状态开始处理新任务。
需要注意:/clear 会重置当前上下文,不适合在任务还没收尾时随便使用。
七、会话和对话的区别
为了方便理解,可以先这样区分:
| 概念 | 理解方式 |
|---|---|
| 对话 | 你发一条消息给 Claude Code,它回复你,这就是一轮对话;继续追问、继续回复,就是多轮对话 |
| 会话 | 从你启动 Claude Code 到退出,这一整段聊天叫一次会话;里面包含很多轮对话。退出后会保存到本地,之后可以继续或恢复 |
你退出 Claude Code 后,这次会话不会立刻消失,而是会保存在本地。
新开一个标签页,或者退出后重新进入,通常可以理解为进入另一次会话。
八、继续最近会话
如果你想继续最近一次会话,可以使用:
claude --continue简写是:
claude -c它会在当前目录中继续最近一次 Claude Code 会话。
适合场景:
- 昨天工作到一半,今天想继续。
- 关闭了终端窗口,但想回到最近那次对话。
- 不想手动从历史会话列表中选择。
九、恢复历史会话
如果你想从多个历史会话中选择一个,可以使用:
claude --resume简写是:
claude -r它会列出当前项目里的历史会话,你可以选择想恢复的那一次。
也可以在 Claude Code 内部使用:
/resume十、指定会话 ID 恢复
退出 Claude Code 时,终端里有时会提示一条恢复当前会话的命令。
这种方式会通过会话 ID 精确恢复某一次会话。
和 claude -c 的区别是:
| 方式 | 区别 |
|---|---|
claude -c | 继续最近一次会话 |
| 指定会话 ID | 精确恢复某一次历史会话 |
claude -r | 打开会话列表,让你自己选择 |
会话 ID 通常比较长,日常使用中更推荐 claude -c 或 claude -r。
十一、使用建议
| 场景 | 推荐操作 |
|---|---|
| 只是想查看占用 | /context |
| 当前任务还没结束,但上下文很长 | /compact |
| 想保留前半段,压缩后半段调试过程 | Summarize from here |
| 完成一个任务,准备开始无关任务 | /clear |
| 第二天继续最近会话 | claude -c |
| 从多个历史会话中选择 | claude -r 或 /resume |
不要等上下文彻底满了才处理。很多时候,使用到百分之六七十以后,模型对早期内容的把握就可能变弱,可以开始考虑压缩或拆分任务。
复杂项目里,比较推荐把任务拆成多个阶段。每完成一个相对独立的阶段,再根据情况使用 /compact 或 /clear。
