AI Agent 中的上下文工程与记忆系统
AI Agent 中的上下文工程与记忆系统
刚开始接触 Agent 时,我更关注模型本身的能力:能不能理解问题,能不能调用工具,能不能生成比较完整的答案。
但任务变复杂之后,真正影响效果的往往不只是模型,而是模型在每一次执行时能看到什么信息。上下文太少,Agent 不知道背景;上下文太多,又会让信息变得混乱,甚至增加无关内容对判断的干扰。
所以,AI 应用开发中有一个很重要的方向叫上下文工程(Context Engineering)。它关注的不是单纯写一段更长的 Prompt,而是如何组织、筛选和更新 Agent 在运行过程中需要的信息。
上下文不只是 Prompt
一个 Agent 的上下文通常包括几类内容:
- 用户当前的问题
- 历史对话和任务状态
- 业务规则和系统约束
- 检索到的文档或数据
- 可调用的工具描述
- 其他 Agent 返回的中间结果
这些内容如果全部直接拼接到 Prompt 中,短任务可能还能工作,长任务就容易出现上下文膨胀、重复信息和重点不清晰的问题。
我理解上下文工程的核心,就是在每次执行前回答一个问题:当前这一步真正需要哪些信息?
短期记忆和长期记忆
短期记忆主要服务于当前任务。例如用户刚刚说了什么、当前任务执行到了哪一步、上一个工具返回了什么结果。这些信息通常跟当前对话或任务生命周期绑定。
长期记忆则是跨任务保留的信息,例如用户的偏好、项目约定、常用技术栈和历史结论。长期记忆不能简单地把所有聊天记录永久保存,而是需要提取出真正值得保留的内容。
当前对话 / 当前任务 → 短期记忆 |
如果短期记忆里混入太多过期内容,Agent 可能会继续沿用已经改变的结论;如果长期记忆没有经过筛选,检索出来的内容也可能反过来干扰当前任务。
一个简单的上下文构建流程
可以把一次 Agent 执行拆成几个阶段:
- 获取当前用户目标
- 读取当前任务状态
- 根据关键词或语义检索相关记忆
- 加入必要的业务规则和工具说明
- 删除重复、过期或与当前任务无关的内容
- 组合成当前步骤需要的上下文
这里的“删除”其实和“添加”一样重要。不是给模型的信息越多越好,而是要让当前信息的优先级足够清楚。
上下文工程中的几个问题
第一个问题是信息过期。比如项目接口已经升级,但记忆中仍然保存着旧接口格式,这种内容比没有记忆更危险。
第二个问题是来源不可靠。用户输入、外部网页和系统规则的可信度不同,不能把它们放在同一优先级中处理。
第三个问题是上下文边界。用户提供的文本可能包含与任务无关的指令,外部资料也可能包含不应该执行的内容,所以应用层仍然需要做好权限判断和输入隔离。
我的理解
上下文工程本质上是在做信息管理。模型负责推理,但应用需要负责准备材料、维护状态和控制边界。
当 Agent 的任务还比较简单时,几个清晰的 Prompt 可能就够了;当任务开始涉及多步骤执行、工具调用和长期协作时,记忆、状态和上下文筛选就会变成系统设计的一部分。
