如何处理Claude Code 最近版本(2026年更新)引入的模型上下文限制
在Claude Code里使用非Anthropic的AI大模型(本文为qwen3.7-flash-2026-07-15),可能会报以下错误。
powershell
"qwen3.7-flash-2026-07-15" isn't described by this version's model catalog; update Claude Code, or map it with behavesAs on a modelPicker row (or modelOverrides, if it is a provider id of a model this version knows). Until then auto-compact keeps this session within 200k tokens (the context window it assumes); if the model accepts more, append [1m] to the model name for 1M, or set CLAUDE_CODE_MAX_CONTEXT_TOKENS to its real window; CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1 restores the previous wait-for-the-API behavior.
这个提示是 Claude Code 最近版本(2026年更新)引入的模型上下文管理机制 发出的警告/提示,主要原因在于:
Claude Code 的本地客户端内置了一份"已知模型目录(Model Catalog)"。当你在 config.json 或环境变量中将底座模型设置为 qwen3.7-flash-2026-07-15 时,Claude Code 无法识别这个模型的具体参数,因此默认假设它的上下文上限只有 200k tokens,并会自动触发上下文压缩(auto-compact)。
如果你使用的模型(如通义千问 Qwen 3.7 / Qwen 3 系列)实际上支持 1M(100万) 或更高的上下文,可以通过以下 3 种方式之一 进行解决:
解决方案 1:在模型名称后追加 [1m](最快捷)
如果你在 claude-code-router 的 config.json 或配置文件中指定了模型名称,直接在模型 ID 后面加上 [1m] 标记:
将:
qwen3.7-flash-2026-07-15
修改为:
qwen3.7-flash-2026-07-15[1m]
原理 :Claude Code 解析到后缀
[1m]时,会自动将该自定义模型的上下文窗口扩展识别为 1,000,000 Tokens,而不会在 200k 就强制压缩上下文。
解决方案 2:在系统环境变量中显式指定上下文上限
在 Windows PowerShell 中直接设置环境变量,强制全局指定上下文大小(例如设置为 1M 即 1000000):
临时生效(仅当前 PowerShell 窗口):
powershell
$env:CLAUDE_CODE_MAX_CONTEXT_TOKENS="1000000"
永久生效(写入 Windows 用户环境变量):
powershell
[System.Environment]::SetEnvironmentVariable('CLAUDE_CODE_MAX_CONTEXT_TOKENS', '1000000', 'User')
解决方案 3:禁用未知模型的上下文限制(恢复旧版本行为)
如果你不想让 Claude Code 自动管理未知模型的上下文压缩,希望完全交由后端 API 自己处理溢出逻辑,可以开启该开关:
临时生效(仅当前 PowerShell 窗口):
powershell
$env:CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT="1"
永久生效:
powershell
[System.Environment]::SetEnvironmentVariable('CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT', '1', 'User')
💡 建议
如果你使用的是 claude-code-router,最推荐 方案 1 (在配置文件的模型名字末尾加上 [1m]),既简洁又不用修改全局环境变量。修改配置后,重新运行 ccr start 即可消除警告。