上下文窗口与自动压缩
设置自动压缩窗口(/autocompact、--autocompact、环境变量)、默认压缩阈值、网关与自定义模型 ID 的窗口修正,以及确认当前模型的位置。
阈值与变量行为以官方为准。
自动压缩窗口是上下文窗口在 Claude Code 压缩对话之前能填到多满。各压缩机制保留和丢弃什么,见上下文窗口文档的「压缩后保留什么」。
设置自动压缩窗口
有三个地方可以设置:
- 本会话及以后:运行带值的
/autocompact,如/autocompact 500k。Claude Code 把它作为autoCompactWindow保存到你的用户设置并应用到当前会话;如果托管设置这类更高优先级的设置范围设了该键,命令保存你的值但会话保持那个范围的窗口,命令会说明这一点。/autocompact auto回到为你的模型调好的窗口。 - 单次启动:启动 Claude Code 时传
--autocompact。该标志只对本次启动覆盖保存的设置而不修改它,claude --autocompact auto即使保存的设置有值也以调好的窗口运行;与/autocompact不同,该标志不会被托管设置这类更高优先级范围抢占。 - 脚本和云环境:设
CLAUDE_CODE_AUTO_COMPACT_WINDOW。设置期间它优先于命令、标志和设置,/autocompact报告该覆盖而不是改变窗口。
命令和标志接受 100K 到 1M token 的窗口大小,形式可以是:纯 token 数(如 200000);带 k 或 M 后缀(如 500k、1M);100 到 1000 之间的裸数字,表示千(200 即 200,000)。环境变量只接受纯 token 数。Claude Code 把窗口限制在模型的上下文窗口之内。
默认压缩阈值
没设自动压缩窗口时,Claude Code 在对话到达模型的上下文限制时压缩,这些会话除外:
- 云会话在对话接近模型限制时压缩。
- 没有扩展上下文的 Sonnet 4.6 和 Opus 4.6 在 200K 边界压缩;Opus 4.8 及更新版本在以 200K 上下文窗口运行时(如在 Bedrock、Google Cloud 的 Agent Platform、Foundry 上)也是。
- 设了
CLAUDE_CODE_DISABLE_1M_CONTEXT=1时,有原生 1M 窗口的模型(如 Sonnet 5 和 Fable 模型)在 200K 边界压缩。 - 以原生 1M 窗口运行的模型在窗口填满之前压缩,默认约在 967K token:在 Anthropic API 上包括 Sonnet 5、Fable 模型以及 Opus 4.7 及更新版本;在 Bedrock、Google Cloud 的 Agent Platform、Foundry 上,哪些模型以该窗口运行见「固定模型与覆盖」;在自定义
ANTHROPIC_BASE_URL之后见上一页关于网关上下文窗口的说明。 - 在 Claude Code 不认识的模型 ID(如 LLM 网关别名)上的会话,按 Claude Code 为该 ID 假定的上下文窗口压缩,见下一节。
修正网关或自定义模型 ID 的窗口
在 LLM 网关或其他自定义部署上,Claude Code 可能为模型 ID 假定一个与模型真实窗口不同的上下文窗口,无论它是否把该 ID 解析为某个 Claude 模型。设 CLAUDE_CODE_MAX_CONTEXT_TOKENS 为 Claude Code 应当假定的窗口。变量如何适用取决于 ID:Claude Code 把不以 claude- 开头的 ID(任意大小写),或带有 Claude Code 读取 ID 时会剥掉的后缀(如 Google Cloud 的 Agent Platform 用的 @YYYYMMDD 日期)的 ID,视作提供商或自定义写法(v2.1.259 之前不把剥掉的后缀算在内,所以带日期后缀的未识别 claude- ID 被当作不带后缀的裸 claude- 名)。三种情形要分开看:
- 无法把提供商或自定义写法解析为 Claude Code 认识的模型,且 ID 不含
[1m]:变量直接适用,主动压缩按声明的窗口继续。 - 无法解析且 ID 含
[1m](任意大小写):Claude Code 为它假定 1M 窗口,变量本身不适用;想在保留主动压缩的同时修正窗口,还要设CLAUDE_CODE_DISABLE_1M_CONTEXT=1,此时 Claude Code 把该 ID 当作不带[1m]的同一写法来定大小,于是CLAUDE_CODE_MAX_CONTEXT_TOKENS在对那个不带标记的写法适用时适用。声明的窗口大于 200K 时 Claude Code 会显示「200K 限制未强制」的启动警告,这在该配置下是预期的。 - ID 解析为 Claude Code 认识的模型,或是没有可剥后缀的裸
claude-名(任意大小写):只有同时设了DISABLE_COMPACT(禁用所有压缩)时变量才生效。例如包含 Claude Code 认识的 Claude 模型名的 ID(anthropic/claude-opus-4-8、us.anthropic.claude-…-v1:0、带日期的claude-sonnet-4-5@20250929)会解析为该模型,包括同时含[1m]的 ID:即使设了CLAUDE_CODE_DISABLE_1M_CONTEXT,Claude Code 也把claude-opus-4-8[1m]解析为 Opus 4.8。
对 Claude Code 不认识的模型 ID,设 CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1,让 Claude Code 只在 API 以它能识别的「过长」错误拒绝对话之后才压缩;网关把错误改写成 Claude Code 不认识的措辞时,不运行该恢复。
查看当前模型
有两个地方能看到你正在用哪个模型:你配置了的状态栏;以及 /status,它还显示你的账号信息。