本文目录
Claude Code 报出 Prompt is too long 时,官方错误参考里的定义是:"The conversation plus attached files exceeds the model's context window." 也就是:当前对话加上附带的文件,已经超出这个模型的上下文窗口。这是窗口满了,不是套餐额度用尽,也不是 529 Overloaded 这类服务端过载。同一则运行时报错,在 CLI、Desktop 和云会话里都会出现;云会话页写明,和 CLI、Desktop 共用这份错误参考。
下面的步骤按 Anthropic 的 Claude Code 官方文档来写。我们还没有在本机运行过 Claude Code,也还没有复现过这则报错。文中出现的 94k、200k、967K、32MB,或大约 1,000 tokens,都只按官方文档原样引用,不是本站测到的数字。
交互里还会看到什么
基准原文是 Prompt is too long。在交互会话里,同一情况通常显示为:
Context limit reached · /compact or /clear to continue如果设了 DISABLE_COMPACT,这行只点名 /clear。更长的形态,包括下面的压缩失败形态,仍以 Prompt is too long · 开头。在 -p 输出和 transcript 里,文本仍是 Prompt is too long。
如果在用户设置里关掉了自动压缩,交互行还会说明:
Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on/config 里的 Auto-compact 开关会把 autoCompactEnabled 写入用户设置。官方写明:这条提示只在改 /config 就会生效时出现;若是 DISABLE_AUTO_COMPACT 或 DISABLE_COMPACT 关掉的,或项目/托管设置等更高优先级范围把 autoCompactEnabled 设成 false,提示不会出现。v2.1.235 之前,这行没有自动压缩提示。
Amazon Bedrock 把同一情况报成 Input is too long for requested model.,Claude Code 按同样方式处理。v2.1.217 之前无法识别该措辞,因而不会因此触发自动压缩,/compact 也会以同一则报错失败。经 Claude apps gateway 时,云端上游若以对方自己的错误形状拒绝请求,可能报 capability_rejected: prompt_too_long;Claude Code 把它与 Prompt is too long 同等处理。v2.1.228 之前无法识别该 token,因而不会因此触发自动压缩。
若这一轮已经跑过自动压缩,却因底层错误失败(例如模型不可用或认证失败),报文会写成:
Prompt is too long · automatic compaction failed: <the underlying error>官方的办法是先解决被点名的那个错误,否则 /compact 会因同一原因失败。v2.1.229 之前,失败的自动压缩只露出光秃秃的 Prompt is too long,不带原因。
官方建议先试 /compact 或 /clear
官方“What to do”清单的第一步,是跑 /compact 总结更早的回合并腾出空间,或跑 /clear 重新开始。/clear 会清空对话上下文,但项目记忆还在。命令页把 /reset、/new 列为 /clear 的别名。还想接着同一段对话,用 /compact;要开一段全新对话,用 /clear。/compact [instructions] 可以附带聚焦说明。/clear [name] 可以给上一段对话起名,方便以后在 /resume 里找到。
如果 /compact 回复 Not enough messages to compact.,说明这是单轮对话、没有更早内容可总结,空间被这一次提示词以及 Claude Code 每次请求都会带上的内容占满。官方接下来的步骤是:跑 /clear,用更少的粘贴或更小的附件重发,或按下述办法减少工具定义和记忆文件。
如果是在 Claude 正在压缩时把它停掉,然后立刻看到这则报错,官方写:对话其实没变,仍然大到需要压缩。应再跑 /compact 并重发消息,并升级到 v2.1.304 或更新;该版本之前,在那一时刻停止可能直接以这则报错结束本轮。在 v2.1.305,若接了许多 MCP 工具且直连 Anthropic API,这则报错可能把底层无关的 400 或 422 挡住。官方建议升级到 v2.1.306 或更新,才能看到原来的错误。
用 /context 看看到底是什么占满了窗口
/context 是官方给出的查看占用方式:彩色网格,并给出工具过重、记忆膨胀、容量警告等建议。排障页写明,明细按系统提示、系统工具、MCP 工具、自定义 subagent(含来源)、记忆文件、skills 和对话消息分类。全屏模式下明细会收起,加 all 即 /context all 可展开。子目录 CLAUDE.md 是按需加载,不出现在会话开始时的那张明细里。
对话已经超过模型上下文窗口时,/context 会在输出顶部给出警告。下面这句是官方文档例句,其中的 200k 和 94k 只是文档里的示例数字,不是某台机器或本站实测:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.出现 Context exceeds 之后,官方写:自动压缩开着(默认)时,直接发下一条消息即可;若仍失败并变成 Prompt is too long,回到该小节。自动压缩关着时,在会话里跑警告点名的 /compact,或 /clear 重来;在此之前,消息会以 Context limit reached 失败(-p 输出里是 Prompt is too long)。
如果超过的是压缩窗口(例如 1M 上下文模型上的 200K 边界),警告会改写成另一句。官方写:压缩窗口可以低于模型上下文窗口,超过它的请求仍可能成功。这也是官方文档例句:
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.两种形态在设了 DISABLE_COMPACT 时都改点名 /clear,不再点名 /compact。v2.1.216 之前,/context 只显示占用超过 100%,没有解释含义或如何恢复的警告行。
关掉不用的 MCP,精简过大的 CLAUDE.md
官方清单里包括用 /mcp disable <name> 关掉不用的 MCP 服务器,把它们的工具定义移出上下文。/mcp 也可以在不打开列表的情况下关掉某个或全部服务器。第一次怎么接线,看怎么在 Claude Code 里接上 MCP 服务器(2026年11月)。
过大的 CLAUDE.md 应精简,或改成只在相关路径才加载的规则。记忆页的建议是每个文件控制在 200 行以内:更长的文件会占用更多上下文,也可能降低遵从度。超过 4 MiB 的文件会被跳过。用 @path 拆文件有助于整理,但不会减少上下文,因为被导入的文件会随导入它的 CLAUDE.md 一起加载。单个文件超过建议长度时,启动和 /status 会警告;多个未超单文件建议长度的文件合计超过组合上限时,也会警告。
按需加载的子目录 CLAUDE.md 和规则文件还有按字符的上限,取决于会话的上下文窗口:官方写,200K 窗口为 40,000 字符;1M 窗口在 Claude Opus 4.6 和 Claude Sonnet 4.6 上是 200,000 字符,在更新的模型上是 150,000 字符。超过则只送出文件开头。v2.1.309 之前,该限制不用于按需加载的文件。
自动压缩默认是开着的
autoCompactEnabled 在 /config 里显示为 Auto-compact,默认是 true。设为 false 则不自动压缩,手动 /compact 仍可用,idle compaction 也会关掉。DISABLE_AUTO_COMPACT=1 会关闭自动压缩和 idle compaction,手动 /compact 仍可用,并会覆盖 autoCompactEnabled。官方设置页写明:两者只要有一个把它关掉,另一个也不能再打开。DISABLE_COMPACT=1 会关闭全部压缩,包括自动压缩和手动 /compact;这时提示里只会点名 /clear。
自动压缩默认开启,官方写它通常能避免这则报错。若在 /config 或用 DISABLE_AUTO_COMPACT 关过,按文档应再打开。若坚持关掉,就要自己在窗口满之前跑 /compact。
命令页还列有 /autocompact [auto|<tokens>],用来设定自动压缩窗口,例如 500k,或 auto 回到该模型的调定窗口。无参数时打开对话框,显示当前窗口。该命令需要 Claude Code v2.1.221 或更新。上下文页也写了在自动压缩之前可以先做的事:带聚焦的 /compact、用 /rewind 只总结一部分、用 /autocompact 500k 等把自动压缩提前、换不相干任务时用 /clear、把大文件阅读交给 subagent。
自动压缩在这则报错上运行时,通常总结最旧的回合、保留最新的。官方写的最后手段是:如果无法总结任何一个完整回合,会原样保留最新的提示词,并总结它之前的一切;若此时对话并非以该提示词结尾,则改为总结整段对话。若准备带下去的内容里没有模型回复、且自己的文本不足大约 1,000 tokens(例如在一次过大粘贴之后只发了很短的重试),Claude Code 会跳过这次恢复,需跑 /clear。v2.1.269 之前,只要无法总结完整回合,压缩就会失败,该状态的会话每一轮都会再撞上这则报错。这里的“大约 1,000 tokens”是官方原文,不是本站实测。
只有一轮、无法压缩时
单轮对话没有更早回合可总结。若本应触发自动压缩,Claude Code 会跳过尝试,并说明请求被什么填满。API 未在错误里报告 token 数时,官方原文是:
Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.API 报告了 token 数,且对话自身内容占了请求的大部分时,官方原文是(占位符保持原样,不填假数):
Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) and this conversation's own content is most of it. A single-exchange conversation cannot be compacted; start with less content (smaller files or pasted text).大部分请求在对话之外时,官方原文是:
Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) but this conversation is only ~<conversation tokens> tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.官方的恢复办法是减少粘贴、附件、工具或记忆文件,再 /clear 重发。v2.1.162 之前,Claude Code 仍会尝试压缩,失败时只露出光秃秃的 Prompt is too long。
默认自动压缩阈值,以及未识别的模型 ID
未单独设定自动压缩窗口时,Claude Code 一般在对话到达该模型上下文上限时再压缩,但官方写了这些例外:云会话在接近模型上限时压缩;未开 extended context 的 Sonnet 4.6 和 Opus 4.6 在 200K 边界压缩;设了 CLAUDE_CODE_DISABLE_1M_CONTEXT=1 时,原生 1M 窗口的模型(官方举例 Sonnet 5 和 Fable)也在 200K 边界压缩;原生 1M 窗口的模型会在窗口填满之前压缩,默认大约 967K tokens(官方列举:Fable、Sonnet 5 及更新、Haiku 5.5、Opus 4.7 及更新);未识别的模型 ID 按 Claude Code 为该 ID 假定的窗口压缩。这里的 967K 是官方默认值,不是本站实测。
若这则报错出现在约 200K tokens 附近,而该模型实际接受更大窗口,官方给出的原因之一是:Claude Code 不识别这个模型 ID,因而按 200K 窗口来处理。要继续用过该点,须按 model-config「Correct the window for a gateway or custom model ID」告诉它真实窗口。启动时可能看到类似官方例句 Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens;例句里的 "my-gateway-opus" 是占位,不是真实产品名。
给未识别 ID 声明真实窗口的办法,包括 CLAUDE_CODE_MAX_CONTEXT_TOKENS(单位 tokens)、给已知模型做 modelOverrides/modelPicker 映射,或对应当使用 1M 窗口的 ID 追加 [1m]。官方写明,该变量对哪些 ID 生效,以当日 model-config 小节为准,不要简化成“设了就一定管用”。识别该 ID 或采用给出的窗口之后,启动警告不再出现。若使用自定义 ANTHROPIC_BASE_URL,且错误以 Prompt is too long · automatic compaction failed 开头,官方建议设定该模型的上下文窗口,或升级到 v2.1.299 或更新;该版本之前,Claude Code 会在假定的 200K 窗口附近直接以该报文结束本轮,而不是把请求发出去。
需要更大窗口而不是更短对话时,官方写 Fable、Sonnet 5 及更新、Haiku 5.5、Opus 4.6 及更新、Sonnet 4.6 支持 100 万 token 上下文。如何按套餐选用 [1m] 变体,以当日 model-config 的 Extended context 节为准,这里不编造套餐资格。套餐说明也可看Claude 价格(2026年11月),价表不搬进这篇。
压缩之后还留下什么
按 context-window 页的「What survives compaction」表,压缩之后是这样处理的:系统提示和 output style 仍生效;项目根目录 CLAUDE.md 与无路径范围的规则会从磁盘重新注入;auto memory 从磁盘重新注入;skill 描述在 v2.1.304 或更新版本会重建并重新注入;若会话开始时带有 Git status snapshot,会从仓库重新读一份新的;plan mode 的计划从磁盘重新注入;带 paths: 的规则和子目录 CLAUDE.md 按需再加载;Claude 读过或编辑过的文件最多再读 5 个,先最近修改的,超过 5,000 tokens 的文件只保留路径,显示为 Referenced file 而不是 Read;已调用的 skill 正文会重新注入,单个 skill 上限 5,000 tokens、合计 25,000 tokens,超出时先丢掉最旧的;后台命令和后台 subagent 继续运行,Claude Code 会提醒模型哪些还在跑;此前由 hooks 加入的内容会随对话一起被总结;匹配 compact 来源的 SessionStart hooks 会再运行,输出加入压缩后的上下文。上述 5,000 tokens 等数字来自官方表,不是本站实测。
带路径范围的规则和子目录 CLAUDE.md 是在读、写或编辑到触发文件时载入消息历史的,所以压缩时会随其他内容一起被总结掉。只出现在对话里、尚未再加载的子目录 CLAUDE.md,或压缩之后还没再匹配到文件的路径规则,看起来会像“丢了”。官方建议把只存在于对话里的说明写进 CLAUDE.md;若一条规则必须在压缩后仍然生效,可去掉 paths:,或把它放到项目根目录的 CLAUDE.md。
不要和额度用尽、529、32MB 请求过大,或压缩反复填满混在一起
套餐额度用尽,在错误参考里是另一组句子,例如 You've hit your session limit、You've hit your weekly limit,以及 Opus、Sonnet 限额的变体。那是账户或套餐额度,不是模型上下文窗口。专门说明见Anthropic 仍只用倍数说明 Claude Code 额度,各套餐到底能用多少。
529 Overloaded 是服务端过载,不是窗口满了。那篇教程是Claude Code 提示「529 Overloaded」怎么办?Anthropic 文档的说明和可以试的办法。
Request too large (max 32MB) 也是另一则报错。官方定义是:原始请求体在 tokenization 之前超过 API 的 32MB 限制,通常因为大量粘贴、工具结果或附件,并且写明该限制与上下文窗口是分开的。若报文写 compacting cannot make it fit,按官方:按两次 Esc 退回到加入大内容的那一轮之前,或 /clear 重来;否则可 /compact,官方写它会丢掉累积的图片和附件。大文件应按路径引用,让它分段读取,而不是整份贴进对话。32MB 不是 Prompt is too long 的另一种叫法。32MB 是官方 API 限制,不是本站实测。
Autocompact is thrashing: the context refilled to the limit... 又是另一则报错,出现在排障页,而不是 Prompt is too long 这一节。那里自动压缩已经成功,但文件或工具输出又把窗口填满,Claude Code 停止重试以免空耗。官方恢复步骤包括:让它按更小的范围读过大的文件、带聚焦的 /compact、把大文件工作交给 subagent,或在不再需要先前对话时 /clear。这与本题相关,但不是 Prompt is too long 的定义。
GitHub 上有用户这样报告,但这不是官方结论
anthropics/claude-code 仓库里的 GitHub issue #103279,标题是 [BUG] Auto-compact stops triggering on 1M-context sessions, which then fail with "Prompt is too long" (VS Code extension 2.1.301),在这次打开时仍是 open,有 1 条评论,标签含 bug、platform:windows、area:core、platform:vscode。作者不是官方账号(author_association 为 NONE)。
作者描述的是 Windows 11 上的 Claude Code VS Code 扩展 2.1.301,模型 claude-opus-5-5 且为 1M 上下文,Max 订阅,autoCompactEnabled: true,未设压缩相关环境变量。按该用户的说法,两个长会话在 2026 年 10 月 18 日(该 issue 创建于 2026-10-18T20:27:08Z,即 2026-10-19 04:27 Asia/Shanghai)没有自动压缩,后来以合成的 Prompt is too long 失败(isApiErrorMessage: true,error: invalid_request),之后每一轮同样失败,直到 /clear。作者根据自己的 transcript,认为自动压缩阈值大约在 967,000 到 971,000 tokens。这与官方“原生 1M 窗口默认大约在 967K tokens 压缩”是同一数量级,但 967K 只引用官方文档;issue 里的逐次计数只是该用户报告的会话数据,不是官方阈值。作者自己的办法是大约在 900,000 tokens 时手动 /clear——这是用户办法,不是官方建议。
一条评论写于 2026-10-28T15:02:47Z,即 2026-10-28 23:02 Asia/Shanghai,来自 Linux CLI 2.1.310,同样 author_association: NONE:在约 940k tokens 的长跑 subagent 上,下一条约 2 KB 的消息立刻返回 Prompt is too long;之后只发单词 continue,出现了 compact_boundary 和摘要,会话在约 207k tokens 上继续。同样是用户报告,不是官方步骤,也不能据此猜测根因。issue #103279 当时仍为 open,且无官方评论。官方文档描述的是应有行为和恢复步骤;单凭这份用户报告,不能把它当成已确认的产品缺陷,或已修复/未修复的结论。
以上内容依据官方错误参考,以及命令、上下文窗口、设置、环境变量、模型配置、记忆、排障和云会话等实际引用过的页面。docs.anthropic.com 的 Claude Code errors 入口会跳到同一份 code.claude.com 错误参考,不是内容不同的第二套文档。
