【Claude】Error during compaction: Conversation too long 压缩失败报错已解决
【Claude】Error during compaction: Conversation too long 压缩失败报错已解决
关键词:Claude Code、Error during compaction、Conversation too long、/compact 失败、Esc 回退、/clear、检查点
一、问题现象
你看到Prompt is too long后,想运行/compact来压缩,结果/compact本身也失败了:
Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.二、根因:窗口太满,连摘要都写不进去
/compact的工作原理是:让 Claude 把前面的对话总结成一段摘要,然后用这段摘要替换原来的消息,释放空间。
但是:这个摘要本身也要写进上下文。当窗口已经满到无法再放进任何新内容时,/compact就进入了死锁:
- 不压缩 → 发不出去(Prompt is too long);
- 压缩 → 摘要写不进去(Error during compaction)。
这种情况通常发生在:
- 自动压缩触发时上下文已经满了(两者同时触发,互相干扰);
- 看到
Prompt is too long后直接运行/compact,没有先回退几轮。
三、解决方案
方案一:按 Esc 两次回退,然后再压缩(官方推荐)
错误消息里已经告诉你怎么做:"Press esc twice to go up a few messages and try again."
操作步骤:
- 按两次 Esc:打开消息列表,进入"回退"模式;
- 向上回退几轮:选择回退到最近几条消息之前的状态——这会从上下文中移除那些最新的消息,释放出一些空间;
- 再次运行
/compact:此时上下文稍微空了一点,摘要有了"落脚"的地方。
回退几轮通常就足够了——因为只需要释放出摘要所需的空间(通常几千 Token),不需要删掉太多。
方案二:/clear 直接重新开始
如果回退操作没有释放足够空间,或者你不需要保留历史对话,直接:
/clear这会开始一个全新的对话。之前的对话已自动保存,可以随时/resume找回查看。
四、如何防止下次再发生
这个错误最好的处理是预防:
- 开启自动压缩(默认开启):不要设置
DISABLE_AUTO_COMPACT=1; - 在自然断点主动
/compact:不要等到满了再压,满了之后连压缩都困难; /context监控占用:接近 90% 时就应该主动压缩;- 精简 MCP 和 CLAUDE.md:从源头减少上下文增长速度。
五、总结
Error during compaction: Conversation too long= 窗口太满连压缩操作本身都没有空间。
解法按顺序:Esc×2 回退几轮 → 再/compact;如果不行就/clear。下次靠定期主动/compact来预防。
参考:Claude Code 官方《错误参考》"请求错误"章节、上下文管理文档、检查点文档。
