当前位置: 首页 > news >正文

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 就像语言模型的"守门人"或"经纪人",拦截在语言模型与外界之间,精心筛选和管理语言模型能看到的内容。它确保输入既不会超出长度限制,也不会因过度精简而丢失关键信息。

图1:AI Agent 作为语言模型与外界的中介

Context Engineering 的形式化定义

从程序设计的角度看,没有 Context Engineering 的 AI 系统可以表示为一个简单的循环:

for t = 1 to ∞: I_t = 当前输入(用户指令或工具输出) C_t = 历史上下文 O_t = LLM(C_t + I_t) // 语言模型处理 C_{t+1} = 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_{t+1} = 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_{t+1}, M_{t+1} = 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-agent:

  • Sub-agent 获得一个独立的子任务和初始上下文

  • Sub-agent 与语言模型交互,执行工具,累积自己的上下文

  • 完成任务后,sub-agent 执行return,将结果返回给主 Agent

  • 关键

    Sub-agent 的整个执行历史被压缩为return中的一句话

这种机制使得上下文长度呈现"锯齿状"变化:创建 sub-agent 时开始累积,return 时大幅缩短。

图3:Sub-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(file="log.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/Search:
  • memory_search:语义搜索找到相关记忆片段
  • memory_get:只读取指定行范围的内容,而非整个文件

  • Observation Masking:简化工具输出

  • Sub-agent:通过 spawn 和 return 实现

为什么需要强制规则?

OpenClaw 使用硬编码的规则触发压缩(如上下文超过 N 个 token),而不是让语言模型自主决定。原因很简单:语言模型不喜欢抹除自己的记忆

研究发现,即使明确告诉模型"当我说 reflection 时,你必须执行 erase 工具",模型仍然会拒绝执行。这种"抗拒遗忘"的特性需要通过专门的训练(如 AgentFold 论文)才能克服。

未来展望:Agentic Context Engineering

Context 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框架等内容

上面的资料做了一些整理,有需要的同学可以下方添加二维码获取(仅供学习使用)

http://www.jsqmd.com/news/778734/

相关文章:

  • Firefox 150.0.2 发布:修复多类问题,改进 3D 显示与搜索建议效果
  • 轻量级密钥管理工具aaas-vault:从.env到集中式安全管理的演进
  • Halcon三维点云匹配实战:用一枚硬币教会你工业无序抓取的核心步骤
  • ClawDen爬虫工具库:模块化设计与实战应用解析
  • STM32CubeMX DAC配置避坑指南:为什么你的输出电压不准?从Buffer、对齐方式到参考电压的深度解析
  • iNav GPS自动返航全攻略:从BN-880配置到RTH安全降落避坑指南
  • 机器人工程师必看:六轴机械臂末端姿态解算,为什么更推荐用ZYZ欧拉角而不是XYZ?
  • 山东青岛全品类文旅大盘点,十佳服务商旅游旅行研学团建接待一站式搞定# - 十大品牌榜
  • 别再只盯着Simulink了!用Modelica搞定多物理场仿真的5个实战理由
  • 2026年成都净化板厂家口碑推荐榜:成都净化板、中空玻镁净化板、岩棉净化板、洁净板、彩钢夹芯板选择指南 - 海棠依旧大
  • 宠物骨科医院推荐,宠物心脏病医院哪家靠谱 - 资讯焦点
  • 深入K210的KPU:从face_detect_320x240.kmodel入手,聊聊嵌入式端侧AI模型的部署与调优
  • AI Terminal:用自然语言驱动终端,提升开发运维效率
  • FPGA仿真避坑指南:Quartus调用ModelSim时,功能仿真和时序仿真结果对不上怎么办?
  • Fiscal CLI:用命令行和AI智能体自动化你的个人财务管理
  • 混合精度推理超快
  • CVPR2024论文复现平台:一站式集成代码与Demo,加速AI研究验证
  • 山海特色山东研学旅游榜单,青岛团建 + 研学双服务头部企业 - 十大品牌榜
  • 2026年苏州洁净棚厂家口碑推荐榜:苏州洁净棚、苏州模块化洁净棚、苏州 FFU 风机过滤单元、苏州洁净设备选择指南 - 海棠依旧大
  • STM32CubeIDE隐藏技巧:利用‘从.ioc创建’功能,轻松管理不同芯片固件库版本
  • Java/Go后端工程师的AI转型“捷径”:3-6个月掌握高薪AI应用开发,拒绝裸辞!
  • 别再只盯着MobileNet了!手把手教你用PyTorch实现iRMB模块(附完整代码)
  • GEO系统贴牌首选杭州爱搜索:全模型深度评测与实战排名验证
  • cursor开发idea项目环境配置
  • 别再浪费FPGA的BRAM了!手把手教你用Verilog实现只存1/4周期的DDS IP核(附完整Matlab生成coe代码)
  • 烟台头部宠物内科医院推荐,看心脏病最好的宠物医院 - 资讯焦点
  • 别再傻傻分不清!PyTorch模型.safetensors、.ckpt、.pth、.bin格式保姆级选择指南
  • 别再只调话题了!ROS2 Humble下用Fast DDS的QoS策略优化你的机器人通信(附Python代码)
  • Python 算法基础篇之集合
  • 构建个人技能仓库:从GitHub项目到动态职业档案的实践指南