AI Agent 中的上下文工程与记忆系统

刚开始接触 Agent 时,我更关注模型本身的能力:能不能理解问题,能不能调用工具,能不能生成比较完整的答案。

但任务变复杂之后,真正影响效果的往往不只是模型,而是模型在每一次执行时能看到什么信息。上下文太少,Agent 不知道背景;上下文太多,又会让信息变得混乱,甚至增加无关内容对判断的干扰。

所以,AI 应用开发中有一个很重要的方向叫上下文工程(Context Engineering)。它关注的不是单纯写一段更长的 Prompt,而是如何组织、筛选和更新 Agent 在运行过程中需要的信息。

上下文不只是 Prompt

一个 Agent 的上下文通常包括几类内容:

  • 用户当前的问题
  • 历史对话和任务状态
  • 业务规则和系统约束
  • 检索到的文档或数据
  • 可调用的工具描述
  • 其他 Agent 返回的中间结果

这些内容如果全部直接拼接到 Prompt 中,短任务可能还能工作,长任务就容易出现上下文膨胀、重复信息和重点不清晰的问题。

我理解上下文工程的核心,就是在每次执行前回答一个问题:当前这一步真正需要哪些信息?

短期记忆和长期记忆

短期记忆主要服务于当前任务。例如用户刚刚说了什么、当前任务执行到了哪一步、上一个工具返回了什么结果。这些信息通常跟当前对话或任务生命周期绑定。

长期记忆则是跨任务保留的信息,例如用户的偏好、项目约定、常用技术栈和历史结论。长期记忆不能简单地把所有聊天记录永久保存,而是需要提取出真正值得保留的内容。

当前对话 / 当前任务 → 短期记忆
用户偏好 / 项目知识 → 长期记忆
工具结果 / 文档资料 → 外部上下文

如果短期记忆里混入太多过期内容,Agent 可能会继续沿用已经改变的结论;如果长期记忆没有经过筛选,检索出来的内容也可能反过来干扰当前任务。

一个简单的上下文构建流程

可以把一次 Agent 执行拆成几个阶段:

  1. 获取当前用户目标
  2. 读取当前任务状态
  3. 根据关键词或语义检索相关记忆
  4. 加入必要的业务规则和工具说明
  5. 删除重复、过期或与当前任务无关的内容
  6. 组合成当前步骤需要的上下文

这里的“删除”其实和“添加”一样重要。不是给模型的信息越多越好,而是要让当前信息的优先级足够清楚。

上下文工程中的几个问题

第一个问题是信息过期。比如项目接口已经升级,但记忆中仍然保存着旧接口格式,这种内容比没有记忆更危险。

第二个问题是来源不可靠。用户输入、外部网页和系统规则的可信度不同,不能把它们放在同一优先级中处理。

第三个问题是上下文边界。用户提供的文本可能包含与任务无关的指令,外部资料也可能包含不应该执行的内容,所以应用层仍然需要做好权限判断和输入隔离。

我的理解

上下文工程本质上是在做信息管理。模型负责推理,但应用需要负责准备材料、维护状态和控制边界。

当 Agent 的任务还比较简单时,几个清晰的 Prompt 可能就够了;当任务开始涉及多步骤执行、工具调用和长期协作时,记忆、状态和上下文筛选就会变成系统设计的一部分。