所有文章

Claude Code Prompt is too long 怎么办?别慌,实测 6 个解决办法

Claude Code Prompt is too long 表示这次请求(含系统提示词、工具定义和 CLAUDE.md)超过了模型的上下文窗口。我们在 Claude Code 2.1.312 上用模拟接口实测了几种提示,按顺序整理了解决办法,包括接国产模型时怎么设置真实窗口。

Claude Code Prompt is too long:一个打开的浅蓝色黏土小行李箱,里面塞满绿色衣服,柔和自然光和树叶影子

先说结论:Claude Code Prompt is too long 的意思是这次请求太大,超过了模型的上下文窗口。这里的请求包括你的对话,也包括 Claude Code 自己附带的系统提示词、工具定义和 CLAUDE.md。交互模式下你看到的通常是 Context limit reached · /compact or /clear to continue。处理顺序:先 /compact;不行就 /context 看是谁占了窗口,关掉用不上的 MCP,精简 CLAUDE.md,或者 /clear 后少贴点内容重来。如果你接的是 DeepSeek、Kimi 这类非 Anthropic 模型或走中转网关,还要确认 Claude Code 知道这个模型的真实窗口。下面的报错我们在 Claude Code 2.1.312 上用本地模拟接口实测过,原文和处理办法以 Claude Code 官方报错文档 为准(2026 年 10 月 29 日核对)。

Claude Code Prompt is too long 有哪几种写法

Claude Code Prompt is too long 的几种写法:Context limit reached、auto-compact is off、automatic compaction failed、单轮对话提示和 Bedrock 的 Input is too long

API 原始报错就是 Prompt is too long,-p 模式输出和对话记录里保持这个写法。交互界面会换成下面几种:

Context limit reached · /compact or /clear to continue
Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on
Prompt is too long · automatic compaction failed: <具体错误>

第二种带着 auto-compact is off,说明你关了自动压缩;第三种是自动压缩本身失败了,后面会跟原因。如果整个对话只有一轮,前面没有可以压缩的内容,Claude Code 会直接告诉你请求里主要是什么:是你自己贴的内容太多,还是系统提示词、工具和附件太多。走 Amazon Bedrock 的话,同样的情况报的是 Input is too long for requested model.,处理方式一样。

实测:同一个 400,两种不同提示

Claude Code Prompt is too long 模拟接口实测:管道传入 1MB 日志和只发 hi 得到两种不同提示,/context 显示 2.1k / 1m

测试 key 没法真的塞满 100 万 token 的窗口,所以我们用 ANTHROPIC_BASE_URL 把 Claude Code 2.1.312 指向一个本地模拟接口,它固定返回 API 的 400 报错 prompt is too long: 215000 tokens > 200000 maximum。这里的 215000 和 200000 是模拟接口里写死的数字,不是真实模型的数据。

  • 把一个 1,040,001 字节的日志通过管道传给 claude -p "summarize this log",返回:Prompt is too long · the request is ~215000 tokens (limit 200000) 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). 意思是你自己的内容占了大头,少贴点。
  • 只发一句 claude -p hi,同一个 400 变成:Prompt is too long · the request is ~215000 tokens (limit 200000) but this conversation is only ~2464 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. 意思是对话本身只有 2464 token,其余都是系统提示词、工具定义和附件。

所以先看报错后半句,就知道该减你的内容,还是减 Claude Code 附带的东西。顺带一提:我们一开始把 1MB 日志直接当命令行参数传,结果报的是 Argument list too long,这是 shell 的限制,和 Claude Code 无关,用管道传就行。

Claude Code Prompt is too long 怎么解决

Claude Code Prompt is too long 解决步骤:/compact、/context、/mcp disable、精简 CLAUDE.md,最后 /clear 少贴内容重发

