ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI对话撑爆上下文怎么办?claude-code-from-scratch 4层上下文压缩技术完全拆解

AI对话撑爆上下文怎么办?claude-code-from-scratch 4层上下文压缩技术完全拆解 AI对话撑爆上下文怎么办claude-code-from-scratch 4层上下文压缩技术完全拆解【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. Claude Code 开源了 50 万行代码读不动用 ~5000 行 TypeScript / Python 从零复现核心架构11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch用 AI 写代码写了几十轮突然报错上下文窗口已满这是大多数 AI 用户都踩过的坑。开源教程项目claude-code-from-scratch用约 5000 行 TypeScript / Python 代码从零复现了 Claude Code 的核心架构其中「上下文压缩」一章第 7 章把4 层上下文压缩技术讲得透透的从最轻的预算截断到最重的整段摘要逐级加码。这篇文章带你彻底搞懂AI 对话撑爆上下文怎么办——答案就是这套从轻到重的 4 层压缩流水线。 为什么 AI 对话会撑爆上下文窗口大模型的记忆是一块固定大小的黑板叫上下文窗口比如 200K token。每轮对话你和 AI 的所有往来、读过的文件、跑过的命令输出都要摊在这块黑板上消息数组每轮只增不减读一个文件、跑一条命令结果全部进入历史工具输出是大头一次cat一个日志文件可能就吃掉几万 token超窗即崩一旦超出窗口API 直接报错整轮对话中断所以问题来了长对话怎么不断claude-code-from-scratch 的思路是——不靠一次大招而是 4 层防线能用轻的就不上重的。️ 4 层压缩全景从轻到重逐级加码完整设计思路见官方文档 docs/07-context.md核心常量定义在 src/agent.ts。4 层按成本从低到高排列层级名称触发时机做法代价第 1 层Budget上下文占用 50%截断历史中的超大工具结果零 API 成本第 2 层Snip占用 60%把重复读过的文件、旧搜索结果换成占位符零 API 成本第 3 层Microcompact空闲超 5 分钟缓存已冷无差别清空旧工具结果零 API 成本第 4 层Auto-compact占用 85%让模型把旧对话总结成一段摘要一次额外 API 调用前 3 层每次调模型前顺序执行src/agent.ts纯本地改写、不花钱第 4 层是最后手段。另外还有一个第 0.5 层打底工具结果超过 30KB 直接写磁盘上下文里只留 200 行预览 文件路径模型需要时随时能用read_file取回完整内容——可恢复而不是硬删。✂️ 第 1 层 Budget预算收紧先砍大块头设计很直觉上下文越满每条工具结果允许占的预算越小。占用 50%不管让细节尽情保留占用 50%~70%单条工具结果上限30K 字符占用 70%上限收紧到15K 字符超预算的部分不是删成空而是保留头尾——文件开头的类定义、命令输出末尾的错误摘要往往正是模型最需要的信息。这一层和大结果持久化是黄金搭档先落盘保全文再截断保体积顺序反了信息就永久丢了项目 issue #6 修的就是这个 bug。 第 2 层 Snip同文件读 10 遍留最新那遍就够了Agent 干活时经常重复劳动同一个文件读 5 次、同类搜索跑 8 遍。Snip 层在占用超过60%时登场同一文件被多次read_file→ 只保留最新一次旧的换成[Content snipped - re-read if needed]同类搜索结果超过 3 个 → 清掉最旧的最近 3 个工具结果永远保留关键设计只清内容保留记录。模型仍能看到我之前读过 /src/main.ts只是看不到内容了——需要时重新读一遍即可。保留元数据比保留数据更重要这就是上下文压缩的精髓。❄️ 第 3 层 Microcompact缓存冷了就该大扫除这层最反直觉它看的是时间不是占用率。空闲超过5 分钟才动手src/agent.ts。为什么因为大模型 API 有前缀缓存上一轮发过的内容短时间内再发几乎免费。缓存还热时留着旧消息不花钱删了反而破坏缓存前缀一旦空闲 5 分钟缓存大概率过期那旧内容就是纯负担——不如除最近 3 条外全部清成[Old result cleared]。 第 4 层 Auto-compact让模型自己写会议纪要前三层都是机械裁剪第 4 层才是真正的智能压缩。当占用逼近85%预留 20K 给新一轮输入输出把旧消息渲染成纯文本追加一句指令总结对话保留关键决策、文件路径和继续工作所需上下文模型返回一段摘要消息数组被替换成摘要 最近几条消息长对话瞬间瘦身细节上还有不少讲究完整代码见 steps/canonical/ts/context.ts摘要只在turn 边界用户刚说完话、还没开始干活时执行避免把工具调用-结果的配对拆散导致 API 报错保留最近的消息原文——刚做的事必须一字不差早期的才能概括 自己动手一条命令看懂压缩效果每个章节都配了不用 API key 就能跑的最小实现第 7 章跑起来就能看到压缩现场node steps/run.mjs 7 # 看对话变长时旧消息被压成摘要 node steps/run.mjs 7 --diff # 只看这一章比上一章多写的几行 node steps/run.mjs 7 --py # 换成 Python 版输出里那行(compacted 5 messages into a summary)就是压缩触发的证据。想用自己的 prompt 连真实模型验证加--live即可。⚖️ 迷你版 vs 真实 Claude Code差在哪维度Claude Codemini 版实现压缩层级5 级流水线4 层Budget Snip Microcompact 摘要摘要质量两阶段分析-摘要提示词单段摘要大结果落盘持久化 2KB 预览持久化 200 行预览熔断保护连续失败 3 次即停无简化版砍掉的是工程细节4 层渐进压缩的骨架完整保留——这正是理解 coding agent 上下文管理的最小知识单元。 关键文件导航完整教程docs/07-context.md含前缀缓存、Token 统计压缩常量与管道src/agent.ts最小可跑实现steps/canonical/ts/context.ts / steps/canonical/py/context.py运行器与场景steps/run.mjs、steps/scenarios/ 一起交流学完想深入探讨 agent 架构扫描下面的二维码加入 AI Agent 工坊交流群群号 1090526244和作者、贡献者一起讨论上下文压缩、多 Agent、MCP 集成等话题【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. Claude Code 开源了 50 万行代码读不动用 ~5000 行 TypeScript / Python 从零复现核心架构11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表