MemoryLake
返回全部文章
Tutorial2026 年 11 月 5 日·10 分钟阅读

为什么 Claude Code 显示 Prompt Is Too Long,以及如何在不丢失会话的情况下修复它 (2026)

当你发送消息时,Claude Code 停止并提示 Context limit reached · /compact or /clear to continue。在脚本中,同样的情况会显示为 Prompt is too long。无论哪种形式,在某些内容变小之前,会话都无法进行下一轮。

Anthropic 的错误参考文档在一行中给出了原因:“对话加上附加文件超过了模型的上下文窗口。”该消息指出了两种解决方法:/compact 和 /clear,它们对会话的操作截然不同。一个保留对话摘要,另一个则重新开始。

本指南涵盖了每种错误形式的含义、为什么自动压缩(auto-compact)没有阻止它、压缩在恢复时保留了什么,以及如何在不丢弃工作的情况下修复错误。窗口大小决定了这一切何时开始;如果你使用的是 1M token 窗口,我们的使用额度和 1M 上下文指南 介绍了当对话压缩回标准上下文时会保留什么。

为什么 Claude Code 显示 Prompt is too long

Claude Code 发送的每个请求不仅包含你的消息。Anthropic 的 /context 细分列出了组成部分:“系统提示词、工具、记忆文件和消息”。加上附加文件和粘贴的文本,总额可能会超过模型接受的范围。

消息的形式

错误参考文档列出了几个版本,每个版本都指向不同的情况。

交互形式。 在会话中,你会看到 Context limit reached · /compact or /clear to continue。Anthropic 指出,“当设置了 DISABLE_COMPACT 时,该行仅显示 /clear。”在 -p 输出和转录本中,文本保持为 Prompt is too long。

关闭自动压缩时。 如果你在用户设置中关闭了自动压缩,该行会说明这一点,并以 auto-compact is off · /config to turn it on 结尾。

压缩失败后。 “当自动压缩在本轮运行并因底层错误(如模型不可用或身份验证失败)而失败时,消息会在分隔符后指明该错误”。文本随后显示为 Prompt is too long · automatic compaction failed: 后跟原因。Anthropic 的建议是:“先解决指出的错误;在此之前,/compact 也会因同样的错误而失败。”

单次交换。 当对话只有一个提示词和一个回复时,没有更早的内容可以总结。Anthropic 表示“单次交换的对话没有更早的轮次可以总结”,消息会解释是什么填满了请求:对话自身的内容,或者是系统提示词、工具定义和附件。

关于 Bedrock 和网关

同样的情况可能会以其他措辞出现。Anthropic 指出,“Amazon Bedrock 将此情况报告为 Input is too long for requested model.,Claude Code 会以相同方式处理。”Claude 应用网关可能会将其报告为 capability_rejected: prompt_too_long,Claude Code 将该 token 视为相同的错误。

旧版本无法识别这些形式。文档称,在 v2.1.217 之前,“Claude Code 无法识别 Bedrock 的措辞,因此自动压缩从未被触发,且 /compact 也会因同样的错误失败。”如果你在 Bedrock 或网关后看到此错误,更新 Claude Code 是首要检查项。

为什么自动压缩没有阻止它

Anthropic 表示“自动压缩默认开启,通常可以防止此错误。”当你仍然看到该错误时,文档指出了几个原因:

  • 自动压缩已关闭。 “如果你在 /config 中或使用 DISABLE_AUTO_COMPACT 关闭了它,请重新开启。如果你坚持关闭,请在窗口填满前手动运行 /compact。”
  • 压缩本身失败。 消息会指明原因。
  • 单个提示词过大。 在简短对话中粘贴大量内容或附件,导致没有内容可压缩。
  • 窗口大小错误。 “如果错误出现在支持更多 token 的模型的 200K token 附近,原因之一是 Claude Code 无法识别的模型 ID。”此时 Claude Code 会假设 200K 窗口,文档链接了如何提供真实窗口大小的方法。
  • 你在压缩中途停止了它。 “如果错误出现在你停止 Claude 压缩对话之后,你的对话保持不变,且仍然大到需要压缩。请运行 /compact 并重新发送消息。”

/compact 或 /clear:它们对会话的作用

/compact 保留摘要

/compact 总结了较早的轮次,以便对话符合上下文。Anthropic 的上下文窗口指南指出:“当长会话压缩时,Claude Code 会总结对话历史以适应上下文窗口。”

当自动压缩因该错误运行时,文档称“它通常总结你最旧的交换并保留最新的。”还有一种保底模式:“当无法总结任何完整的交换时,Claude Code 会逐字保留你最新的提示词,并总结之前的所有内容。”

