前言:Claude Code 是我日常使用频率最高的 Agent 工具。今天用 Skill 制作 PPT 时突然遭遇上下文溢出,排查后发现是因为更换了模型,却没有为新模型手动启用 1M 上下文,导致默认窗口只剩 20K——长任务直接爆掉。其实之前就有个疑问:调好 1M 上下文后,手动压缩命令
/compact就消失了,翻遍文档也找不到。想着反正 1M 够用,就没深究。直到这次踩坑,才彻底弄清来龙去脉。于是把相关配置、环境变量和避坑要点整理成这份指南。
一、为什么需要调整上下文窗口
Claude Code 默认按模型自身上报的窗口运行。对于 200K 级别的默认窗口:
长会话风险:多轮对话 + 大量工具调用,容易撞上限导致请求失败。
未启用的扩展能力:部分模型支持 1M 长上下文(如
[1m]变体),但默认不会开启。频繁压缩:自动压缩默认在接近窗口上限时触发,会打断思考节奏。
通过合理配置,可以:
扩大窗口到模型支持的最大值(如 1M),容纳更长会话。
调整自动压缩阈值,避免在关键对话中被压缩打断。
关闭自动压缩,把控制权完全握在自己手里(适合高阶用户)。

二、核心环境变量速查表
三、配置位置
Claude Code 读取配置的优先级(从高到低):
项目级:
<项目目录>/.claude/settings.json用户级:
~/.claude/settings.json(Windows 为C:\Users\<用户名>\.claude\settings.json)环境变量 / shell 配置
建议优先调整用户级,对所有项目统一生效。
四、配置方案
方案 A:启用 1M 上下文 + 700K 触发自动压缩(推荐)
{
"env": {
"ANTHROPIC_MODEL": "your-model[1m]",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "1000000",
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "700000"
}
}关键点:
三个变量缺一不可:
ANTHROPIC_MODEL必须带[1m]后缀,才能让 API 端点走 1M 路径。不要同时设置
DISABLE_COMPACT=1,否则自动压缩会被压制,700K 阈值失效。CLAUDE_CODE_AUTO_COMPACT_WINDOW=700000表示在 700K 时触发压缩,留出 300K 余量给后续对话。
方案 B:纯 1M 上下文,关闭所有压缩
{
"env": {
"ANTHROPIC_MODEL": "your-model[1m]",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "1000000",
"DISABLE_COMPACT": "1"
}
}适用场景: 短会话但需要最大上下文,或希望完全掌控压缩时机。
风险: 会话撞到硬上限时会崩溃,需自行用 /context 监控。
方案 C:仅调整自动压缩阈值(保持默认窗口)
{
"env": {
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "80"
}
}适用场景: 200K 默认窗口够用,但希望早点触发压缩(80% 而非默认的 95%)。
五、常见问题与避坑
Q1:设置了 CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000 但不生效
原因: 缺少 ANTHROPIC_MODEL 的 [1m] 后缀,或同时设置了 DISABLE_COMPACT=1 但模型本身不支持 1M。
解决:
确认模型名称带
[1m]后缀。确认模型厂商确实提供 1M 变体。
重启 Claude Code。
Q2:Messages 显示超过 100%
原因: 单条工具返回结果(如 Read 文件内容)较大,累计超出窗口。
解决:
立即执行
/compact释放空间。使用
Read工具时传入offset和limit参数,只读需要的部分。
Q3:自动压缩频繁触发,体验差
原因: 压缩阈值设置过低(如 CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=50)。
解决:
提高
CLAUDE_CODE_AUTO_COMPACT_WINDOW数值(如 700K → 800K)。或直接删除该变量,恢复默认行为。
Q4:想完全关闭自动压缩但保留手动 /compact
解决: 使用 DISABLE_AUTO_COMPACT=1 而非 DISABLE_COMPACT=1。
{
"env": {
"DISABLE_AUTO_COMPACT": "1"
}
}Q5:配置改了但没生效
排查清单:
是否重启了 Claude Code?
是否修改了正确的
settings.json(用户级 vs 项目级)?JSON 格式是否合法(逗号、引号)?
环境变量值是否为字符串(如
"1000000"而非1000000)?