维护咨询 大模型部署 问题解决 技能定制 大模型训练
如果你最近在 Claude Code 里遇到这几种情况,问题不一定先出在模型本身,而很可能出在你给它塞进了太多会话启动上下文:
- 明明只是一个小改动,却突然变得很慢。
- 同样类型的任务,5 小时窗口掉得比以前快很多。
/compact之后还是很快又涨回去,甚至出现反复压缩。- Claude 老是引用一些你不想继续保留的旧“记忆”。
这篇教程适合你:
- 你在用 Claude Code 做日常开发,但最近明显感觉变慢、变贵、变“糊”。
- 你已经写过
CLAUDE.md,但现在怀疑它越来越大,反而拖累会话。 - 你想先把可控的上下文问题排干净,再判断是不是服务端波动或模型版本变化。
说明:本文里的 CLAUDE_CODE_DISABLE_AUTO_MEMORY、autoMemoryEnabled、/usage、/context、/compact、/clear、/memory、/doctor、claude --safe-mode、MAX_THINKING_TOKENS 等命令和配置,均为基于官方文档验证。当前写作环境未安装 claude CLI,本文不把文档核验冒充成实机测试。
先判断这是不是“上下文膨胀”而不是别的问题
| 现象 | 更像哪类原因 | 先做什么 |
|---|---|---|
| 小任务也突然很慢,回复前要想很久 | 启动上下文过大,或 extended thinking 太重 | 先看 /usage 和 /context |
| 明明没干多少活,5 小时窗口掉得很快 | CLAUDE.md、auto memory、MCP、subagent 或长上下文在吃 token |
先减启动负担,不要先猜套餐 |
/compact 后又立刻涨回去 |
刚压完又读了大文件或大输出,触发 refilling | 改成小块读文件,必要时 /clear |
| Claude 总拿旧偏好、旧结论说事 | auto memory 带入了过时信息 | 用 /memory 审计,必要时临时关闭 |
| 同一仓库不同目录里,规则越来越乱 | 多层 CLAUDE.md / .claude/rules/ 冲突 |
先收口主规则,再拆路径规则 |
核心原因是什么
Claude Code 的官方文档把“跨会话知识”拆成两类,而且它们都会在新会话开始时参与上下文:
CLAUDE.md:你自己写的长期说明。Auto memory:Claude 根据你的纠正和偏好自己记下来的笔记。
这两点很关键:
CLAUDE.md会在每次会话启动时加载,官方建议每个文件尽量控制在200行以内。Auto memory默认开启,而且MEMORY.md的前200行或前25KB会在每次会话开始时加载。
也就是说,只要你的 CLAUDE.md 越写越大、auto memory 越积越多,哪怕你只是让 Claude 改 1 行代码,起跑线就已经很重了。
第一步:先用 /usage 和 /context 看当前会话是不是已经过胖
以下命令为基于官方文档验证:
/usage
/context
你要重点看的是:
- 当前会话是不是在一开始就已经占掉很大一截上下文。
- 最近 24 小时 / 7 天里,是否某类来源占比特别高:
- skills
- subagents
- plugins
- MCP servers
- 你以为是“小任务”,但其实会话里已经带着上一个大任务留下来的长上下文。
如果你看到的是“同一会话越聊越贵”,先不要急着改模型,先继续排下面两层:Auto memory 和 CLAUDE.md。
第二步:把 Auto Memory 暂时关掉,确认旧记忆是不是罪魁祸首
官方文档给了三种关法,以下都属于基于官方文档验证。
方法一:在会话里直接用 /memory
/memory
这个命令可以:
- 查看当前会话实际加载了哪些
CLAUDE.md/CLAUDE.local.md/ rules 文件。 - 打开 auto memory 目录。
- 直接切换 auto memory 的开关。
如果你最近老看到 Claude 说“我会把这个记到 memory 里”,或者它总拿旧假设干扰当前任务,这一步最先做。
方法二:在项目设置里先关
把下面这段放进项目的 .claude/settings.local.json,更适合个人临时排查:
{
"autoMemoryEnabled": false
}
如果你想团队统一关闭,也可以放在项目共享设置里,但更稳妥的做法通常是先个人验证,再决定是否全员收紧。
方法三:启动时直接禁用
macOS / Linux:
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude
PowerShell:
$env:CLAUDE_CODE_DISABLE_AUTO_MEMORY = "1"
claude
如果你关掉 auto memory 之后,同样的轻任务明显顺了很多,基本就说明你原来的问题有相当一部分来自旧记忆和启动负担。
第三步:把 CLAUDE.md 缩回“长期事实”,别把整套流程都堆进去
官方文档给得很直白:CLAUDE.md 是每次启动都要读的上下文,目标大小建议控制在 200 行内。
更适合放进 CLAUDE.md 的内容是:
- 构建命令
- 测试命令
- 项目目录结构
- 命名约定
- “总是这样做”的稳定规则
不适合继续堆在 CLAUDE.md 里的内容是:
- 只对某一类文件有用的规则
- 很长的 PR review 流程
- 某个数据库迁移的完整步骤
- 某个一次性排障手册
如果你现在的 CLAUDE.md 已经开始像操作手册,就该拆了。
一个更稳的收口方式
项目根目录 CLAUDE.md 只保留最小常驻规则:
# Project Rules
- Run `npm test` before finishing code changes.
- API handlers live in `src/api/handlers/`.
- Use 2-space indentation.
- Do not edit deployment secrets.







暂无评论内容