优化AI Coding上下文管理,应先看清LLM“愚蠢区间”,而非迷信压缩工具与100万上下文!核心内容:1. 标准开发流程如何管理AI Coding上下文2. 斯坦福论文为何能解释LLM“愚蠢区间”3. 如何应对开发场景的认识偏差
大家好,我是小码,前一篇文章介绍了我在实际开发中用到的mattpocock/skills技能包:mattpocock/skills新版本能力:批处理grill-me&wayfinder体验本文是基于Matt Pocock这一系列skills在实践中的启发,来说说在AI Coding中的上下文管理。(但本文描述的现象脱离mattpocock/skills依然适用!)Matt Pocock的这一系列技能中,最常用的工作流程是:
在你把需求写成方案(Plan/Spec)并拆成执行工作票(Tickets)之后的下一步是实施(Implement)。这里有个很重要的步骤,就是你在每个Ticket实施的时候,按照推荐,最好新开会话、按照顺序逐个实施(根据依赖也可以并行)。// 逻辑是把需求整体好、写成方案、拆成执行工作票、开始实施、Review等grill-with-docs -> to-spec -> to-tickets -> implement
很多人可能有疑惑,现在LLM的100万上下文几乎成标配了,再说了很多工具比如Codex的上下文压缩非常丝滑了,为什么还要每次新开会话去实施?这个现象最早由斯坦福大学、加州大学伯克利分校等机构的学者在 2023 年的重磅论文 《Lost in the Middle: How Language Models Use Long Context》 中提出,它揭示了LLM在长文本中提取和使用信息的能力,取决于该信息在文本中出现的位置。有兴趣可以阅读:准确率 (Accuracy)100% | /| /| /| /| ___________________________/0% +-------------------------------------------> 文本位置开头 (0%) 中间 (50%) 结尾 (100%)(开头:记忆深刻) (中间:彻底遗忘) (最后:记忆清晰)
https://arxiv.org/abs/2307.03172
在真实的开发场景中,开头的Token一般包含:系统提示词、skills、AGENTS.md 以及部分项目上下文,结尾是才是你的具体需求。很多人的Agent工作环境在开头部分就直接占满了,一般是装了太多了Skills、MCP、配置了复杂的AGENTS.md(CLAUDE.md)等。而且目前很难消除这个“愚蠢区间”,这可能是Transformer架构的注意力机制缺陷。但是可以避免让上下文落到“愚蠢区间”。你可能看过很多LLM厂商在介绍自己的LLM长上下文的时候使用“大海捞针”这种测试或者比喻(Anthropic)来说明LLM在长上下文中表现的出色。但是AI编程属于复杂的多步推理任务,不是简单的“检索”任务,在长上下文中,做搜索式的大海捞针可能没问题,但是不适合复杂的、多步推理的编程任务。“大模型在面对长上下文时的表现,就像一个在考试前一天晚上临时抱佛脚(Cramming for an exam)的差生。你能够牢牢记住你复习的前几章(开头)和最后看的几章(结尾),但是夹在中间那 3 个小时复习的内容全都变成了浆糊(turn to mush)。”
如果你的任务不得不占用超长的上下文,你可以考虑拆解大型任务了!比如Matt Pocock技能包的wayfinder就是很好的示例!这个时候你会发现,在大部分场景中你根本不需要上下文压缩!感谢阅读!
持续更新离不开你的收藏、转发、点赞、关注!
剩余 70% 内容登录后可见