万字长文解析Agent框架中的上下文管理策略

2026年4月18日

63

809

万字长文解析Agent框架中的上下文管理策略

在构建基于大语言模型的智能体时,一个核心挑战是如何在有限的上下文窗口内高效管理信息。随着Agent执行任务的轮次增加,历史对话、工具调用结果不断累积,上下文长度急剧膨胀,最终导致模型出现"注意力涣散"现象——这被称为“上下文腐败”(Context Rot)。即使模型支持128K甚至1M的Token输入,在某些长度(如200K Token)时性能就已开始显著下降。这种现象源于多方面的原因:注意力机制需要关注所有历史Token形成O(n²)的关系网络,当n增大时注意力被摊薄;同时模型在预训练阶段接触的长序列样本有限,对长距离依赖的处理经验不足。

上下文卸载与精准检索

为了应对这一挑战,上下文工程(Context Engineering)应运而生。其核心指导原则是:在有限的上下文窗口内,找到能最大化期望输出概率的最小高信号Token集合。这与早期的单轮Prompt Engineering有本质区别——后者适用于一次性文本生成,而前者则需要管理多轮推理中不断演变的上下文状态。上下文工程本质上是在有限容量中创造无限可能,通过精心设计的信息筛选策略,让Agent在长时间运行中保持专注与高效。

上下文摘要:有损压缩的艺术

第一种策略是将信息从上下文窗口“卸载”到外部存储系统,在需要时再精确检索。这种方法的可逆性是其核心优势——信息并未真正丢失,只是被转移到文件系统或其他存储介质中。Manus框架提出的理念尤为值得关注:将文件系统视为终极上下文载体。它具备无限容量、持久化、可随机访问的特性,Agent可以通过路径、文件名、时间戳等元数据组织信息。例如,当Agent访问网页时,只需保留URL即可将网页内容从上下文中移除,后续可重新请求;当处理文档时,只需保留文件路径,需用时再通过cat或tail命令读取。这种"可逆压缩"确保了上下文缩减的同时信息不丢失。 在检索策略上,新一代Agent框架如Claude Code选择弱化传统RAG(检索增强生成),转而让LLM自己生成搜索命令进行"即时检索"(Just-in-time Retrieval)。这种方式模仿人类认知——我们不会记忆所有信息,但知道何时该查找、到哪里查找。通过生成复杂的Bash命令(如ripgrep、jq、find)配合精细的正则表达式,Agent可以定位相关代码块,而无需将大段数据加载进上下文。这种策略的优势在于:灵活性高,搜索内容

Context engineering就是从不断变化的信息中,精心挑选出能放入有限上下文窗口的内容,在有限中创造无限。

“行业实践”

上下文隔离:多智能体架构

当上下文窗口即将填满且无法进一步紧凑化时,摘要化成为最后手段。这是一种有损压缩策略,会将对话历史浓缩成摘要释放空间,但必然导致信息模糊和丢失——模型无法再访问精确的代码行或工具输出的完整内容。 摘要化的设计必须具备可恢复性。具体做法是将完整对话历史Dump到持久化文件中,作为“黑匣子”保留所有原始消息、工具调用及其结果。Agent在后续交互中,如果发现摘要缺少关键细节,可通过grep、Read等工具主动检索历史文件找回丢失信息。同时,通常会保留最后几次完整的工具调用及其结果,确保模型清楚知道自己从何处中断,保持风格和语气的连贯性。 以Claude Code为例,其压缩机制可由系统自动触发或用户手动触发(/compact命令)。压缩后的摘要包含:用户主要请求与意图、关键技术概念、涉及的文件代码段、错误与修复方案、所有用户消息、待办任务、当前工作进度等信息。原始对话则完整保存到本地JSONL文件中,需要时可精确读取。这种设计使有损压缩变得可恢复,理论上Agent能够处理无限长的任务。

KV缓存:成本与延迟的优化

综合来看,上下文工程是一个系统性课题,需要根据实际场景灵活组合多种策略。优先采用可逆的紧凑化策略,当确实无法再压缩且上下文即将耗尽时,再使用带备份的摘要化。这四种策略——卸载检索、摘要化、多智能体隔离、KV缓存——相互补充,共同支撑起Agent在有限上下文窗口下处理长程任务的能力,为构建真正强大的智能体奠定基础。

如有侵权,请联系删除。

Related Articles

联系我们 获取方案
小墨 AI