读 Claude Code 源码 - 上下文压缩策略
💡
原文中文,约13800字,阅读约需33分钟。
📝
内容提要
本文讨论了Claude代码的上下文压缩策略,重点在于如何处理用户消息中的工具结果。通过迭代替换过长的工具结果为预览,确保消息总长度不超过设定上限。同时,文章提到在上下文过大时进行自动压缩,以保持有效的上下文窗口。
🎯
关键要点
-
Claude代码的上下文压缩策略通过迭代替换过长的工具结果为预览,确保消息总长度不超过设定上限。
-
当用户消息中的可压缩工具结果总字符数超过最大限制时,系统会将最长的工具结果替换为预览,直到总长度小于上限。
-
系统维护已见过的工具使用ID和被压缩的工具使用ID到预览的映射,以避免破坏提示缓存。
-
在上下文过大时,系统会尝试自动压缩,如果失败则构造提示专门调一次LLM进行总结。
-
连续失败三次后,系统将不再尝试在同一会话中进行自动压缩。
❓
延伸问答
Claude代码的上下文压缩策略是如何工作的?
Claude代码通过迭代替换过长的工具结果为预览,确保消息总长度不超过设定上限。
当用户消息中的工具结果超过限制时,系统会如何处理?
系统会将最长的工具结果替换为预览,直到总长度小于设定上限。
Claude代码如何维护工具使用ID的映射?
系统维护已见过的工具使用ID和被压缩的工具使用ID到预览的映射,以避免破坏提示缓存。
在上下文过大时,Claude代码会采取什么措施?
系统会尝试自动压缩,如果失败则构造提示专门调一次LLM进行总结。
如果自动压缩连续失败,系统会有什么反应?
连续失败三次后,系统将不再尝试在同一会话中进行自动压缩。
Claude代码的最大工具结果字符数限制是多少?
最大工具结果字符数限制为200,000个字符。
➡️