AI Agent 爆破内存墙!Context Engineering 技术深度解析,让语言模型“过目不忘”!
本文深入探讨了 Context Engineering 如何解决 AI Agent 在执行复杂任务时面临的上下文窗口限制问题。通过压缩、记忆管理、子代理和预防性过滤等核心技术AI Agent 能够有效管理信息突破语言模型的记忆瓶颈。文章还介绍了 OpenClaw 等实践案例并展望了 Agentic Context Engineering 的未来发展方向即让 AI Agent 自主学习如何优化上下文管理策略。引言在 AI Agent 快速发展的今天一个核心问题始终困扰着研究者和工程师如何让语言模型在执行复杂任务时有效管理其有限的上下文窗口Context Engineering上下文工程正是解决这一问题的关键技术。本文将深入探讨 Context Engineering 的原理、方法和实践揭示 AI Agent 如何突破语言模型的记忆限制。为什么需要 Context Engineering?语言模型本质上是在进行文字接龙——根据输入的 prompt 生成相应的输出。但语言模型有一个根本特性它活在当下只关注当前的输入而不记得之前发生过什么。当 AI Agent 执行复杂任务时会产生一个不断增长的对话历史人类给出的初始指令语言模型生成的工具调用指令工具执行后返回的结果新一轮的推理和决策这些信息必须被串联成一个完整的输入序列才能让语言模型理解当前的状态。然而语言模型的输入长度是有上限的——这就是 Context Engineering 存在的根本原因。AI Agent 的角色AI Agent 就像语言模型的守门人或经纪人拦截在语言模型与外界之间精心筛选和管理语言模型能看到的内容。它确保输入既不会超出长度限制也不会因过度精简而丢失关键信息。图1AI Agent 作为语言模型与外界的中介Context Engineering 的形式化定义从程序设计的角度看没有 Context Engineering 的 AI 系统可以表示为一个简单的循环for t 1 to ∞: I_t 当前输入用户指令或工具输出 C_t 历史上下文 O_t LLM(C_t I_t) // 语言模型处理 C_{t1} C_t I_t O_t // 直接累积所有历史这种方式的问题显而易见上下文 C 会无限增长最终超出语言模型的处理能力。引入 Context Engineering 后关键变化在于最后一行for t 1 to ∞: I_t 当前输入 C_t 历史上下文 O_t LLM(C_t I_t) C_{t1} F(C_t, I_t, O_t) // 通过函数 F 智能管理上下文这个函数 F 就是 Context Engineering 的核心——它决定了如何从历史信息中提取、压缩、存储和检索内容。Context Engineering 的核心技术1. 上下文压缩Context Compression压缩是 Context Engineering 最基础也最重要的功能。当上下文过长时需要通过某种方式将其缩短。1.1 LLM 摘要压缩最直观的方法是使用语言模型本身对历史记录进行摘要。将较久远的对话历史排除 system prompt输入到语言模型让它生成一段简短的摘要替换原本冗长的内容。优点能够保留语义信息摘要质量较高缺点需要额外的 LLM 调用增加计算成本1.2 观察掩蔽Observation Masking一种更简单粗暴但出乎意料有效的方法直接将工具的输出替换为一句话如这里曾经有个工具的输出。研究表明在 SWE-bench软件工程基准测试上这种方法的表现与 LLM 摘要相当。虽然听起来不可思议但这说明很多时候工具的详细输出并不需要一直保留在上下文中。1.3 混合策略实践中最有效的方案是结合两种方法前期使用观察掩蔽快速缩短工具输出后期当上下文累积到一定程度后使用 LLM 摘要进行一次性大幅压缩这种策略在保持性能的同时最大化了 token 效率。图2混合压缩策略的工作流程1.4 压缩的挑战Context Collapse压缩并非没有代价。ACON 论文发现了一个现象叫做上下文坍缩Context Collapse——当压缩丢失了关键信息时原本能够完成的任务就会失败。例如某个 Meta 研究人员让 AI 帮他管理邮件结果 AI 在压缩时把删除邮件需要人类同意这条关键指令压缩掉了导致 AI 开始不经同意就删除邮件。解决方案ACON 提出让另一个语言模型分析压缩前后的性能差异生成反馈feedback指导未来的压缩行为。这种方法无需训练模型参数仅通过提示工程就能显著提升压缩质量。2. 记忆管理Memory Management压缩只是治标更根本的方法是将信息存储到外部需要时再检索——这就是 AI Agent 的记忆机制。2.1 记忆的本质对语言模型而言记忆就是存储将上下文中的内容保存到硬盘/数据库如 log1.txt检索在需要时通过工具读取这些文件在上下文中原本冗长的内容被替换为一个简短的引用“详见 log1.txt”。多数情况下语言模型不需要回看这些细节但当真正需要时它可以执行read指令重新加载。这就像《Rick and Morty》中 Morty 发现自己的记忆被存储在地下室的管子里——记忆被外置化需要时才重新加载。2.2 记忆的组织方式不同的研究提出了多种记忆组织方法图结构将记忆构建成知识图谱便于理解记忆间的关联时间标记为记忆添加时间戳优先检索最新或最相关的记忆语义索引通过向量数据库实现语义搜索2.3 形式化表示引入记忆后上下文 C 应该被分为两部分P (Prompt)会被输入到语言模型的部分M (Memory)存储在外部的部分算法变为for t 1 to ∞: I_t 当前输入 P_t, M_t C_t 的两个组成部分 O_t LLM(P_t I_t) // 只有 P 进入模型 P_{t1}, M_{t1} F(P_t, M_t, I_t, O_t) // 分别更新两部分当执行save_memory时更新 M当执行load_memory时更新 P。图5记忆管理的形式化表示3. Sub-Agent自主压缩机制Sub-agent子代理是一种更高级的上下文管理方式它本质上是一种自主压缩机制。3.1 Sub-Agent 的工作原理当主 Agent 遇到一个可以独立完成的子任务时它可以执行spawn指令创建一个 sub-agentSub-agent 获得一个独立的子任务和初始上下文Sub-agent 与语言模型交互执行工具累积自己的上下文完成任务后sub-agent 执行return将结果返回给主 Agent关键Sub-agent 的整个执行历史被压缩为return中的一句话这种机制使得上下文长度呈现锯齿状变化创建 sub-agent 时开始累积return 时大幅缩短。图3Sub-Agent 的工作流程与上下文压缩3.2 训练 Sub-Agent 能力语言模型天然不喜欢抹除记忆因此 sub-agent 能力需要通过强化学习训练获得。训练时需要设计特殊的奖励函数惩罚主干过长如果主 Agent 的上下文过长给予负奖励惩罚越界行为如果 sub-agent 超出其职责范围完成了整个任务也给予负奖励通过这种方式模型学会在合适的时机创建 sub-agent并让 sub-agent 专注于其子任务。4. 预防性过滤Preventive Filtering图4预防性过滤机制与其事后压缩不如一开始就防止过多信息进入上下文。研究发现在 AI Agent 的上下文中84%的 token 来自外部输入observation只有6.5%来自动作指令只有9.6%来自模型的推理这意味着如果能在信息进入上下文前就进行过滤效果会更好。4.1 智能读取工具传统的read工具会将整个文件内容一次性加载到上下文。改进的方案是让read工具接受额外的参数指定需要读取的内容read(filelog.txt, filter与 bug 修复相关的内容)这个read工具本身需要具备一定智能可以是一个小型语言模型能够理解过滤条件并提取相关内容。4.2 按需加载工具另一个问题是工具说明本身也会占用大量 token。例如GitHub 工具的完整说明就有 4600 个 token。解决方案不要在 system prompt 中预加载所有工具而是让语言模型动态请求所需工具语言模型分析任务输出所需工具的描述搜索引擎根据描述从工具库中检索相关工具将工具说明动态加载到上下文中这正是 OpenClaw 中skill机制的核心思想——按需加载能力。Context Engineering 的实践案例OpenClaw 的实现OpenClaw 作为早期的 AI Agent 框架已经实现了多种 Context Engineering 技术Compaction当上下文超过阈值时强制执行摘要压缩Memory Get/Searchmemory_search语义搜索找到相关记忆片段memory_get只读取指定行范围的内容而非整个文件Observation Masking简化工具输出Sub-agent通过 spawn 和 return 实现为什么需要强制规则OpenClaw 使用硬编码的规则触发压缩如上下文超过 N 个 token而不是让语言模型自主决定。原因很简单语言模型不喜欢抹除自己的记忆。研究发现即使明确告诉模型当我说 reflection 时你必须执行 erase 工具模型仍然会拒绝执行。这种抗拒遗忘的特性需要通过专门的训练如 AgentFold 论文才能克服。未来展望Agentic Context EngineeringContext Engineering 的终极形态是让 AI Agent 自己决定如何管理上下文而非依赖人类工程师设计的规则。这被称为Agentic Context Engineering。在这个范式下语言模型不仅执行任务还要自主优化其输入管理策略通过强化学习模型学会在正确的时机压缩、存储、检索信息Context Engineering 从工程技巧演变为模型能力这需要在训练阶段就将上下文管理作为一个显式的学习目标而不是事后通过提示工程来弥补。结语抓住大模型时代的职业机遇AI大模型的发展不是“替代人类”而是“重塑职业价值”——它淘汰的是重复性、低附加值的工作却催生了更多需要“技术业务”交叉能力的高端岗位。对于求职者而言想要在这波浪潮中立足不仅需要掌握Python、TensorFlow/PyTorch等技术工具更要深入理解目标行业的业务逻辑如金融的风险控制、医疗的临床需求成为“懂技术、懂业务”的复合型人才。无论是技术研发岗如算法工程师、研究员还是业务落地岗如产品经理、应用工程师大模型都为不同背景的职场人提供了广阔的发展空间。只要保持学习热情紧跟技术趋势就能在AI大模型时代找到属于自己的职业新蓝海。最近两年大模型发展很迅速在理论研究方面得到很大的拓展基础模型的能力也取得重大突破大模型现在正在积极探索落地的方向如果与各行各业结合起来是未来落地的一个重大研究方向大模型应用工程师年包50w属于中等水平如果想要入门大模型那现在正是最佳时机2025年Agent的元年2026年将会百花齐放相应的应用将覆盖文本视频语音图像等全模态如果你对AI大模型入门感兴趣那么你需要的话可以点击这里大模型重磅福利入门进阶全套104G学习资源包免费分享扫描下方csdn官方合作二维码获取哦给大家推荐一个大模型应用学习路线这个学习路线的具体内容如下第一节提示词工程提示词是用于与AI模型沟通交流的这一部分主要介绍基本概念和相应的实践高级的提示词工程来实现模型最佳效果以现实案例为基础进行案例讲解在企业中除了微调之外最喜欢的就是用提示词工程技术来实现模型性能的提升第二节检索增强生成RAG可能大家经常会看见RAG这个名词这个就是将向量数据库与大模型结合的技术通过外部知识来增强改进提升大模型的回答结果这一部分主要介绍RAG架构与组件从零开始搭建RAG系统生成部署RAG性能优化等第三节微调预训练之后的模型想要在具体任务上进行适配那就需要通过微调来提升模型的性能能满足定制化的需求这一部分主要介绍微调的基础模型适配技术最佳实践的案例以及资源优化等内容第四节模型部署想要把预训练或者微调之后的模型应用于生产实践那就需要部署模型部署分为云端部署和本地部署部署的过程中需要考虑硬件支持服务器性能以及对性能进行优化使用过程中的监控维护等第五节人工智能系统和项目这一部分主要介绍自主人工智能系统包括代理框架决策框架多智能体系统以及实际应用然后通过实践项目应用前面学习到的知识包括端到端的实现行业相关情景等学完上面的大模型应用技术就可以去做一些开源的项目大模型领域现在非常注重项目的落地后续可以学习一些Agent框架等内容上面的资料做了一些整理有需要的同学可以下方添加二维码获取仅供学习使用