按这个顺序试:

  • /compact:把前面的对话压成摘要,腾出空间。如果它回 Not enough messages to compact.,说明对话只有一轮,直接 /clear,然后少贴点内容或换小一点的附件再发。
  • /context:看系统提示词、工具、记忆文件、消息各占多少。我们干净的测试环境显示 Tokens: 2.1k / 1m (0%),内置技能约 2k;装了一堆 MCP、CLAUDE.md 又很长的项目会多得多。
  • /mcp disable <名字>:关掉这个项目用不上的 MCP 服务器,它的工具定义就不会每次都带上。照着 Claude Code MCP 推荐 装了好几个的,可以先关掉暂时不用的。
  • 精简 CLAUDE.md:不常用的规则挪到 按路径加载的规则 里,只在相关目录下才加载。
  • 重新打开自动压缩:如果你在 /config 里关了,或者设置了 DISABLE_AUTO_COMPACT,改回来。它默认是开的,正常情况下能避免这个报错。
  • 更新 Claude Code(claude update):官方文档列了几个已修复的情况,比如压缩过程中你按了停止(v2.1.304 修复),以及 v2.1.305 上这个报错可能掩盖接口返回的其他 400 或 422(v2.1.306 修复)。

接国产模型或中转网关:先告诉 Claude Code 真实窗口

Claude Code Prompt is too long 与自定义模型 ID:不认识的模型按 200k 算,设置 CLAUDE_CODE_MAX_CONTEXT_TOKENS=128000 后 /context 变为 128k

如果你按 Claude Code 接 DeepSeek、Kimi、GLM 这篇换了模型,或者走中转网关,要注意:Claude Code 不认识的模型 ID,一律按 20 万 token 窗口算。我们用 ANTHROPIC_MODEL=my-gateway-model 实测,启动时会打出这条警告:

Claude Code doesn't recognize the model "my-gateway-model", so it assumes a context window of 200k tokens. Update Claude Code, or see https://code.claude.com/docs/en/model-config#correct-the-window-for-a-gateway-or-custom-model-id to set the window.

这时 /context 显示 Tokens: 2.1k / 200k (1%)。设置 export CLAUDE_CODE_MAX_CONTEXT_TOKENS=128000 后警告消失,/context 变成 / 128k。数值请填你用的模型服务商文档里写的窗口大小,我们这里的 128000 只是测试值。模型真实窗口比 20 万小的话,Claude Code 按 20 万规划压缩就可能来不及,请求先被服务端以超长拒绝。官方模型配置文档 里还有 modelOverrides 和 [1m] 后缀两种写法。

GitHub 上有一个类似案例 #101897:用户接自建模型(窗口 262,144 token),升级到 2.1.296 后,服务端返回 OpenAI 格式的 maximum context length 报错,Claude Code 没有触发压缩。报告者说降回 2.1.269 就好了,问题仍是 open 状态。

另一个真实案例

#103279:VS Code 插件 2.1.301,用 100 万上下文的模型,两个长会话一直没有自动压缩,涨到约 976,000 token 后每一轮都报 Prompt is too long,只能 /clear。同一台机器之前的会话都在约 967,000 到 971,000 token 时正常压缩。问题还没关闭。如果你在长会话里遇到同样的情况,先手动 /compact,比等它报错再 /clear 损失小。

其他 Claude Code 报错可以看 Claude Code 报错大全。

常见问题

Claude Code Prompt is too long 和额度用完是一回事吗?

不是。这个报错只看单次请求的大小;额度看的是 5 小时和每周用了多少,见 Claude 额度怎么算。

/compact 提示 Not enough messages to compact 怎么办?

对话只有一轮,没有可以压缩的内容。/clear 之后发小一点的内容。

Request too large (max 32MB) 是同一个问题吗?

不是。那个是请求体原始大小超过 32MB,通常是贴了大量内容、工具结果或附件,和 token 数无关。

升级套餐能解决吗?

单靠升级不行,限制来自模型的上下文窗口。压缩、减少附带内容,或者换窗口更大的模型才有用。

留下你的想法

你的邮箱不会公开。