/clear 重新开始

/clear 给你一个全新的对话。Anthropic 的交互模式指南称它“开始一个新会话”,并且“前一个会话的对话会被保留并可以恢复。”新会话开始时上下文中没有之前的历史记录。Anthropic 建议在无法压缩时使用它:“运行 /clear 重新开始。”我们的 Claude Code /clear 命令指南 涵盖了哪些内容可以在此操作后幸存。

如果 /compact 返回 Not enough messages to compact.,文档表示该对话为单次交换。在这种情况下,请运行 /clear 并减少粘贴的文本或使用更小的附件重新发送。

压缩保留了什么

这部分决定了你是否会丢失工作。Anthropic 的上下文窗口指南中有一个表格,说明了压缩后每种内容的处理方式。其中几行最为关键:

  • 项目根目录的 CLAUDE.md 和未指定范围的规则: “从磁盘重新注入”。
  • 自动记忆(Auto memory): “从磁盘重新注入”。
  • Claude 在计划模式下编写的计划: “从磁盘重新注入”。我们的 Claude Code 计划文件指南 解释了它的保存位置。
  • Claude 读取或编辑过的文件: “Claude Code 会重新读取最多五个文件,按最近修改时间排序”。
  • 带有 paths: 前置内容的规则和嵌套的 CLAUDE.md 文件: 按需重新加载。
  • 钩子(hooks)之前添加的上下文: “与对话的其余部分一起被总结”。

表格背后的模式很有用。以文件形式存储的指令和记忆会从磁盘恢复,最近编辑的文件会被重新读取。任何仅存在于对话中的内容(例如你在聊天中解释的决策),仅在摘要涵盖的范围内幸存。Anthropic 对特定范围的规则发出了警告:“如果规则必须在压缩后持续存在,请移除 paths: 前置内容或将其移至项目根目录的 CLAUDE.md。”

我们的子目录 CLAUDE.md 限制指南 涵盖了按需加载的文件。

腾出空间以防错误再次出现

错误参考文档列出了需要削减的内容:

  • 查看是什么填满了窗口。 “运行 /context 查看消耗窗口的细分:系统提示词、工具、记忆文件和消息”。
  • 关闭不使用的 MCP 服务器。 禁用它们可以从上下文中移除“它们的工具定义”。
  • 修剪记忆文件。 “修剪大型 CLAUDE.md 记忆文件,或将指令移至仅在相关时加载的路径范围规则中”。
  • 保持自动压缩开启。 或者在窗口填满前自己运行 /compact。

两个习惯也有帮助。大量粘贴和文件是填满窗口最快的方式,因此尽可能让 Claude 指向文件而不是粘贴内容。此外,委派工作可以保持主对话更小;我们的 Claude Code 子代理指南 解释了子代理开始时拥有什么以及它发回什么。如果会话不断重新读取大型代码库的相同部分,我们的停止 Claude Code 重新读取代码库指南 介绍了如何一次性提供该上下文的方法。

人们首先尝试的操作

再次发送消息。 请求仍然太大。请先压缩、清除或缩小内容。

直接运行 /clear。 这有效,但新对话不会携带旧对话的历史记录。如果对话超过一次交换,请先尝试 /compact。

在压缩失败后运行 /compact。 如果消息指出了底层错误,Anthropic 表示在解决该错误之前,/compact 也会因同样的错误失败。

为了避免摘要而关闭自动压缩。 除非你手动压缩,否则每当窗口填满时,错误都会再次出现。

在规则上信任摘要。 仅存在于对话中的规则会随其他内容一起被总结。请将它们放入文件中。

修复方法:阅读消息,尽可能压缩,并将规则保留在磁盘上

第 1 步:阅读你遇到的是哪种形式的错误

如果它指出了底层错误,请先修复它。如果它显示对话是单次交换,则 /compact 没有可处理的内容。如果它显示自动压缩已关闭,请在 /config 中重新开启或计划手动压缩。运行 /context 查看占用空间的内容。

第 2 步:压缩,或清除并以更小的内容重新发送

对于包含较早轮次的对话,运行 /compact 并再次发送消息。对于单次交换,运行 /clear 并减少粘贴文本、使用更小的附件或启用更少的 MCP 服务器重新发送。如果你需要回到更早的时间点,我们的 /rewind 指南 展示了如何回溯会话。

第 3 步:将必须保留的内容移至文件

在下一次长时间工作之前,将会话依赖的规则和决策放入项目根目录的 CLAUDE.md 或自动记忆中,压缩会从磁盘重新注入这些内容。对于仅在某些文件附近起作用的指导,请保留路径范围规则。

