读 Claude Code 源码 - 上下文压缩策略

💡 原文中文,约13800字,阅读约需33分钟。
📝

内容提要

本文讨论了Claude代码的上下文压缩策略,重点在于如何处理用户消息中的工具结果。通过迭代替换过长的工具结果为预览,确保消息总长度不超过设定上限。同时,文章提到在上下文过大时进行自动压缩,以保持有效的上下文窗口。

🎯

关键要点

  • Claude代码的上下文压缩策略通过迭代替换过长的工具结果为预览,确保消息总长度不超过设定上限。

  • 当用户消息中的可压缩工具结果总字符数超过最大限制时,系统会将最长的工具结果替换为预览,直到总长度小于上限。

  • 系统维护已见过的工具使用ID和被压缩的工具使用ID到预览的映射,以避免破坏提示缓存。

  • 在上下文过大时,系统会尝试自动压缩,如果失败则构造提示专门调一次LLM进行总结。

  • 连续失败三次后,系统将不再尝试在同一会话中进行自动压缩。

延伸问答

Claude代码的上下文压缩策略是如何工作的?

Claude代码通过迭代替换过长的工具结果为预览,确保消息总长度不超过设定上限。

当用户消息中的工具结果超过限制时,系统会如何处理?

系统会将最长的工具结果替换为预览,直到总长度小于设定上限。

Claude代码如何维护工具使用ID的映射?

系统维护已见过的工具使用ID和被压缩的工具使用ID到预览的映射,以避免破坏提示缓存。

在上下文过大时,Claude代码会采取什么措施?

系统会尝试自动压缩,如果失败则构造提示专门调一次LLM进行总结。

如果自动压缩连续失败,系统会有什么反应?

连续失败三次后,系统将不再尝试在同一会话中进行自动压缩。

Claude代码的最大工具结果字符数限制是多少?

最大工具结果字符数限制为200,000个字符。

➡️

继续阅读