目录
你有没有过这种体验:一个 Claude Code 会话开了一整天,改了十几个文件,中午去吃个饭,回来接着问,它却像“失忆”了一样?或者更现实一点——长会话越用越贵,每条新消息都要把几十万 token 的历史重新发一遍。从 2.1.290 开始,Claude Code 给这件事加了一个官方答案:idle compaction,闲置自动压缩。
这篇文章把官方 changelog 里关于它的三条记录拆开讲清楚:它什么时候触发、压缩后你的会话会发生什么,以及三处可以控制它的开关。全部命令可以直接复制用。
一、官方机制:三个数字讲清楚
根据 2026-10-14 的官方 changelog,idle compaction 的触发条件是三个数字:
- 200K+ token:会话上下文超过 20 万 token 才会触发,小会话不受影响;
- 约 54 分钟闲置:终端里的会话放着不动大约 54 分钟;
- 一小时 prompt 缓存过期前:赶在缓存失效之前把会话压缩掉。
为什么是这个时机?官方的原话是 so your next message doesn't reprocess it all——压缩发生在缓存过期之前,这样你回来发下一条消息时,不用把全部上下文重新处理一遍,省下的是一整份长历史的重跑成本。注意这条目前只写了“in the terminal”,也就是终端会话。
二、压缩之后,你的会话会发生什么
触发后,对话历史会被替换成一份摘要,会话本身继续,而不是新开一个。这和手动 /compact 是同一种操作,只是换成了系统在你离开时自动做。
有两件事官方 changelog 特意提到了,实战中一定会碰到:
- 技能可能要重新加载。同一天的 changelog 里写道,
/reload-skills会把完整技能列表重新发给 Claude,which is how to get skills back after compaction——压缩后如果发现技能列表空了,敲一行/reload-skills就回来。 - 通知会告诉你怎么关。2026-10-16 的 changelog 补了一条:
/config里新增了一行Idle compaction,可以直接开关;而且压缩完成后弹出的通知里,会直接写明关闭方法。
三、手把手:三处开关,全部可复制
控制 idle compaction 的两样东西(阈值环境变量和 settings.json 开关)都需要 v2.1.290 或更新。先查版本:
claude --version
# 需要 2.1.290 或更新,才有下面的开关开关 1:/config 里点一下(2.1.302+)。在会话里输入 /config,找到 Idle compaction 这一行,直接切换开或关。这是最快的一处,适合临时改主意。
开关 2:settings.json 永久关闭。在用户级 ~/.claude/settings.json 里加一行:
{
"idleCompaction": false
}开关 3:调触发阈值。环境变量 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS 可以改掉默认的 200K 下限:
# 会话超过 10 万 token、闲置后就自动压缩(更积极)
export CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS=100000
# 或者调高到 50 万才触发(更保守)
export CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS=500000四、手动三件套:/compact、/clear 该用哪个
自动压缩是兜底,主动管理还是靠这几个命令(Anthropic 命令参考对 /compact 的描述是“summarizing the conversation so far”,可带聚焦指示):
# 主动压缩,还在同一个会话里继续
/compact
# 压缩时告诉它保留什么,摘要质量明显更好
/compact focus on the auth bug fix and the failing tests
# 彻底新开:上下文清空,旧会话可用 /resume 找回
/clear社区里一条被反复验证的经验:别等上下文快满了才压。快满时的摘要是在模型已经“记不太清”的状态下生成的,质量明显更差。在逻辑里程碑处(比如修完一个模块、跑通一次测试)顺手 /compact 一下,效果最好。
五、实战建议:什么时候应该关掉它
- 工作流依赖窗口里的精确细节时,比如你正在对着一长串错误日志或精确的 diff 逐行排查——摘要会改写措辞,精确的行号和报错原文可能就没了;
- 无人值守跑长任务时,回来发现会话被压缩过,先别急着继续,用
/compact的思路检查一下摘要里有没有丢关键结论; - 反过来,日常开发就留着它。上下文 20 万+ 是长会话的常态,开着自动压缩,省的是你每次“离开再回来”那第一条消息的重跑成本。
一句话总结:长会话 + 长时间离开 = 自动压缩。记住三个数字(200K、54 分钟、1 小时缓存),两处开关(/config、settings.json),压缩后丢了技能就 /reload-skills。
参考来源
- Claude Code 官方 changelog:idle compaction、
CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS与"idleCompaction": false条目(2026-10-14,需 v2.1.290+);/config新增Idle compaction行条目(2026-10-16);/reload-skills说明 - anthropics/claude-code CHANGELOG.md(官方 changelog 的生成来源)
- /compact vs /clear 行为解析:引用 Anthropic 命令参考中
/compact [instructions]的说明