三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

AI Agent 爆破内存墙!Context Engineering 技术深度解析,让语言模型“过目不忘”!

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

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

← 返回列表