在 MemoryLake 中设置

压缩会恢复磁盘上的内容并总结其余部分。你在对话中解释的决策及其背后的原因,是会话达到极限时最容易丢失的部分。

MemoryLake 是一个记忆层,用于将这些决策保存在一个由你维护的地方,并提供给你连接的助手,如 ChatGPT、Claude Code 和 Codex。

你用自己的语言编写条目。你的 Claude Code 会话、转录本、CLAUDE.md 文件、自动记忆或任何供应商的存储都不会被读取、写入或删除。/compact、/clear 和自动压缩仍按 Anthropic 描述的方式工作。

第 1 步:创建 API 密钥

登录并从控制面板生成密钥。该密钥属于你的 MemoryLake 工作区,与你的 Claude 账户分开。

MemoryLake 控制台显示 API 密钥界面,在此创建并复制新密钥以供 agent 使用
MemoryLake 控制台显示 API 密钥界面,在此创建并复制新密钥以供 agent 使用

第 2 步:上传你的第一条记忆

从修复方法的第 3 步中那些对于 CLAUDE.md 来说太长或太私人的决策开始:为什么选择某种方法、排除了什么、下一步是什么。每个条目一个要点,并注明日期。

MemoryLake 工作区显示已上传的首批文档,列出了每个文件成为可搜索记忆的过程
MemoryLake 工作区显示已上传的首批文档,列出了每个文件成为可搜索记忆的过程

第 3 步:连接你的 AI 和 agent

连接 Claude Code 和你使用的任何其他助手。在 /compact、/clear 之后或在不同的工具中,相同的条目依然可用。

MemoryLake 集成界面列出了可以连接到记忆层的 AI 客户端和 agent 框架
MemoryLake 集成界面列出了可以连接到记忆层的 AI 客户端和 agent 框架

这在实践中改变了什么

第一个区别是在达到极限时能做出更冷静的选择。当决策被记录下来时,/clear 的损失较小,而 /compact 需要携带的内容也更少。

第二个区别是更小的窗口。你在需要时查阅的事实不必存在于每个请求中。

第三个区别是跨工具的连续性。相同的决策在 Claude Code、Codex 或 ChatGPT 中都可用。

Claude Code 上下文限制的最佳实践

保持自动压缩开启。 Anthropic 表示它通常能防止错误。

阅读完整消息。 它会告诉你压缩是失败了、关闭了,还是没有内容可压缩。

削减前使用 /context。 先查看是什么填满了窗口。

禁用未使用的 MCP 服务器。 它们的工具定义占用空间。

将规则保留在文件中。 项目根目录的 CLAUDE.md 和自动记忆在压缩后会恢复。

少粘贴,多引用。 大量粘贴填满窗口的速度最快。

更新 Claude Code。 此错误的几种形式在最近的版本中已得到修复。

结论

当对话加上附加文件超过模型的上下文窗口时,Claude Code 会显示 Prompt is too long,或者在会话中显示 Context limit reached。自动压缩通常能防止这种情况。如果没能防止,消息会告诉你原因:压缩因另一个错误失败、自动压缩已关闭,或者对话是单次交换,没有内容可总结。

/compact 保留摘要并从磁盘重新注入项目根目录的 CLAUDE.md、自动记忆和计划。/clear 则重新开始。修复指出的原因,尽可能压缩,并将你不能承受丢失的规则和决策保留在文件中,而不是对话中。

常见问题

Claude Code 中的 Prompt is too long 是什么意思?

对话加上附加文件超过了模型的上下文窗口。在交互式会话中,Claude Code 将其显示为 Context limit reached,并提示使用 /compact 或 /clear 继续。

如何修复 Claude Code 中的 Prompt is too long?

运行 /compact 总结较早的轮次,或运行 /clear 重新开始。如果消息指出了底层错误,请先修复该错误。运行 /context 查看占用空间的内容。

为什么自动压缩没有阻止该错误?

自动压缩可能已关闭,压缩可能因另一个错误失败,或者对话可能是单次交换,没有更早的内容可以总结。

Not enough messages to compact 是什么意思?

对话是单次交换。请运行 /clear 并减少粘贴的文本、使用更小的附件或更少的工具重新发送。

/compact 会丢失我的 CLAUDE.md 或自动记忆吗?

不会。Anthropic 的表格显示,项目根目录的 CLAUDE.md 和自动记忆在压缩后会从磁盘重新注入。

为什么在更大的模型上,错误出现在 200K token 附近?

Anthropic 表示原因之一是 Claude Code 无法识别的模型 ID,因此它假设了 200K 窗口。请为 Claude Code 提供模型真实的上下文窗口。

相关阅读