Claude Code 报错 prompt too long 怎么处理
一句话答案:先
/context看上下文窗口被什么填满,再/compact压缩;还是不行就/clear重开。这是 400 错误,不是网络问题,重试没用。
「prompt is too long」「input is too long for requested model」「context limit reached」是同一类问题:一次请求的内容超过了模型的上下文窗口。
这个报错到底是什么
结论:HTTP 400,请求里的内容(系统提示 + 对话历史 + 工具结果 + 你这次的输入)加起来超过了模型的上下文窗口。重试不会成功,因为下一次还是同样长。
Claude 无限卡支持标准 200k token 上下文。听起来很大,但 agent 会话会不断累积:每轮对话、每次工具调用的结果、CLAUDE.md、MCP 工具的描述,都会被重新发送。
先看 /context 定位元凶
结论:不要猜,先 /context。它会列出窗口里每一部分占了多少 token,你能立刻看出是大文件、长对话历史、还是 MCP 工具描述占了大头。
按优先级释放
按代价从低到高处理:
/compact:把前面的对话历史压缩成摘要,保留关键决定,释放大量空间。适合「话题没变但聊了太久」。- 减少一次性粘贴:不要一次贴整个大文件或长日志,先让它读相关片段,或你手动摘出报错部分。
- 关掉用不到的 MCP 工具与连接器:每个启用的工具都会在每轮请求里带上它的描述,累积起来很可观。
/clear:完全清空,重新描述任务。适合「话题已经变了」或/compact也压不动的情况(比如一整轮都是巨大的工具输出,没有可折叠的旧对话)。
/compact 与 /clear 的区别
| 命令 | 做什么 | 什么时候用 |
|---|---|---|
/compact | 把历史压缩成摘要,保留关键决定 | 同一话题聊太久,历史太长 |
/clear | 清空全部,重新开始 | 换任务、或 /compact 失败 |
结论:能 /compact 就不 /clear。/compact 保留了「我们刚才决定这么做」的上下文,/clear 之后你要重新交代背景。
什么时候它会在没满的时候也报
结论:如果 /context 显示远没到上限却仍报错,当成误报处理,直接 /compact 继续。这类 bug 在 issue tracker 上有记录,不是你的配置问题。
怎么预防
结论:把「话题一变就 /compact,不相关的任务之间 /clear」当成习惯。这是最有效的成本控制手段,比省着用更管用。
另外注意:选模型时先看窗口大小。同一模型可能有标准版和 1M 上下文版,但 1M 版不是默认,且不同模型上限不同。先看 /context 确认当前模型的实际上限。
常见问题
/compact 也失败怎么办?
说明可压缩的旧对话太少(比如一整轮都是巨大工具输出)。/clear 重开,下次把大输出拆小或先保存到文件再让它读。
新会话第一次就报?
检查 CLAUDE.md 是不是太长、是否一次粘贴了大文件、是否开了太多 MCP 工具。新开一个干净会话,只带必要输入。
换模型有用吗?
有用但要看窗口。标准版 200k,部分模型有更大窗口的版本;/model 切过去前先 /context 确认。
这个错误会影响计费吗?
Claude 无限卡订阅期内不按 token 计费,所以这个报错不影响费用,只影响当前会话能不能继续。
相关阅读
- Claude Code 教程:从安装到第一次会话:养成
/compact习惯 - Claude Code 计划模式怎么用:先规划减少无效轮次
- 模型与切换:各模型的上下文窗口
- 常见问题:429 限流与 400 的区别