Claude Code 斜杠命令(三):上下文管理——不让 Token 成为瓶颈
系列目录
- (一)快速入门——最常用的基础命令
- (二)对话管理——让你的会话有条不紊
- (三)上下文管理——不让 Token 成为瓶颈(本文)
- (四)代码审查三剑客
- (五)模型与推理控制
- (六)并行工作与后台 Agent
- (七)项目配置与权限管理
- (八)研究、规划与 CI/CD 集成
为什么上下文窗口会成为瓶颈?
每次和 Claude Code 对话,模型能"看见"的内容是有限的——这个上限叫做上下文窗口,单位是 Token(大约每 3-4 个英文字符或 1-2 个汉字算 1 个 Token)。随着对话轮次增加、代码文件不断粘贴进来,Token 消耗越来越快。窗口快满时,模型会开始"忘记"早期内容,响应速度也会明显变慢。把上下文当作 RAM:装得越多,越容易塞不下。
/context:读懂你的"内存表盘"
/context
运行这条命令,Claude Code 会显示当前会话的 Token 使用情况,通常包括:
- 已用 Token 数 / 上下文窗口上限
- 百分比占用
- 各类内容(对话历史、文件内容、系统提示)的大致分布
什么数字说明需要行动?
| 占用比例 | 状态 | 建议 |
|---|---|---|
| < 50% | 绿灯 | 正常工作 |
| 50–75% | 黄灯 | 注意节奏,避免大段粘贴 |
| 75–90% | 橙灯 | 考虑执行 /compact |
| > 90% | 红灯 | 立即压缩,否则关键内容可能被截断 |
养成习惯:在开始一个新的复杂任务前先跑一次 /context,确认当前窗口有足够余量。
/compact:给上下文"瘦身"
/compact [instructions]
/compact 会把当前的完整对话历史压缩成一份精简摘要,丢弃冗余的中间过程,保留关键决策和代码状态。压缩后 Token 占用可以骤降 60-80%,让你继续当前任务而不必开新会话。
什么时候用?
/context显示占用超过 75%- 对话中有大量调试来回、已解决的错误日志
- 准备进入下一个功能模块,前面的讨论细节不再需要
[instructions] 参数:告诉 Claude 压缩时保留什么
不带参数直接运行时,Claude 会自动判断保留要点。但有时你需要更精准的控制:
/compact 保留所有已确认的 API 接口设计和数据库 schema,丢弃调试日志
/compact focus on the authentication flow decisions, discard UI discussions
/compact 当前正在重构 OrderService,保留重构目标和已修改的方法签名
这个参数相当于给压缩任务加了一份"压缩指南",避免 Claude 把你最需要的上下文也一起压掉。
技巧:在执行
/compact前,先用一句话总结当前进展发给 Claude,让这句话也进入压缩摘要,方便后续快速定位。
/recap:快速回顾当前进展
/recap
/recap 不压缩,只是让 Claude 输出一份当前会话的简要回顾——做了什么、决定了什么、下一步是什么。适合以下场景:
- 对话中断后重新回来,忘了刚才做到哪一步
- 需要把当前进展分享给团队成员
- 在执行
/compact之前,先确认摘要方向是否正确
/recap 和 /compact 的关系:前者是"读",后者是"写(并清理)"。先 recap 确认内容,再 compact 执行压缩,是稳妥的两步走。
/memory 和 /init:让 Claude 记住项目知识
CLAUDE.md 文件机制
Claude Code 有一套持久化记忆系统,依托 CLAUDE.md 文件实现。每次 Claude 启动或切换项目时,它会自动读取相关的 CLAUDE.md,把内容注入上下文——这就是"长期记忆"的来源。
两种记忆层级:
| 层级 | 文件位置 | 作用范围 |
|---|---|---|
| 项目记忆 | <项目根目录>/CLAUDE.md |
仅当前项目 |
| 个人记忆 | ~/.claude/CLAUDE.md |
所有项目通用 |
项目记忆适合存放:技术栈约定、代码风格规范、重要模块说明、禁止触碰的文件。
个人记忆适合存放:你的偏好设置、常用缩写、跨项目的工作习惯。
/memory:查看和编辑记忆文件
/memory
运行后,Claude Code 会打开当前生效的 CLAUDE.md 文件供你编辑。你可以直接在其中增删内容,保存后立即生效(下次 Claude 读取时会载入新内容)。
/init:一键初始化项目记忆
/init
对于还没有 CLAUDE.md 的项目,/init 会分析当前项目的目录结构、主要文件和技术栈,自动生成一份初始的 CLAUDE.md。这比从空白文件手写要快得多,生成后你只需要补充业务逻辑层面的约定即可。
上下文管理完整工作流
这个四节点流程覆盖了日常最常见的处理路径:定期检查 → 判断是否告急 → 按需压缩 → 回到工作状态。把 /context 检查纳入每隔几轮对话的习惯动作,就能在窗口爆满前主动介入。
最佳实践:项目初期建立好的 CLAUDE.md
一份优质的项目 CLAUDE.md 应该在项目启动时就建立,而不是等到出问题再补救。推荐结构:
# 项目概述
一句话描述项目目标和技术栈。
# 目录结构说明
- src/api/ 后端接口层
- src/services/ 业务逻辑层
- src/models/ 数据模型
# 代码约定
- 使用 TypeScript strict 模式
- 函数命名:动词 + 名词(如 getUserById)
- 禁止直接修改 src/generated/ 下的文件(自动生成)
# 当前开发状态
- 正在实现:用户认证模块
- 已完成:数据库 schema 设计
# 重要接口
GET /api/users/:id → UserService.getUserById()
关键原则:写给"刚加入项目的 Claude"看。假设它对你的项目一无所知,把最容易踩坑的地方、最重要的约定,用最简洁的方式写清楚。
常见误区
误区一:等到 Token 耗尽才压缩
当上下文窗口超过 90% 时,Claude 的响应质量已经开始下降。正确做法是在 75% 左右主动执行 /compact,留有余量。
误区二:/compact 不带 instructions 随意压缩
不加参数时,Claude 会自行判断哪些内容重要——但它不一定和你的判断一致。如果当前任务有明确的关键上下文(比如一个复杂的重构计划),务必通过 instructions 明确告知保留范围。
误区三:把所有内容都写进 CLAUDE.md
CLAUDE.md 的内容每次都会被注入上下文,写得越多,启动时消耗的 Token 越多。只写稳定且高价值的信息(规范、约定、结构说明),动态的进展状态放在对话里即可,不要把它当日记本用。
上下文管理是 Claude Code 进阶使用中最容易被忽视、但收益最高的一环。掌握 /context + /compact + CLAUDE.md 这套组合拳,你会发现长会话的体验能够得到显著改善——AI 不再"忘事",你也不再频繁开新会话重建上下文。
下一篇我们进入代码质量的领域:(四)代码审查三剑客。
实操清单
- 执行
/context查看当前 Token 占用情况 - 在新项目根目录执行
/init生成初始 CLAUDE.md - 编辑 CLAUDE.md,补充技术栈约定、禁止修改的文件等关键信息
- 在 Token 占用超过 75% 时执行
/compact - 用
/compact的 instructions 参数指定需要保留的关键上下文 - 长时间中断后用
/recap快速回顾再继续工作 - 执行
/memory确认个人记忆文件(~/.claude/CLAUDE.md)的内容合理