Claude Code 默认开着空闲压缩,而这件事正在悄悄改变你对话的走向。它的逻辑是:当上下文累积到一定规模、你又有一段时间没输入,工具会把整段会话压成一份摘要,之后再接上时,Claude 读到的就是摘要,不是原始的完整上下文。摘要天生做减法,会留下主干、丢掉细节——你反复确认过的约束、被明确否决过的方案、某个变量为什么必须叫这个名字,都可能在一次压缩后消失。短对话里无所谓,但在跑了几个小时的重构或调试现场,这种损失是静默的,你往往不会立刻察觉,只会觉得模型"怎么又犯了之前那个错"。
Anthropic 的 Lydia Hallie 给出了关掉它的办法。在 settings.json 里把 "idleCompaction" 设为 false,空闲压缩就不再触发,Claude 始终从完整上下文继续。不想一刀切的话,还可以用环境变量 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS 调整触发阈值,默认值是 200k;把它调高,等于把压缩推迟到上下文更满的时候,既省一点 token,又少丢一些信息。
怎么选取决于你拿 Claude Code 干什么。长期项目、复杂重构,关掉或把阈值拉高更划算;临时脚本、随手问答,留着它省资源也没什么不好。关键在于你得知情:上下文以什么方式被保留,应该由你决定,而不是让默认值替你决定。

