现象
不少人这几天遇到同一件事:会话才聊了几轮,Claude Code 就提示 prompt is too long,接着自己跑了一次上下文压缩。于是开始删 CLAUDE.md、砍任务说明、关对话重开——结果问题还在。
@abialonso 和 @Aongkou 都指出了原因:在挂了很多 MCP 工具的会话里,Claude Code 曾把一个别的 API 错误错显示成 「prompt is too long」,并顺手做一次不必要的压缩。真正的报错被盖住了,你自然会往错误的方向排查。
官方 CHANGELOG 2.1.306 的原话是:修复了在 MCP 工具很多的会话中,API 错误被替换成 「prompt is too long」、并触发不需要的压缩的问题。
排查顺序
- 先看版本:终端里跑
claude --version。低于 2.1.306,先升级再说(claude update,或按你当初的安装方式更新)。 - 升级后重现一次:如果还报错,这次看到的才是真实错误信息——可能是限流、网络、网关拒绝某个参数,或者确实超长。按真实错误处理。
- 真超长时再精简:确认是上下文确实太长,再考虑
/compact、拆任务或减少一次性读入的大文件。 - MCP 别贪多:用不上的 MCP 服务器关掉。工具定义本身也占上下文,挂得越多,越容易碰到各种边界情况。
为什么值得在意
一次没必要的压缩,会把对话里的细节摘要掉(断言、行号、你口头定的验收标准),后面 Agent 更容易「修错题」。之前我们写过压缩后先重跑失败检查,这里是另一面:能避免的压缩,先避免。
另外,同一版本还修了一个容易误导人的提示:云端会话里不带会话环境变量启动 claude -p 时,会错误地显示 「Not logged in」。遇到这种「明明登录了却说没登录」的情况,也先看版本,别急着重新登录或换账号。
小结
- 报错文字不一定是真实原因,先升级到 2.1.306 或更新再判断。
- 升级后按真实错误处理,别为一个误报去删有用的提示词。
- 少挂不用的 MCP,会话更稳。
如果你想让 Claude Code 跑在一台常开、整机独享的新加坡 Mac mini 上,固定版本、按计划升级,可以了解 Zumac.Ai,咨询 Telegram @singatao。
