Advanced (更新: 2026/7/22)

Claude Code 上下文管理实战:正确使用 /context、/compact、/clear 与记忆

从会话变乱的原因讲起,掌握 Claude Code 上下文检查、压缩、清空、记忆与用量查看的完整流程。

Claude Code 上下文管理实战:正确使用 /context、/compact、/clear 与记忆

你让 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

当下一件事的目标、涉及文件和决策历史都不同,就应该清空会话。旧工作没有被删除;交互会话会持续保存,可以用 /resumeclaude --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 --statgit 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 集成

一套每天可执行的流程

把下面五步固定下来即可:

  1. 说明: 写清目标、范围、排除项、完成测试和人工批准事项。
  2. 缩小: 先搜索,只读取下一个决定需要的文件和输出。
  3. 检查: 大量调查后或 Claude 开始重复工作时运行 /context
  4. 记录: 写下已接受的决定、改动文件、验证结果与下一步。
  5. 选择: 同一任务用 /compact,新任务用 /clear,回到旧任务用 /resume

如果需要可以直接复用的提示词和操作模板,可查看 Claude Code 实用提示词指南

官方资料

实际验证结果

本次改写逐项对照了官方命令参考,确认 /cost/stats 都会转到 /usage,其中 /stats 会打开 Stats 页面;也对照上下文窗口文档,核实了压缩后会重新注入的内容,以及需要读取匹配文件后才恢复的路径规则和嵌套 CLAUDE.md。

我们还根据会话文档确认:/clear 会开启新会话,但不会删除之前持续保存的会话,旧工作仍能通过恢复命令打开。文中的 shell 命令、任务说明和交接记录均为可复制模板;实际使用时只需把路径、关键词和测试命令替换为当前仓库的内容。

#claude-code #上下文管理 #Token优化 #生产力提升
免费

免费 PDF: Claude Code 速查表

输入邮箱即可获取一页 PDF,整理常用命令、审查习惯和安全工作流。

我们会妥善保护你的信息,不发送垃圾邮件。

让 Claude Code 真正进入可验证的工作流

先用免费 PDF 固定基础,再用 Gumroad 教材复用工作流;如果涉及团队导入、权限或收入路径,可以直接咨询。

Masa

关于作者

Masa

专注 Claude Code 实务流程、团队导入和内容转化的工程师。