Claude Code 自动压缩阈值配置:autoCompactWindow 怎么设,以及怎么验证它真的触发了
上下文自动压缩(auto-compact)的阈值可以调。设置环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW,或在 settings.json 里写 autoCompactWindow 字段,把值设成目标 token 数。触发点不是这个数字本身,是这个数字的某个百分比:Sonnet 5 默认在原生窗口的约 96.7% 处触发压缩,设置这个值等于告诉 Claude Code「把窗口当作这么大来算百分比」。
两种配置方式
Section titled “两种配置方式”环境变量:CLAUDE_CODE_AUTO_COMPACT_WINDOW
Section titled “环境变量:CLAUDE_CODE_AUTO_COMPACT_WINDOW”官方文档(env-vars 页)直接给出这个变量:
Set the context capacity in tokens used for auto-compaction calculations… Use a lower value like 500000 on a 1M model to treat the window as 500K for compaction purposes.
model-config 页里 Sonnet 5 一节说得更具体:
Sessions auto-compact before the window fills, at about 967K tokens by default; set
CLAUDE_CODE_AUTO_COMPACT_WINDOWto choose a different threshold.
这条是官方公开承诺的行为,写进 shell 配置或启动脚本都可以:
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000settings.json 字段:autoCompactWindow
Section titled “settings.json 字段:autoCompactWindow”用户级配置文件(~/.claude/settings.json)里也能写同一个设置,字段名是 camelCase 的 autoCompactWindow:
{ "autoCompactWindow": 400000}这个字段本身在公开文档的正文里没找到直接说明拼写的段落,官方文档明确写出来的开关是 autoCompactEnabled(控制自动压缩整体开不开),autoCompactWindow 的存在和行为是通过本机配置文件的内部 schema(字段描述为「Auto-compact window size」,类型 integer,取值范围 100000–1000000)和实际触发测试确认的,不是逐字抄自某一页官方文档。两种写法(环境变量 / 配置文件字段)设的是同一个底层参数,改一处就够。
触发点不是这个数字,是它的某个百分比
Section titled “触发点不是这个数字,是它的某个百分比”怎么确认它真的生效了
Section titled “怎么确认它真的生效了”读完文档不代表配置已经生效,配置是按会话(session)读取的,改完文件、当前会话不会立刻应用,需要开一个新会话才会重新读取 settings.json。验证方法是把阈值故意调得很低,直接观察压缩是否被触发,而不是等到真的用到接近原生窗口时才发现配置没生效:
{ "autoCompactWindow": 100000}把值改成 100000 后开一个新会话(同目录下 claude --resume 接上原会话也可以触发重新读取配置)。如果当前上下文已经接近或超过 100000 × 96.7% 这个区间,新会话启动或发下一条消息时应该能立刻看到压缩发生。实测中,重开会话后的系统提示里出现了 SessionStart:compact 相关的 hook 触发记录,这是压缩已经发生的直接证据,不需要靠肉眼判断上下文变短了没有。
确认触发之后,把值改回目标数值(例如 400000),验证到此结束:
{ "autoCompactWindow": 400000}相关但更激进的开关:CLAUDE_AUTOCOMPACT_PCT_OVERRIDE
Section titled “相关但更激进的开关:CLAUDE_AUTOCOMPACT_PCT_OVERRIDE”如果不想改容量基准,只想改触发用的百分比本身,公开资料里出现过 CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 这个变量。据反馈,它只能把默认百分比调低,不能调高,这一条行为细节来自社群交流而非独立核实,标注在这里作为线索,正式依赖它之前建议按前一节的方法自己测一遍。
还没确认的点
Section titled “还没确认的点”autoCompactWindow这个 camelCase 拼写只在本机配置文件的内部 schema 里见到,没有在官方文档正文里逐字确认过,字段语义可能随版本变化而不通知。CLAUDE_AUTOCOMPACT_PCT_OVERRIDE的「只能调低不能调高」尚未独立验证。- 96.7% 这个百分比是 Sonnet 5 文档给出的默认值,其他模型或未来版本是否相同没有逐一核对。