Claude Code 的 Prompt is too long 错误表示发送的输入超出了上下文限制。当前交互界面也可能显示 Context limit reached。首先要区分:是历史对话太长、可以压缩,还是初始输入本身就太大。下面是错误信息示例,数字仅用于说明。
Prompt is too long
# API 错误信息示例:
prompt is too long: 233153 tokens > 200000 maximum
输入不只是刚刚键入的文字,还可能包括对话历史、已读取的文件、工具结果和指令。在 233153 tokens > 200000 maximum 中,输入为 233,153 个 token,允许的上限为 200,000。上下文窗口本身同时涵盖输入与本次生成的输出;这个错误表示仅输入就已超过上限。它的恢复办法与耗尽计划在一段时间内的可用额度而触发的使用量限制不同。
历史过长时用 /compact,首条输入过大时缩减输入,压缩报错时先处理提示的原因。这是几条基本恢复路径。自动压缩默认启用,但不能保证拦住所有超限情况。本文依据 2026 年 9 月 21 日核对的 Claude Code 官方错误文档与 API 规范,介绍原因、恢复步骤及 200K/1M 的使用条件。直接调用 API 的情况另行说明。
同样是“太长”,需要缩减的内容可能不同
先总结较早的历史。如果压缩后立即再次占满,应将大批量读取拆开。
没有更早的对话可供总结。应先减少粘贴内容、附件、指令及工具带来的开销。
先解决同时报告的原因,例如认证失败或模型不可用。仅反复压缩无法修复这些问题。
用 /context 查看窗口构成,用 /usage 查看一段时间的消耗或计划额度。两者都涉及 token,但衡量的是不同内容。
1. 这个错误是什么意思
上下文窗口限制模型在一次回复中能够参考和生成的信息总量。它按 token 而非字符计算,既包括输入,也包括本次回复的输出和思考 token。从 API 缓存读取的输入仍占用窗口。缓存会改变价格或处理过程,却不会让这部分输入不占空间。参见 Anthropic 上下文窗口规范。
在这个限制下,当 Prompt is too long 出现时,说明准备发送的输入本身就已经装不进窗口。即使问题很短,带上之前的历史或文件后,整个请求仍可能很大,因此只缩短最后一句不一定有效。基础知识见上下文窗口是什么?
接近上限时,Claude Code 会清除较早的工具输出,并在需要时总结对话。但大段粘贴、关闭自动压缩或压缩期间认证失败,仍可能使其停下。总结后立即再次读取同一个巨大文件,也会重新填满窗口。不要只凭自动压缩是否开启来判断原因。请阅读完整错误,并查看报错前刚加载了什么。
2. 什么会占满上下文窗口?
下面的构成依据 Claude Code 工作原理说明。保存的对话日志不等于当前发给模型的内容;清除较早的工具结果或总结历史,会改变当前窗口中的内容。
| 组成部分 | 进入窗口的内容 | 应检查什么 |
|---|---|---|
| 对话历史 | 当前请求中发送的往返消息;压缩会将其中一部分替换为摘要 | /compact 用于同一任务;/clear 用于下一项无关任务 |
| 文件与工具结果 | 读入的文件内容、搜索结果、命令输出等 | 缩小搜索范围、只读取相关行,或让子智能体进行详细调查 |
| MCP | 工具名称与服务器指令。默认由 Tool Search 在需要时加载详细定义 | 通过 /context 检查实际开销;停用不用的服务器时,使用 /mcp |
| CLAUDE.md 与记忆 | 适用的指令和已加载的记忆;并非所有自动记忆文件都会始终出现 | 常驻规则保持简短,将只适用于特定任务的说明另行保存 |
| 技能 | 通常启动时加载说明,使用时加载正文;某些设置也可延后说明的加载 | 检查不必要的自动调用候选,以及过长的技能正文 |
| 系统指令 | Claude Code 或连接环境提供的运行指令 | 先检查自己能够控制的指令、附件与工具 |
“接入 MCP 就会在启动时加载所有工具的完整定义”不符合当前默认行为。关闭 Tool Search、配置预加载或连接不支持该机制时,定义可能预先加载。请在官方 Tool Search 配置表中核对连接条件。查看 /context 比仅按服务器数量估算开销更有用。
子智能体在单独的窗口中调查,可将结果带回,而无需把全部中间工具输出放进主对话。不过,它返回的摘要或结论仍会占用主对话的窗口。要求它复述整个调查过程,会削弱收益。应明确所需结果,例如“只返回相关文件与行号、结论和未解决的问题”。设计原则见上下文工程。
使用 /context 查看当前窗口占用,使用 /usage 查看 token 消耗与计划使用量。后者显示的费用是估算,并非最终账单。在支持的环境中,/skill-doctor 也能检查技能开销,但它有可用条件。找不到该命令时,先从 /context 入手。测量步骤见什么在占用你的上下文?,可用条件见官方命令列表。
3. 上下文容量:200K 与 1M
200K 表示 20 万 token,1M 表示 100 万。不过,应分别核查模型容量、Claude Code 在当前连接中使用的容量、自动压缩阈值,以及计费条件。用 /status 查看当前模型与账户,用 /model 查看可选项。
区分容量与使用条件
例如 Sonnet 4.5。即使模型支持 1M,Claude Code 也可能因连接方式或禁用 1M 的设置而按 200K 处理。
Anthropic API 的例子包括 Fable 系列、Sonnet 5 和 Opus 4.7 及更新版本。部分模型默认使用 1M,并非总要添加 [1m]。
来源:Anthropic 模型配置与扩展上下文。自动压缩的触发位置会随设置和模型而变化。
对于订阅,Max、Team 和 Enterprise 包含 Opus 1M;Pro 的 Opus 1M,以及订阅中的 Sonnet 4.6 1M 则需要 usage credits。直接连接 Anthropic API 的 Sonnet 5 不同:所有计划默认使用 1M,无须额外 usage credits,也无须选择 [1m]。网关与禁用 1M 的设置会带来例外,因此不能只看模型名称判断。
1M 的“标准定价”表示:超过 200K 后,不会再收取额外的长上下文单 token 溢价。这不意味着可以在总价不变的情况下无限增加输入。处理的 token 越多,使用量越大。计划是否包含 1M、是否通过 credits 计费,又是另一回事。
字符与 token 的比例同样取决于模型和内容。不要假设每个新模型都会固定增加某个百分比;使用 API 时,应针对目标模型计数。某些任务确实需要更大的窗口,但先删去无关日志和重复指令,更容易判断真正所需的容量。
4. 如何立即恢复
根据发生了什么来选择恢复方法:是历史增长,还是输入中加入了大文件。以下方案按优先顺序排列。
释放窗口空间的步骤
/compact 重点保留认证错误的相关信息。这样可在保留上下文的同时减少负担。/context 查看构成,再停用不必要的 MCP 服务器并缩短 CLAUDE.md。详细流程单独保存,需要时才读取。/model 选择具有 1M 上下文的模型。先完成步骤 1–4 的整理。不要关闭自动压缩,应保持默认启用。历史过长用步骤 1,下一项无关任务用步骤 2。初始输入过大用步骤 3 和 4。若报告了压缩失败的根本原因,先处理该原因。
如果 /compact 报错 Error during compaction: Conversation too long,官方解释是没有足够空间生成摘要。清空输入框,连按两次 Esc,然后从列表中选择大段输入之前的轮次,回退对话。连按两次并不会自动回退若干轮。如果选择的操作还会回退代码,应先确认范围。之后重试压缩;若仍无法腾出足够空间,使用 /clear,以较小的输入重新开始。操作条件见官方键盘控制说明。
如果 automatic compaction failed 后面跟着认证失败或模型不可用,应先解决这个原因,再尝试释放窗口。Not enough messages to compact. 表示之前的对话太少,无法总结:应减少附件或粘贴内容,而不是反复压缩。若压缩后立即再次占满,应把最近的大型日志或文件缩减到所需部分。
直接调用 API 时
/compact 和 /clear 是 Claude Code 的操作,不是发给 Messages API 的控制命令。使用 API 时,应检查发送的 messages、system、tools 和附件,并通过目标模型的 token 计数 API 估算输入。应缩减请求本身:总结旧历史、仅保留文档相关章节,或移除不必要的定义。不要因裁剪请求而破坏工具调用与结果的配对关系。长对话也可使用 API 端压缩,但支持的模型和设置与 Claude Code 命令不同。
恢复后,先确认小型请求能够得到回复,再逐步加回必需信息。反复发送同一份巨大输入并等待,不会增加容量。日常整理方法见 Claude Code token 节省指南。
5. 区分相似错误
输入过大、配置的输出上限、生成时触及窗口限制,以及一段时间的使用量,是不同问题。应查看错误文字或 API 的 stop_reason,不能仅凭回复看似被截断就下结论。
| 现象 | 含义 | 主要处理方式 |
|---|---|---|
| Prompt is too long / N tokens > M maximum | 本文主题:输入超过上下文窗口 | /compact、/clear、让子智能体承担大规模读取,或使用 1M 模型 |
| 回复提前停止(stop_reason: max_tokens) | 输出达到请求设定的 max_tokens | 使用 API 时,检查输出设置与模型上限;也可要求继续回答 |
| stop_reason: model_context_window_exceeded | 生成过程中,输入与输出总量达到窗口限制 | 减少输入,为输出保留空间 |
| usage limit reached | 计划的可用额度已耗尽,与 token 窗口无关 | 等待重置;参见使用量限制的处理方法 |
| Usage credits required for 1M context | 这是访问权限问题:所选 1M 上下文不包含在计划中,不是输入超限或额度耗尽 | 启用 credits 后重新启动,或用 /model 返回标准窗口 |
根据 Anthropic API 规范,Claude 4.5 及更新版本只要输入本身能装入,就会接受请求,即使输入加上请求的 max_tokens 已超过窗口。生成期间达到窗口上限会返回 model_context_window_exceeded,所以仅凭回复较短,不能证明是因为 max_tokens 而停止。其他问题见 Claude Code 常见错误。
6. 预防清单
开始工作前:通过 /context 检查加载内容。用搜索或行范围缩减大型文档,而不是整份粘贴。拆分调查任务时,也应规定子智能体返回结论的范围。
工作中:通常应保持自动压缩启用。如果记得曾关闭,请检查 /config 与实际生效的设置。还应查看每次压缩后是否又读取了相同材料。手动压缩并非越频繁越好:何时执行 /compact,以及明确保留哪些决策,都很重要。
任务之间:开始无关任务前,将必需信息保存到文件,再用 /clear 开启新对话。旧对话会被保存,但为了恢复工作而重新打开同一份庞大历史,可能让原因再次出现。CLAUDE.md 的常驻指令只保留每次都需要的规则。
自定义连接:如果使用网关或自定义模型 ID,应核对 Claude Code 假定的窗口与连接实际容量是否一致。增大配置中的数字,不会扩大模型的真实窗口。请与管理员一起查看官方自定义模型设置。
总结
Prompt is too long 表示完整输入,包括历史和附件,无法放入窗口,而不只是最后键入的一句话。应按情况选择:/compact 用于长历史;初始输入过大就缩减输入;压缩报错则先处理根本原因。
MCP 详细定义默认按需加载。应通过 /context 检查当前内容,不要仅以服务器数量判断开销。对于 1M,应核对模型、连接及计划条件,并分别看待容量、定价与自动压缩阈值。直接调用 API 时,应检查请求与停止原因,而非依赖 Claude Code 命令。
常见问题
问:“Prompt is too long”与“usage limit reached”是一回事吗?
答:不是。前者表示输入超过一次请求的上下文限制,后者与计划的使用额度有关。输入过大时,应缩减发送内容。/clear 不会恢复计划额度。
问:为什么开启自动压缩后仍会报错?
答:原因可能包括巨大输入、没有可总结的旧对话、压缩失败,或总结后立即再次占满。不要将诊断缩成两种可能:请阅读完整错误并检查最近的读取。如果提示了认证失败等原因,先解决它。
问:/compact 也报“Conversation too long”。
答:官方解释是没有足够空间存放摘要。清空输入框、连按两次 Esc,从列表选择较早轮次以回退对话,再重试。若仍不足,应记录重要内容,执行 /clear 后以较小输入重新开始。选择会回退代码的操作之前,先确认作用范围。
问:切换到 1M 模型就能解决吗?
答:如果所需输入能装进新窗口,可能有帮助,但可用条件因模型、连接与计划而异。1M 采用标准单 token 定价,不意味着处理更多内容时总价仍不变。先减少无关历史和巨大输出,更容易判断所需容量。
问:怎样查看什么占用了窗口?
答:在 Claude Code 中使用 /context。这不同于 /usage 中的累计消耗或计划额度。部分 MCP 定义按需加载,因此不能只看连接数量判断开销。使用 API 时,应通过目标模型的 token 计数 API 估算请求。