Claude Code 上下文管理实战:正确使用 /context、/compact、/clear 与记忆
从会话变乱的原因讲起,掌握 Claude Code 上下文检查、压缩、清空、记忆与用量查看的完整流程。
你让 Claude Code 修复一个登录问题,刚开始它能准确找到文件,也能记住“不要改公开 API”这条限制。一个小时后,它却重新读取看过的文件,忘了已经确认的方案,还准备修改原本不在范围内的认证逻辑。对于第一次使用 Claude Code 的人,这很像是模型突然变笨了。
更常见的原因不是模型能力下降,而是当前会话的“工作桌面”已经堆满了资料。聊天记录、文件内容、命令输出、项目规则、工具说明和 Claude 自己的回答,都在争夺有限的上下文窗口。当旧日志和被放弃的方案占据大部分空间时,真正重要的目标就不再醒目。
上下文管理不是单纯省 Token,而是决定:当前任务必须保留什么,哪些规则要写进项目文件,哪些过程可以压缩,以及什么时候应该结束这段会话。下面从一个初学者可以照做的流程开始,解释每条命令的真实作用。
本文要点
- 先用
/context查看当前窗口由什么组成,不要在没有证据时猜测“是不是上下文满了”。 - 任务目标没有变化、只是对话太长时,用
/compact摘要后继续;后面可以附上必须保留的重点。 - 已经切换到无关任务时,用
/clear开启新会话。旧会话不会被删除,之后仍可用恢复命令重新打开。 - 用
/memory查看和编辑持久化指令与自动记忆;要确认哪些记忆文件已经进入当前上下文,仍应查看/context。 /usage用于查看本次会话的成本、套餐限制与活动数据;/cost是它的别名,/stats也是别名并会打开 Stats 页面。- 压缩前留下简短的交接记录,把长期规则放进 CLAUDE.md 或项目文档,不要只在聊天里说一次。
把上下文窗口理解成工作桌面
上下文窗口是 Claude 在当前回合能够参考的信息范围。把它想成一张工作桌面会更容易:整洁的桌面上只有任务目标、两个相关文件、一段关键报错和验收标准;混乱的桌面上则堆着多个被放弃的方案、完整构建日志、无关调查和相互冲突的旧指令。
占用空间的内容不只来自你看得到的聊天:
| 进入上下文的内容 | 为什么容易变乱 | 更稳妥的习惯 |
|---|---|---|
| 会话历史 | 跑题问题和已经被推翻的决定仍在记录中 | 不相关的任务分开处理,并记录当前决定 |
| 文件读取 | 一次读取整个目录或大型生成文件 | 先搜索,再读取相关文件或行段 |
| 工具输出 | 重复测试和长日志不断累积 | 只保留根因行与最终结果 |
| CLAUDE.md 与规则 | 过长、重复或互相矛盾的指令反复加载 | 常驻规则保持简短,专项流程放到限定范围的文件 |
| 技能与工具说明 | 启用的能力本身也会占据初始空间 | 只保留当前工作需要的能力 |
当窗口接近上限时,Claude Code 可以自动压缩,避免会话直接停住。但自动摘要仍要判断哪些信息重要。若正准备从调查进入实现,主动做一次带重点说明的压缩,通常比等系统临时处理更可靠。
五条命令分别解决什么问题
这些命令看起来相近,实际回答的是不同问题。在 Claude Code 的交互会话中,把它们放在消息开头执行。
/context:先检查当前窗口
/context 会用彩色网格显示当前上下文用量,并针对占用较大的工具、记忆膨胀和容量风险给出建议。需要查看逐项明细时,使用 /context all。
/context
/context all
长任务开始时可以先记下基线,大量调查后再看一次,准备压缩前则用它判断摘要应保留什么。它只是诊断工具,不会因为你打开了网格就自动删除内容。
/compact [说明]:摘要后继续同一个任务
/compact 会把当前会话历史替换为结构化摘要,腾出空间后继续当前会话。命令后面的说明用于告诉摘要器哪些事实优先保留。
/compact 保留已确认的 API 约定、改动文件、失败测试、执行过的命令和下一步操作
适用场景是“目标没变,但调查过程太长”。例如仍在修复同一个认证错误,只是前面的定位过程已经产生大量输出。不要期待摘要逐字保存聊天;每次都必须遵守的规则,应提前写入 CLAUDE.md、规格文档或交接记录。
/clear [名称]:为不同任务开启新会话
/clear 会以空的会话历史开始一段新对话,也可以为上一段对话指定名称。项目记忆会继续保留并重新加载,之前的会话则保持已保存状态。
/clear auth-fix-complete
当下一件事的目标、涉及文件和决策历史都不同,就应该清空会话。旧工作没有被删除;交互会话会持续保存,可以用 /resume、claude --resume,或在同一目录用 claude --continue 返回最近一次会话。
/memory:管理需要长期存在的信息
/memory 会列出 CLAUDE.md、CLAUDE.local.md 等位置,让你打开或创建这些文件,也能查看自动记忆并切换相关设置。它回答的是“这条可复用信息应该放在哪里”。
/memory
需要注意:/memory 不是“当前已加载文件”的最终证明。嵌套目录中的 CLAUDE.md 和带 paths: 条件的规则,可能尚未进入本次上下文。要核实当前真正加载了哪些记忆文件,应执行 /context 并查看 Memory files 部分。项目 CLAUDE.md 可以提交给团队;自动记忆保存在本机,并在同一仓库的不同 worktree 间共享,但不会自动同步到其他电脑。
/usage、/cost 与 /stats:查看消耗,不是整理上下文
/usage 显示会话成本、套餐用量限制和活动统计。支持的订阅方案还会按技能、子代理、插件和 MCP 服务器拆分使用情况。/cost 是 /usage 的别名;/stats 同样是别名,并会打开 Stats 页面。
/usage
/cost
/stats
这些命令与 /context 的用途不同。用量页面告诉你已经消耗多少,context 页面告诉你当前工作窗口由什么占据。执行清空或压缩不会撤销已经产生的用量。
下面这张图可以作为每次检查后的判断标准:
flowchart TD
A["执行 /context"] --> B{"还是同一个任务吗?"}
B -->|是| C["写明保留重点并执行 /compact"]
B -->|否| D["记录结果后执行 /clear"]
C --> E["继续当前任务"]
D --> F["用新的任务说明开始"]
开始前先写一份小型任务说明
不要用“读取整个仓库并修好它”作为开场。更有效的做法是提前写清目标、范围、不做什么、完成标准和验证命令。这样 Claude 第一次读取文件时就有方向,之后压缩也有稳定的骨架。
## 任务说明
- 目标:修复登录过期后的重复跳转。
- 范围:src/auth/、tests/auth/session.test.ts
- 不做:界面重设计和身份提供商迁移
- 完成标准:过期会话只跳转一次到 /login,回归测试通过
- 验证命令:npm test -- tests/auth/session.test.ts
- 必须由人批准:修改 Cookie 有效期或公开 API 行为
读取文件前先缩小搜索范围。下面的命令可以直接复制到 shell,再根据仓库结构替换关键词和路径:
rg -n "expired session|redirect loop|set-cookie" src tests
git diff --stat
git status --short
npm test -- tests/auth/session.test.ts
顺序也很重要。rg 找到候选文件,git diff --stat 和 git status 提醒你不要覆盖已有改动,最后用聚焦测试定义结束条件。这样 Claude 只需要几项证据,不必把整个仓库搬上桌面。
压缩或交接前留下记录
执行 /compact、/clear 或交给另一个会话之前,先写一份短记录。它不是完整聊天备份,而是让下一位开发者或代理无需重复调查就能继续的最小信息集。
## 交接记录
- 当前目标:
- 已确认的根因:
- 已接受的决定:
- 改动文件:
- 执行命令与结果:
- 必须保留的未提交改动:
- 剩余风险:
- 下一步:
共享工作可把它保存到项目文档;只为本次压缩使用时,可以把填写后的内容放进 /compact 的重点说明。记录结果,不要复制全部原始输出。“session.test.ts 第 84 行出现两次跳转”很有用,连续两百行相同堆栈则没有必要。
压缩之后,什么会保留
不同来源的信息在 /compact 后并不具备相同待遇:
| 信息来源 | /compact 后的行为 |
|---|---|
| 系统提示与输出风格 | 不属于会话历史,因此保持不变 |
| 项目根目录 CLAUDE.md 与无范围限制的规则 | 从磁盘重新注入 |
| 自动记忆 | 从磁盘重新注入 |
带 paths: frontmatter 的规则 | 读取匹配文件后才重新出现 |
| 子目录中的 CLAUDE.md | 读取该子目录文件后才重新出现 |
| 已调用技能的正文 | 在官方规定的单技能与总量限制内重新注入 |
| Hooks | 作为代码继续执行,不属于聊天上下文 |
最容易丢失的是只在聊天里提过一次的细节。摘要可能会保留大意,但无法保证细微限制不被省略。每次都要遵守的规则应写进项目根目录 CLAUDE.md;只对某个目录生效的规则可以继续限定范围,但要知道压缩后需读取匹配文件才会重新加载。
也可以在 CLAUDE.md 中给压缩过程一份短指引:
# CLAUDE.md
## Compact instructions
- 保留当前目标、已接受的决定和明确排除的范围。
- 保留改动文件、验证命令、测试结果和阻塞项。
- 原始日志只留下能解释根因的行。
- 保留用户已有的未提交改动和下一步安全操作。
这部分不要写成完整项目手册。CLAUDE.md 本身会在会话开始时占用上下文,过长的常驻文件会制造新的负担。
代理可以做什么,哪些决定必须由人批准
上下文管理不只是删信息,还要明确责任边界。Claude 适合搜索、归纳、执行测试和提出方案;无法仅凭仓库安全判断后果的决定,仍由人负责。
| Claude Code 可以负责 | 必须由人确认 |
|---|---|
| 找到相关文件,把长日志压缩成根因证据 | 确认业务目标和可接受的取舍 |
| 报告上下文压力并建议何时压缩 | 判断两个任务是否真的属于同一工作 |
| 根据实际工作生成交接记录 | 批准删除操作、凭据使用和生产环境变更 |
| 执行双方约定的验证命令 | 接受安全策略、公开行为和数据保留规则的变化 |
| 获得明确批准后更新项目规则 | 解决利益相关方之间相互冲突的要求 |
不要让代理自己决定“什么绝不能丢”,然后又只把结论留在同一段拥挤的聊天中。人先确认长期约束,代理负责写入约定文件并检查它是否加载。
四个具体使用场景
场景一:跨多个文件的认证重构
情况: 调查涉及中间件、Cookie 工具、集成测试和部署设置。如果把全部文件与每次失败输出都放进一个会话,实现阶段会被旧线索拖慢。
代理负责: 先搜索并绘制认证路径,把大范围文档调查交给独立代理,主会话只保留最终约定、目标文件和聚焦测试结果。
人工检查点: Cookie 有效期、退出登录行为、兼容性承诺的改变必须批准。这些是产品与安全决定,不是清理上下文的附带事项。
操作顺序: 先写任务说明,调查后执行 /context,把确认的设计写入交接记录,再运行 /compact 保留认证约定与回归测试 后开始修改。
场景二:定位部署失败
情况: 多次重试产生几乎相同的日志,真正有用的第一条错误被安装输出和警告淹没。
代理负责: 比较每次尝试,找出第一个因果错误,记录环境与准确失败命令,把重复日志从工作摘要中去掉。
人工检查点: 修改凭据、云服务配置或执行回滚必须批准。代理可以诊断,不能为了通过部署而静默扩大权限。
操作顺序: 在记录中保留失败命令与根因行;同一事故继续处理时使用 /compact,确认部署成功或切换到无关功能后再 /clear。
场景三:制作与审核技术文章
情况: 资料调查、编辑规范、代码验证、翻译说明和页面截图一起进入会话,很快会挤占写作空间。
代理负责: 调研记录放入单独文件,长期编辑要求放在 CLAUDE.md,最终稿保存在 MDX。调查会话只返回已确认事实和未解决问题,发布前再验证代码与链接。
人工检查点: 目标读者、商业承诺与唯一 CTA 由人决定。代理可以改善表达,但不能编造使用经历、性能数据或客户成果。
操作顺序: 调研与写作分开,在确认大纲后围绕大纲压缩,并在记录中留下 slug、语言、改动文件、检查结果和部署状态。
场景四:从修复错误切换到新功能
情况: 错误已经修复,但同一终端中的下一条指令开始制作完全无关的仪表盘。
代理负责: 先报告最终差异与测试结果,再建议建立清晰的任务边界。
人工检查点: 确认旧问题没有必须带入新任务的后续工作。
操作顺序: 保存已完成工作的名称,执行 /clear bug-fix-complete,再用新的任务说明开始仪表盘。如果以后需要旧细节,用 /resume 回到原会话,而不是永久背着整段历史。
常见陷阱与修正方法
陷阱一:把 /compact 当作无损备份
压缩摘要必然有所选择,只出现过一次的小限制可能被省略。
修正: 长期规则写进 CLAUDE.md 或规格文件,压缩前把已经接受的决定写进交接记录。
陷阱二:任务还没结束就使用 /clear
清空过早会移除当前工作的会话信息,之后不得不重新构建同一套诊断。
修正: 目标和验收测试没有变化时,使用带重点说明的 /compact;只有任务边界真实存在时才清空。
陷阱三:误以为 /memory 能证明文件已加载
/memory 是持久文件和自动记忆的管理入口,嵌套文件或路径规则不一定已经激活。
修正: 用 /context 检查 Memory files;压缩后若需要路径规则,先读取一个匹配文件。
陷阱四:只靠 CLAUDE.md 强制安全策略
CLAUDE.md 是上下文指导,不是无法绕过的安全边界。模糊或冲突的文字可能被不一致地解释。
修正: 必须阻止或验证的动作使用权限设置和 Hooks;CLAUDE.md 只保留简短的工作规范。
陷阱五:把自动记忆当成团队文档
自动记忆属于本机。它可在同一仓库的 worktree 间共享,但不会自然出现在同事的电脑或云环境中。
修正: 团队约定提交到项目 CLAUDE.md、rules 或 docs;自动记忆只放本地偏好与重复发现。
陷阱六:混淆用量与可用上下文
/usage 可能显示成本与限制,而 /context 显示当前窗口是整洁还是拥挤,两者不是同一个指标。
修正: 用 /context 决定是否缩小范围、交给其他代理、压缩或清空;用 /usage 监控消耗和套餐限制。
Obsidian 与项目文件如何分工
并非所有有价值的笔记都应该常驻 Claude 的记忆。Obsidian 更适合长篇调查、备选想法、会议记录和以后才可能使用的材料;仓库更适合共享指令、规格、交接和最终成果。
| 存放位置 | 适合的信息 |
|---|---|
| 项目 CLAUDE.md | 多数会话都需要的短规则 |
.claude/rules/ | 只适用于某类文件或路径的指令 |
| 项目 docs | 共享决定、规格和交接记录 |
| Obsidian | 长篇调查、假设、资料与选题库 |
| 自动记忆 | 本地偏好和反复出现的发现 |
这种分工既能缩小初始上下文,也不会丢失知识。还可以配合阅读 CLAUDE.md 最佳实践、Token 优化指南 和 Claude Code 与 Obsidian 集成。
一套每天可执行的流程
把下面五步固定下来即可:
- 说明: 写清目标、范围、排除项、完成测试和人工批准事项。
- 缩小: 先搜索,只读取下一个决定需要的文件和输出。
- 检查: 大量调查后或 Claude 开始重复工作时运行
/context。 - 记录: 写下已接受的决定、改动文件、验证结果与下一步。
- 选择: 同一任务用
/compact,新任务用/clear,回到旧任务用/resume。
如果需要可以直接复用的提示词和操作模板,可查看 Claude Code 实用提示词指南。
官方资料
实际验证结果
本次改写逐项对照了官方命令参考,确认 /cost 与 /stats 都会转到 /usage,其中 /stats 会打开 Stats 页面;也对照上下文窗口文档,核实了压缩后会重新注入的内容,以及需要读取匹配文件后才恢复的路径规则和嵌套 CLAUDE.md。
我们还根据会话文档确认:/clear 会开启新会话,但不会删除之前持续保存的会话,旧工作仍能通过恢复命令打开。文中的 shell 命令、任务说明和交接记录均为可复制模板;实际使用时只需把路径、关键词和测试命令替换为当前仓库的内容。
相关文章
Claude Code 管理 Monorepo 实战:pnpm、Turborepo/Nx 与 CI
用 Claude Code 安全管理 Monorepo:仓库地图、pnpm workspace、Turborepo/Nx affected、CODEOWNERS 与 CI 实例。
把 Obsidian 旧笔记变成 Claude Code 工作指令的十分钟早间例程
Obsidian 攒的笔记每次都变成废料?把它拆成事实、决定、未知三类,整理成 Claude Code 能直接执行的工作指令,只要早上十分钟。
用 Claude Code 给租赁管理公司省时:租客咨询回复与合同书面核对
把租客咨询回复和合同书面核对交给 Claude Code 生成初稿,附可直接套用的提示词模板和脱敏校验脚本。
免费 PDF: Claude Code 速查表
输入邮箱即可获取一页 PDF,整理常用命令、审查习惯和安全工作流。
我们会妥善保护你的信息,不发送垃圾邮件。
让 Claude Code 真正进入可验证的工作流
先用免费 PDF 固定基础,再用 Gumroad 教材复用工作流;如果涉及团队导入、权限或收入路径,可以直接咨询。
关于作者
Masa
专注 Claude Code 实务流程、团队导入和内容转化的工程师。