Prompt is too long · the request is ~214381 tokens (limit 200000) but this conversation is only ~2621 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.
这次请求的总 token 数超过了模型的上下文上限。总量等于对话、系统提示、工具定义、附件四部分相加,对话很短也可能超。先用 /context 看哪部分最大:对话长就 /compact 或 /clear,工具定义大就关掉用不到的 MCP 服务器,确实需要大上下文就换 1M 上下文的模型。
实测环境:Claude Code 2.1.312,Linux,2026-11-03。用本地假端点返回 Anthropic 原生错误 prompt is too long,记录 Claude Code 的提示与重试行为;/context、/compact、/clear、/mcp 等命令以该版本的内置命令为准。
报错从哪来
这条报错源自 Anthropic API 的原生错误,服务端返回的原文是:
prompt is too long: 214381 tokens > 200000 maximum
Claude Code 收到后会换一种更详细的说法显示出来,也就是页面顶部那段。实测它不会重试,1 秒内直接报错,因为重发同样的内容只会得到同样的结果。
注意这段提示里的关键信息:this conversation is only ~2621 tokens。实测时对话本身只有约 2600 token,超出 20 万上限的部分全是系统提示、工具定义和附件。很多人看到「too long」第一反应是聊太久了,其实不一定。
第一步:用 /context 看占用在哪
在 Claude Code 里输入:
/context
它会用彩色网格画出当前上下文的组成,按大小大致分成四类:
| 组成部分 | 什么会让它变大 | 处理方式 |
|---|---|---|
| 对话历史 | 聊了很多轮;读过大文件;命令输出很长 | /compact 或 /clear |
| 工具定义 | 装了很多 MCP 服务器,每个都带一批工具说明 | /mcp disable <服务器名> 关掉暂时用不到的 |
| 系统提示与记忆文件 | 项目和用户目录下的 CLAUDE.md 写得很长 | 精简 CLAUDE.md,把细节挪到需要时再读的文档里 |
| 附件 | 一次性 @ 了整个目录、贴了大日志或大图片 | 只附需要的文件,日志先 grep 再贴 |
第二步:按来源处理
对话太长
/compact:把到目前为止的对话压缩成摘要,保留结论和关键上下文,然后继续工作。适合任务还没做完的时候。/clear:开一个上下文为空的新会话。旧会话仍然保存在本地,之后可以用/resume找回。适合换一个新任务的时候。
报错原文里还有一句:A single-exchange conversation cannot be compacted。如果第一条消息就超限,说明对话里没有可以压缩的内容,/compact 无效,只能从工具定义和附件上减。
工具定义太大
每个 MCP 服务器会把自己所有工具的名字、说明、参数结构都塞进每一次请求。装了五六个 MCP 服务器,光工具定义就可能占掉几万 token。用 /mcp 查看列表,把这个项目用不到的关掉。
附件太大
@ 引用整个目录,或者把几 MB 的日志直接贴进对话,最容易一次就超限。让 Claude Code 自己用 grep 或读取命令按需查看,比一次性塞进去更省上下文。
第三步:确实需要大上下文,换 1M 模型
不同模型的上下文上限不同。以 Code2AI Claude 控制台的模型清单为例(2026-11-03 抓取):
| 模型 | 上下文 | 最大输出 |
|---|---|---|
| Claude Opus 5.5 / Opus 5 / Opus 4.8 / 4.7 / 4.6 | 1M | 32K |
| Claude Sonnet 5.5 / Sonnet 5 / Sonnet 4.6 | 200K | 64K |
| Claude Haiku 5.5 | 200K | 64K |
报错里写 limit 200000,说明当前用的是 200K 的模型。大仓库重构、一次要读很多文件的任务,切到 Opus 系列就有 1M 的空间。不过要注意,上下文越长,每次请求消耗的额度越多,Opus 本身也按 2 倍计量,不是所有任务都值得开大上下文。
让它别再超
- Claude Code 默认会在接近上限时自动压缩。启动参数
--autocompact可以调整自动压缩的触发窗口(auto,或 100k 到 1M 之间的 token 数)。 - 一个会话只做一件事,做完
/clear,比一个会话连着做一整天更不容易超。 - 定期检查 CLAUDE.md,删掉过期的说明。它每次请求都会带上。
常见问题
刚打开 Claude Code 第一句话就报 too long,正常吗?
不正常,但很好查。这几乎一定是工具定义或附件太大,和对话无关。用 /context 看一眼,通常是 MCP 服务器装太多,或者第一条消息就引用了一个大目录。
/compact 之后会丢东西吗?
会丢掉细节,保留摘要。已经确定的结论、改过的文件、当前任务目标一般都会留下;具体的命令输出、中间试错的过程会被压缩掉。重要的约定建议写进 CLAUDE.md,而不是只在对话里说一次。
第三方端点的上下文上限和官方一样吗?
取决于服务方有没有完整转发原生请求。可以用 端点自测命令生成器 生成测试命令,发一个长请求验证,看返回的错误是不是原生的 prompt is too long 格式、上限数字对不对。