智能摘要

现在 Claude 的上下文窗口已经来到 1M token(如 Sonnet 4.6 和 Opus 4.6 都已标配),理论上可以塞进一个中大型项目的绝大部分代码和文档。但实际使用中,很多开发者反而发现:越聊到后面,Claude 会跑偏、之前强调的规则不记得了。

这几乎都是同一个根源导致的:上下文窗口满了,自动压缩把关键信息丢掉了

上下文窗口到底是什么?它为什么这么重要

简单说,Claude 每一次回答你的时候,能“同时看到”的全部内容,就叫上下文窗口。包括:

  • 你和它的全部对话历史
  • 你让它读过的文件、代码片段
  • 命令行工具的输出
  • 项目根目录下的 CLAUDE.md(如果有)
  • Auto Memory 自动保存的知识点
  • 系统提示 + 你激活的 Skills

1M token 大概能装 2000–3000 页的文本,足够放下大部分源码。但容量大了,管理难度也大了。一旦塞满,Claude 就会开始自动压缩旧内容,最先丢的是工具输出,然后是早期对话的细节,最后甚至可能压缩你一开始写的重要规则

自动压缩是怎么发生的

Claude 的压缩策略大概是这样的顺序:

  1. 先扔掉最早的工具输出(cat、grep、npm test 结果等)
  2. 再把早期对话总结成很短的几句话(只留核心意图)
  3. 实在不够,才会动最早的系统级指令

这套机制对一次性问答很友好,但对于复杂任务来说就不太友好。因为你最希望它记住的东西(项目约定、错误处理规范、命名规则),往往都在最早的那部分对话里,经常会出现类似下面的问题:

  • 花了很多时间教的错误处理格式没了,后面代码风格崩坏
  • 项目命名要使用 kebab-case,结果它忘了又开始用 camelCase 了
  • 临时告诉它“这个模块要使用 async/await 语法”,两天后又开始用了
  • 安全相关的硬性要求被压缩,导致生成有漏洞的代码

被动等它压缩上下文是没用的,只能主动来管理上下文。

如何管理上下文?

下面整理我日常使用管理 Claude 上下文的三大方法:

一、把核心规则写进 CLAUDE.md

CLAUDE.md 是目前最靠谱的持久化方式。每次新会话开始,Claude 都会完整加载项目根目录下的 CLAUDE.md(或者用户全局的 ~/.claude/CLAUDE.md)。

建议长度控制在 200 行左右,太长反而容易被忽略。内容要聚焦在 Claude 自己推断不出来的部分,比如:

  • 项目结构约定(组件放哪、API 声明放哪)
  • 必须遵守的错误处理规范
  • 经常踩坑的一些问题,比如不要使用 style={{}},必须用 Tailwind class

一个 React + TypeScript 项目的 CLAUDE.md 示例:

# 项目核心规则
 
## 代码风格(YOU MUST)
- 只用 import/export,禁止 require
- TypeScript 开启 strict + noImplicitAny
- 组件必须是函数式 + hooks,禁止 class 组件
- 样式全部用 Tailwind class,禁止 style={{}} 和 CSS-in-JS
 
## 项目结构
- 页面 → src/pages/
- 通用组件 → src/components/
- API 处理 → src/api/handlers/
- 工具函数 → src/utils/
- 类型定义 → src/types/
 
## 常用命令
- 安装依赖: pnpm install
- 开发: pnpm dev
- 构建: pnpm build
- 测试: pnpm test
- 类型检查:pnpm typecheck
 
## 错误处理 IMPORTANT
- 所有异步请求必须有 try-catch
- 统一返回 { success: boolean, data?, error: { code, message } }
- 用 AbortController 清理 pending 请求
 
## 常见问题
- 不要在组件里直接调用第三方 API,必须封装一层 utils/api.ts
- 注意时区问题,所有时间都用 UTC 存储和传输

写好后放在项目根目录,基本能解决 70% 的“风格漂移”问题,如果实在需要编写大量的规则,应使用导入或 .claude/rules/ 文件进行拆分。

二、打开 Auto Memory

Auto Memory 是 Claude 在对话中自动提炼并保存项目知识的功能,默认是开的

它会把一些反复出现的模式、你纠正过的习惯、项目特有的做法,自动记录到 ~/.claude/projects/xxx/memory/MEMORY.md 里。每次会话开始会加载前 200 行,超出的部分按需读。

想看当前记忆内容,直接在会话里输入 /memory 就能调出来,也可以手动编辑或关闭。

三、主动监控和清理

Claude 提供了几个很实用的命令:

  • /context:显示当前用了多少 token,各部分占比
  • /compact 聚焦于XXX:手动压缩,只保留你指定的主题
  • /clear:直接清空当前上下文(适合换任务时用)

养成习惯:每写完一个大功能,或者感觉它开始“犯迷糊”时,先打 /context 看一眼。如果超过 70–80%,就 /compact 压缩一下,或者直接 /clear 重开

如果你想要实时监控上下文使用情况,可以给Claude安装一个状态栏,阅读下这篇文章:Claude状态栏HUD插件,实时监控上下文与进度

总结

  1. 把永远不变的规则写进项目根目录的 CLAUDE.md
  2. Auto Memory 自动帮你记住项目特有的习惯和经验
  3. 经常用 /context/compact 主动管理窗口,别等到满了再慌

把这三件事做好,Claude 在长期项目里真的会越来越像“懂你”的老搭档,而不是刚刚接触你项目的实习生。

你也可以把自己的 CLAUDE.md 贴出来交流一下,看看谁写得更狠更实用。

本文为原创,未经授权,禁止任何媒体或个人自媒体转载
商业侵权必究,如需授权请联系340443366@qq.com
我正在智谱大模型开放平台 BigModel.cn上打造AI应用,智谱新一代旗舰模型GLM-5已上线, 在推理、代码、智能体综合能力达到开源模型 SOTA 水平,通过我的邀请链接注册即可获得 2000万Tokens 大礼包,期待和你一起在BigModel上畅享卓越模型能力;