跳转到内容

exceeds model's maximum context length(Claude Code)

Quick fix

在 cc-switch 的 Claude Code provider 高级配置中写入环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW,设为低于模型实际上下文的值,让 Claude Code 提前自动 compact。

报错原文
API Error: 500 Input length (121079) exceeds model's maximum context length (120000). This is a server-side issue, usually temporary — try again in a moment. If it persists, check your inference gateway (127.0.0.1:15721).

Claude Code 没有可配置 BYOK 后端真实上下文窗口的官方配置项,cc-switch 也只能写入 Claude Code 的配置文件/环境变量,无法让 Claude Code 按模型的实际上限自动截断输入。当通过本地或第三方网关接入的模型上下文窗口(如 120k)小于 Claude Code 默认假设时,长时间会话累积的输入会超出模型上限,服务端返回 500。变通办法是设置环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW,让 Claude Code 在到达该阈值前自动 compact。

同一变量还有两个变体问题:一是该值被钉在过低水平(如 272000)时,即使路由走的是 1M 上下文模型,也会在约 256K 就提前触发 compact,此时应检查 ~/.claude/settings.json 中是否已存在该变量;二是 cc-switch v3.17.0 及之前版本会把通用配置中提炼出的 CLAUDE_CODE_AUTO_COMPACT_WINDOW 覆盖到各供应商,导致为不同供应商设置的不同阈值失效,此问题在 v4.0.0 中修复,该变量改为各供应商自己的字段。

  1. 在 cc-switch 中编辑对应的 Claude Code provider,添加一个高级项,写入 env 下的 CLAUDE_CODE_AUTO_COMPACT_WINDOW,值设为低于模型实际上下文窗口的数字(例如 120k 模型设为 100000)。设置后 Claude Code 会在接近阈值时自动 compact,有用户亲测有效。

    cc-switch → Claude Code provider → 高级项
    {
    "env": {
    "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "100000"
    }
    }
  2. 如果现象相反——模型明明是 1M 上下文却在 256K 左右就自动 compact——检查 ~/.claude/settings.json,确认其中 CLAUDE_CODE_AUTO_COMPACT_WINDOW 的值是否被钉死在过低水平(如 272000),将其改为与模型窗口匹配的值或删除。

    ~/.claude/settings.json
    {
    "env": {
    "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "272000"
    }
    }
  3. 临时应急可直接在 Claude Code 会话中手动执行 /compact 压缩上下文。

  4. 如果你为不同供应商配置了不同的压缩阈值,却被通用配置自动提炼覆盖(v3.17.0 及之前的已知 bug),升级到 cc-switch v4.0.0 或更新版本——该版本已去掉通用配置的自动提炼,CLAUDE_CODE_AUTO_COMPACT_WINDOW 按各供应商自己的字段处理。

ToolClaude Code
Versioncc-switch 3.14.0 - 3.17.0 存在通用配置覆盖问题,v4.0.0 已修复
PlatformsWindows
我走的是 1M 上下文路由,为什么到 256K 左右就自动执行 compact 了?
不是 1M 窗口没生效,而是 ~/.claude/settings.json 里的环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW 把自动压缩窗口钉死了(例如 272000)。检查该文件,把这个值改成与模型窗口匹配的大小或删除该变量。
我给不同供应商配了不同的 CLAUDE_CODE_AUTO_COMPACT_WINDOW 阈值,为什么勾选通用配置后就失效了?
这是 cc-switch v3.17.0 及之前的 bug:通用配置会自动把该属性提炼到共享部分,覆盖各供应商自己的值。v4.0.0 已去掉通用配置的自动提炼,该变量改为各供应商自己的字段,升级到最新版即可。
cc-switch 能让 Claude Code 自动按 BYOK 模型的真实上下文窗口截断输入吗?
不能。Claude Code 目前没有可配置 BYOK 后端真实上下文窗口的官方配置项,cc-switch 只能写入 Claude Code 的配置文件/环境变量。可用 CLAUDE_CODE_AUTO_COMPACT_WINDOW 设置自动压缩阈值,或手动执行 /compact。
CLAUDE_CODE_AUTO_COMPACT_WINDOW 应该设成多少?
设为低于你模型实际上下文窗口的值,给 compact 留出余量。issue 中 120k 上下文的模型设为 100000 后自动 compact 生效;为 386k 窗口的模型有用户设为 386000。具体值按你的模型上限自行调整。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。