【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."

操作步骤:

  1. 按两次 Esc:打开消息列表,进入"回退"模式;
  2. 向上回退几轮:选择回退到最近几条消息之前的状态——这会从上下文中移除那些最新的消息,释放出一些空间;
  3. 再次运行/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 官方《错误参考》"请求错误"章节、上下文管理文档、检查点文档。