Appearance
Claude Code 上下文管理完全指南:对抗Context Rot保持高效
上下文窗口是Claude Code最重要的资源。随着上下文填满,模型性能逐渐下降(Context Rot)——这是使用Claude Code时需要主动对抗的核心问题。
上下文窗口基础
窗口大小
1,000,000 tokens(100万token)
包含内容
| 内容来源 | 加载时机 | Token占用 |
|---|---|---|
| 系统提示词 | 每次会话启动 | 固定占用 |
| CLAUDE.md | 启动时完整加载 | 取决于文件大小 |
| 自动记忆 | 启动时加载(前200行或25KB) | 有上限 |
| 对话历史 | 累积增长 | 随会话持续增加 |
| 工具结果 | 每次工具调用后追加 | 日志/大文件消耗极快 |
| MCP工具名称、Skills描述 | 启动时加载 | 中等 |
上下文衰退症状
| 症状 | 说明 |
|---|---|
| 前后矛盾 | 忘记之前达成的决策 |
| 响应模糊 | 细节减少,笼统回答 |
| 反复询问 | 同一问题问了又问 |
| 纠正两次以上 | 同一会话里同一问题纠两次以上 |
出现以上症状 → 主动用 /compact 或 /clear,不要继续纠正。
CLAUDE.md 指令文件
存放位置与作用范围
| 范围 | 路径 | 适用场景 | 提交git |
|---|---|---|---|
| 组织级 | /Library/Application Support/ClaudeCode/CLAUDE.md | 公司编码标准 | IT统一管理 |
| 项目级 | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 项目架构规范 | ✅ 团队共享 |
| 用户级 | ~/.claude/CLAUDE.md | 个人编码偏好 | ❌ 个人私有 |
| 本地私有 | ./CLAUDE.local.md(加.gitignore) | 本地配置 | ❌ 不提交 |
优先级:项目本地 > 项目根目录 > 用户级 > 组织级
创建方式
bash
# 自动生成
/init
# 快捷追加(#键)
# 所有API错误响应必须使用 { code, message } 格式内容要求
每个文件控制在200行以内,文件越大遵守率越低。
| 应该写入 | 不应该写入 |
|---|---|
| 构建、测试、部署命令 | 多步骤操作流程(放Skills) |
| 代码规范:命名约定、禁止模式 | 只与某部分相关的规则(放rules/) |
| 关键约束:"始终使用pnpm" | Claude读代码就能发现的信息 |
| 项目架构说明 |
按路径限定规则
.claude/
└── rules/
├── api.md # 只对 src/api/**/*.ts 生效
├── frontend.md # 只对 src/components/**/*.tsx 生效
└── testing.md # 只对 *.test.ts 生效路径限定规则只在读取对应文件时加载,不在启动时全量占用上下文。
自动记忆(Auto Memory)
工作机制
| 特性 | 说明 |
|---|---|
| 版本要求 | v2.1.59+ |
| 默认状态 | 开启 |
| 存储位置 | ~/.claude/projects/<项目路径>/memory/ |
| 写入提示 | 终端显示 "Writing memory" |
| 检索提示 | 终端显示 "Recalled memory" |
查看与编辑
bash
/memory禁用
bash
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude主动让Claude记住
记住:我们的API测试需要本地运行一个Redis实例
以后请记住:处理错误时,统一返回 { code, message } 结构上下文优化命令
/compact 压缩上下文
bash
/compact
/compact Focus on the API changes
/compact 保留认证流程的架构决策,丢弃调试过程中的无效尝试| 要点 | 说明 |
|---|---|
| 主动压缩 | 60~70%时手动触发,不要等75%自动压缩 |
| 传入指令 | 控制保留哪些内容 |
| 有损操作 | 不给指令可能丢重要内容 |
/clear 清除上下文
bash
/clear清除后CLAUDE.md和自动记忆不受影响。
/rewind 回退检查点
bash
/rewind # 或双击Esc| 操作 | 效果 | 适用场景 |
|---|---|---|
| 恢复对话+代码 | 完全还原 | 改动有问题全部撤销 |
| 仅恢复对话 | 保留文件改动 | 重试不同思路 |
| 仅恢复代码 | 保留对话 | 代码改坏但分析有用 |
| 从此处摘要 | 后半段压缩为摘要 | 只清理冗余部分 |
/btw 快速提问不污染上下文
bash
/btw 这个项目的TypeScript版本是多少?答案以浮层展示,不进入对话历史。
会话管理命令速查
| 命令 | 功能 | 场景 |
|---|---|---|
/context | 查看token用量分析 | 排查哪部分消耗过多 |
/compact [指令] | 压缩对话历史 | 60~70%时主动压缩 |
/clear | 清除对话历史 | 切换新任务 |
/rewind | 回退检查点 | 走偏了需要回退 |
/memory | 查看编辑记忆 | 检查记忆准确性 |
/btw | 快速提问不污染 | 查阅小细节 |
/init | 生成CLAUDE.md | 首次使用新项目 |
# | 追加CLAUDE.md指令 | 随时记录规范 |
claude --continue | 继续最近会话 | 重开终端接着干 |
claude --resume | 选择历史会话 | 恢复几天前的任务 |
常见问题
| 问题 | 解决方案 |
|---|---|
| 不遵守CLAUDE.md | 检查是否超200行,改模糊为具体,用rules/拆分 |
| 前后矛盾 | /compact保留关键决策,或/clear重新开始 |
| /compact后信息丢失 | 传入具体指令,压缩前写入CLAUDE.md |
| 关闭终端继续工作 | claude --continue 或 claude --resume |
| 大任务上下文爆满 | 用子代理委托执行,主对话只收摘要 |
总结
一句话总结:上下文是Claude Code最核心资源——60~70%主动/compact、CLAUDE.md控制在200行内、用rules/按路径拆分、出现矛盾立刻/clear不要继续纠正。
