智能摘要
现在 Claude 的上下文窗口已经来到 1M token(如 Sonnet 4.6 和 Opus 4.6 都已标配),理论上可以塞进一个中大型项目的绝大部分代码和文档。但实际使用中,很多开发者反而发现:越聊到后面,Claude 会跑偏、之前强调的规则不记得了。
这几乎都是同一个根源导致的:上下文窗口满了,自动压缩把关键信息丢掉了。
上下文窗口到底是什么?它为什么这么重要
简单说,Claude 每一次回答你的时候,能“同时看到”的全部内容,就叫上下文窗口。包括:
- 你和它的全部对话历史
- 你让它读过的文件、代码片段
- 命令行工具的输出
- 项目根目录下的 CLAUDE.md(如果有)
- Auto Memory 自动保存的知识点
- 系统提示 + 你激活的 Skills
1M token 大概能装 2000–3000 页的文本,足够放下大部分源码。但容量大了,管理难度也大了。一旦塞满,Claude 就会开始自动压缩旧内容,最先丢的是工具输出,然后是早期对话的细节,最后甚至可能压缩你一开始写的重要规则。
自动压缩是怎么发生的
Claude 的压缩策略大概是这样的顺序:
- 先扔掉最早的工具输出(cat、grep、npm test 结果等)
- 再把早期对话总结成很短的几句话(只留核心意图)
- 实在不够,才会动最早的系统级指令
这套机制对一次性问答很友好,但对于复杂任务来说就不太友好。因为你最希望它记住的东西(项目约定、错误处理规范、命名规则),往往都在最早的那部分对话里,经常会出现类似下面的问题:
- 花了很多时间教的错误处理格式没了,后面代码风格崩坏
- 项目命名要使用 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插件,实时监控上下文与进度
总结
- 把永远不变的规则写进项目根目录的 CLAUDE.md
- 让 Auto Memory 自动帮你记住项目特有的习惯和经验
- 经常用
/context和/compact主动管理窗口,别等到满了再慌
把这三件事做好,Claude 在长期项目里真的会越来越像“懂你”的老搭档,而不是刚刚接触你项目的实习生。
你也可以把自己的 CLAUDE.md 贴出来交流一下,看看谁写得更狠更实用。
评论