本文根据 Claude Code 官方文档《Settings reference》《Prompt caching》和更新日志(2.1.299、2.1.302、2.1.304、2.1.314)整理,资料核对于 2026-11-06。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。
适用于谁
- 开着一个很长的 Claude Code 对话去吃饭、开会,回来发现出现了一行「Compacted ...」提示的人;
- 担心「被自动压缩会不会丢上下文」,或者想知道怎么关掉的人;
- 用订阅套餐(Pro / Max),在意额度被长对话快速消耗的人。
结论先说
- Idle compaction(空闲压缩)默认开启:对话够长、你离开约一小时,Claude Code 会趁提示缓存还没过期,先把它压缩成摘要。你回来发下一条消息时,发出去的是摘要,而不是整段历史。
- 它是自动压缩(auto-compact)的一个分支,不是新的删除功能;你能在
/config里关,或在settings.json里写"idleCompaction": false。 - 只有长对话才会触发:默认阈值是 200,000 token,可以用环境变量
CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS改,最低 100000。 - 版本要求:设置键需要 Claude Code v2.1.290 或更新;
/config里的 Idle compaction 那一行需要 v2.1.302 或更新。

图:本站根据 Claude Code 官方《Settings reference》 整理的示意图
一、它为什么存在
先要知道一个背景:Claude Code 用「提示缓存」(prompt caching)让重复发送的前缀更省时间和用量,缓存有存活时间(TTL)。官方文档说,缓存过期后,你再发消息就要把整段输入重新算一遍,所以离开一阵再回来的第一轮会明显更慢;更详细的机制见 /guides/claude-prompt-caching。
Idle compaction 做的事是:在缓存还热的时候就把对话压成摘要。官方在更新日志里的说法是,离开约 54 分钟的 200K+ token 对话会在一小时缓存过期前被压缩,这样下一条消息就不用把整段历史重新处理。
二、什么时候会触发
官方 Settings reference 列出,下面这些条件同时满足时默认触发:
- 会话类型:交互式终端会话、VS Code 扩展的聊天面板,或桌面应用 Code 标签页里在你本机或通过 SSH 运行的会话;
- 自动压缩已开启:
autoCompactEnabled为开。官方还写明,如果你把自动压缩关了,空闲压缩也一起关; - 提示缓存是一小时 TTL:官方说明,不另外设置时,只有在 Claude 订阅套餐包含的用量额度内,Claude Code 才会请求一小时的缓存;超过套餐额度开始使用额外用量(usage credits)后,主对话会降到五分钟 TTL。API Key 或云厂商用户可用
promptCacheTtl自己选一小时; - 长度:上下文达到阈值,默认 200,000 token;
- 空闲时间:距离上一次请求约一小时,并且这期间你的电脑一直没休眠。
时间线上:终端版 2.1.299 加入,随后 2.1.302 增加了 /config 开关,VS Code 与桌面版在 2.1.314 加入,之后还扩展到关了遥测的订阅用户,以及 Bedrock、Vertex、Foundry 和 LLM 网关在启用一小时缓存的情形。
三、压缩之后你会看到什么
不同位置的提示不一样:
- 终端:一行以
Compacted while idle, before the prompt cache expired开头的提示; - VS Code 聊天面板:包含
a summary written while you were away的提示; - 桌面应用:同样的提示,放在标有
Claude Code notice的行里;看不到这一行时,官方建议切到 Verbose 视图模式。
VS Code 和桌面版的完整提示类似「Compacted using a summary written while you were away」,后面跟着如何关闭的说明。官方说你不需要做任何事。
压缩本身的细节、摘要里保留什么,见 /guides/claude-code-context-compact。
四、怎么关闭
三种方式,效果一样:
- 终端里:运行
/config,改 Idle compaction 这一行。官方说明选择会保存到用户设置并立即生效; - 改 settings.json:写入
json
{
"idleCompaction": false
}
放在 ~/.claude/settings.json(会话运行所在的那台机器或 WSL 里),或其他设置文件,设置文件的层级见 /guides/claude-code-settings-json;
- 临时覆盖:环境变量
DISABLE_AUTO_COMPACT会把自动压缩和空闲压缩一起关掉。
如果 /config 里看不到那一行,官方列的原因有两个:托管设置、--settings 参数或项目 / 本地设置文件里已经设置了这个键,会覆盖你的用户设置,要去那个来源改;或者在 v2.1.314 之前,如果 Claude Code 取不到 Anthropic 的功能开关(feature flags),空闲压缩根本不会运行,也就没什么可关。早于 v2.1.290 的版本不认这个键,需要关掉 autoCompactEnabled 才能停止它。
五、调整阈值
默认 200,000 token。如果你想让更短的对话也被压缩,在设置里加:
json
{
"env": {
"CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "150000"
}
}
官方说低于 100000 的值会被抬到 100000。官方的举例是:在 200K 上下文窗口的对话里,自动压缩会在接近 200,000 之前发生,所以把阈值降到 150,000 后这些对话才算够条件。
六、关于额度与恢复旧对话的警告
- 官方的费用文档提醒:会话回顾(session recap)和空闲压缩在你离开时也可能消耗 token;
- 订阅用户还有一个相关的新提示:从 2.1.304 起,在 Pro 和 Max 套餐上,恢复一个已不活跃的对话如果会用掉你 5 小时用量限额中可观的一部分,会给出警告,让你选择仍然恢复,或开启新对话,并在你提到之前的对话时让 Claude 去查。恢复旧会话的基本做法见 /guides/claude-code-resume-history。

图:本站根据 Claude Code 官方《Settings reference》 整理的示意图
七、该不该关
官方没有给「应该关」的建议,只说默认开启。可以这样判断:
- 经常离开又回来、对话很长,并且不想回来第一轮就把整段历史重新算一遍——保持默认;
- 希望对话里的每个细节都原样保留、不想被摘要替代——可以关,同时手动在任务间隙用
/compact选择压缩的时机; - 用量紧张时,选套餐可以参考 /guides/claude-code-pro-max-or-api,订阅入口见 /chongzhi/claude-code,价格以官方页面当前显示为准。
常见问题
Q:对话没满 200K,为什么没压缩?
默认阈值是 200,000 token,另外还要满足离开约一小时、缓存是一小时 TTL 等条件。
Q:压缩后能撤销吗?
官方文档没有给出撤销空闲压缩的操作;想回到更早的节点,可以看 /guides/claude-code-rewind-checkpoints-undo 里的回退方式是否适用。
Q:VS Code 里也有吗?
有,从 2.1.314 起,VS Code 的聊天面板和桌面应用 Code 标签页都支持,见 /guides/claude-code-vscode。
参考资料
- Claude Code 文档:Settings reference(idleCompaction)— https://code.claude.com/docs/en/settings-reference
- Claude Code 文档:Prompt caching — https://code.claude.com/docs/en/prompt-caching
- Claude Code 文档:Changelog — https://code.claude.com/docs/en/changelog
0 条评论
还没有评论,来抢沙发~