【Claude】Prompt is too long 上下文超长报错已解决
【Claude】Prompt is too long 上下文超长报错已解决
关键词:Claude Code、Prompt is too long、上下文窗口、contedow、/compact、/clear、/context、CLAUDE.md、MCP、DISABLE_AUTO_COMPACT
一、问题现象
Prompt is too long

二、根因:上下文窗口装不下了
Claude Code 维护一个上下文窗口(context window)——每次向 API 发请求时,这个窗口里的全部内容(系统提示 + 工具定义 + 历史消息 + 你当前的消息)都要作为输入发给模型。
每个模型都有一个最大 Token 容量(标准约 200K)。当上下文窗口的总 Token 数超过这个容量,API 就拒绝请求,Claude Code 显示 Prompt is too long。
上下文里都有什么(按典型占用从大到小)
| 内容 | 说明 |
|---|---|
| 历史消息 | 整段对话的全部消息 |
| 工具定义 | 所有 MCP 工具和内置工具的描述 |
| 系统提示 | Claude Code 的基础系统提示(约 20,000–30,000 Token) |
| CLAUDE.md 内存文件 | 你配置的项目指令 |
| 粘贴 / 读入的大文件内容 | 直接放进消息的文件内容 |
系统提示就是"起步价",每次请求必须带上。工具越多,工具定义越占地方。子代理还会从父会话继承所有 MCP 工具定义,放大这个问题。
为什么通常看不到这个错误
Claude Code 的**自动压缩(Auto-Compact)**默认开启,会在上下文接近 93% 时自动触发 /compact 压缩对话。这个机制能在大多数情况下防止 Prompt is too long。
当你看到这个错误,通常意味着:
- 你设置了
DISABLE_AUTO_COMPACT=1关掉了自动压缩; - 或者上下文增长速度太快,自动压缩来不及触发;
- 或者 MCP 工具定义本身就已经占满了大部分窗口。
三、解决方案
方案一:运行 /compact
/compact
压缩早期对话,释放空间。可以带上方向说明:
/compact 重点保留我们讨论的认证模块逻辑
压缩后就能继续发消息了。
注意:如果窗口实在太满,/compact 本身也会失败(Error during compaction: Conversation too long),这时见下一篇文章的处理方法。
方案二:运行 /context 找出"吃货"
/context
这个命令用彩色可视化展示当前上下文窗口的占用——系统提示、工具定义、内存文件、消息各占多少。加 all 展开逐项明细:
/context all
找出最大的占用来源,针对性清理。
方案三:关掉不用的 MCP 服务器
工具定义是上下文"隐形大户"。每个 MCP 服务器加载后,它的所有工具描述都会进入每次请求的上下文:
/mcp disable <服务器名>
特别注意子代理:子代理从父会话继承所有 MCP 工具定义,可能在第一轮之前就把自己的上下文窗口填满。在生成子代理之前,禁用不需要的 MCP 服务器。
方案四:精简 CLAUDE.md
CLAUDE.md 内存文件在每次会话里自动加载到上下文中。检查它是否过大:
- 使用
/doctor检查,它会标记超大的内存文件; - 把不常用的说明从全局 CLAUDE.md 移到路径范围规则(path-scoped rules),只在相关目录下加载;
- 删除过时的说明。
方案五:重新启用自动压缩
如果你设置了 DISABLE_AUTO_COMPACT=1:
unset DISABLE_AUTO_COMPACT
自动压缩恢复后,Claude Code 会在接近容量时自动压缩,通常能防止 Prompt is too long 再次出现。
方案六:/clear 重新开始
如果上下文已经无法压缩(太满了),开一个新的对话:
/clear
之前的对话已保存,可以用 /resume 找回。
四、避坑
- ❌ 不要 DISABLE_AUTO_COMPACT 后放任不管:没有自动压缩,必须手动控制;
- ❌ 不要在子代理里加载大量 MCP:先禁用不需要的再生成子代理;
- ✅ 定期
/compact:在自然断点主动压缩; - ✅
/context all定位大块:知道占用来自哪里,才能精准清理。
五、总结
Prompt is too long = 上下文窗口满了。解法:/compact(压缩)→ /context 找大块 → 关不用的 MCP → 精简 CLAUDE.md。自动压缩开着时通常不会看到这个错误,看到了先检查 DISABLE_AUTO_COMPACT 是不是被设置了。
参考:Claude Code 官方《错误参考》"请求错误"章节、上下文管理文档。
更多推荐




所有评论(0)