前段时间 OpenAI 的前研究员 Andrej Karpathy 提出一个新的名词:Context Engineering。他将 LLM 比作计算机的处理器(CPU),而其上下文窗口则相当于内存(RAM)。最近看到一篇发表在 langchain 博客里面的文章:Context Engineering(链接见文末),让我对这个概念的理解更加深刻。
上下文工程(Context Engineering)是构建和优化大型语言模型(LLM)驱动的 AI 智能体的一门关键技术。它被定义为"在智能体运行轨迹的每一步中,以恰到好处的信息填充上下文窗口的艺术与科学"。
上下文工程的重要性在于:
- 提升推理能力:通过提供最相关、最简洁的信息,智能体能够更准确地理解任务、进行有效推理并生成高质量的响应。
- 提高运行效率:优化上下文的使用可以减少不必要的计算,从而加速智能体的响应时间,并降低资源消耗。
- 增强智能体鲁棒性:有效的上下文管理有助于避免信息过载或错误信息引起的故障,使智能体在复杂多变的环境中保持稳定表现。
- 实现复杂任务:对于需要长期记忆、多步骤规划或与外部工具交互的复杂任务,上下文工程是确保智能体能够有效执行这些任务的基础。
上下文工程是"填充上下文窗口的艺术和科学,在代理轨迹的每一步都填充正确的信息"
Andrej Karpathy x.com/karpathy/st...
错误的 LLM 上下文对 Agent 的影响
当 LLM 的上下文管理不当时,可能会对 AI Agent 产生以下四种严重影响:
上下文中毒(Context Poisoning)
指当幻觉或其他错误信息进入 LLM 的上下文并被反复引用时。例如,一个 Agent 在执行任务时产生错误信息,这些错误信息被模型"记住"并持续影响后续的判断和决策,导致 Agent 固执于不可能或不相关的目标。
上下文干扰(Context Distraction)
发生在上下文过长,导致 LLM 过度关注上下文中的冗余信息,而忽略了其在训练中学到的核心知识。这使得 Agent 倾向于重复历史动作而非生成新的、更优的计划。对于上下文窗口较小的模型,这种干扰效应会更早出现。
上下文混乱(Context Confusion)
当上下文中的冗余内容被 LLM 用于生成低质量响应时。即使提供了大量工具描述,模型也可能因信息过载而性能下降,甚至尝试使用不相关的工具。LLM 会关注上下文中的所有内容,即使是无关信息,这会降低响应的准确性。
上下文冲突(Context Clash)
指上下文中新获取的信息或工具与现有信息发生直接冲突。例如,在多轮对话中分阶段提供信息,可能导致模型在早期轮次做出错误假设并过分依赖这些错误答案,从而显著降低最终性能。这种内部矛盾会使 Agent 的推理过程脱轨。
这些失败模式对 AI Agent 的影响尤为显著,因为 Agent 通常在需要收集多源信息、进行顺序工具调用、多轮推理和积累大量历史的复杂场景中运行,这些场景极易导致上下文膨胀,从而放大上述问题。
上下文工程策略
为了应对上下文管理不当的问题,文章中将上下文工程策略分为写入、选择、压缩和隔离四类。

1. 写入上下文(Write Context)
此策略旨在将信息保存于上下文窗口之外,以备未来使用。这包括两种主要形式:
- 草稿本(Scratchpads) :用于存储会话内部的临时信息。这可以是在一个单一的交互过程中,智能体为了完成当前任务而需要临时记录的数据。
- 记忆(Memories) :用于跨多个会话持久化信息。这些记忆可以是智能体自动生成或从过去的交互中综合提炼出来的,用于保留长期知识或个性化设置。

2. 选择上下文(Select Context)
此策略专注于将相关信息提取到当前的上下文窗口中。这涉及从以下来源进行选择:
- 草稿本和记忆的检索:根据当前任务或用户查询,从已存储的草稿本或各种类型的记忆(如事件记忆、程序记忆、语义记忆)中检索最相关的信息。
- 检索增强生成(RAG) :尤其在代码智能体中,RAG 被广泛应用于从工具描述和知识库中获取信息,确保智能体能够访问到其执行任务所需的外部知识。
3. 压缩上下文(Compressing Context)
此策略通过保留必要的 token 来优化上下文窗口的使用效率。它主要包含:
- 上下文摘要(Context Summarization) :将冗长的智能体交互或工具输出浓缩成更简洁的形式,减少不必要的细节,突出关键信息。
- 上下文修剪(Context Trimming) :通过过滤或剪枝技术(通常基于启发式规则),从上下文中移除不相关或冗余的 token。

4. 隔离上下文(Isolating Context)
此策略通过分离上下文来帮助智能体更有效地执行任务。这可以通过以下方式实现:
- 多智能体架构(Multi-agent Architecture) :将任务分解给多个子智能体,每个子智能体处理其特定任务并拥有独立的上下文,避免不同任务的上下文相互干扰。
- 环境(Environments) :使用沙箱等环境来隔离包含大量 token 的对象或状态,例如在执行复杂计算或访问敏感数据时,将这些操作限制在特定的、受控的环境中。
实践建议
虽然 Langchain 的博客中未详细展开,但上下文工程实践中建议:
- 动态加载工具:根据任务需求动态加载和卸载工具,避免一次性加载过多工具导致上下文混乱。
- 上下文隔离(Context Quarantines) :创建独立的上下文区域,用于处理特定类型的信息或执行特定子任务,防止信息交叉污染。
- 监控与评估:建立完善的监控机制,追踪 LLM 的 token 使用情况、响应时间和成本,并对 Agent 的决策过程进行记录和评估,以便及时发现和解决上下文问题。
- 逐步优化与场景化设计:针对最耗费 token 的部分进行优化,然后逐步优化关键信息的选择,最后考虑复杂的架构调整。同时,根据具体应用场景(如客服、营销、代码生成等)设计定制化的上下文管理策略。
总结
上下文工程(Context Engineering)是构建高效、智能、鲁棒 AI 智能体的核心要素。通过巧妙地写入、选择、压缩和隔离上下文,并充分理解上下文管理不当的潜在风险,我们可以最大限度地发挥 LLM 的潜力,使其在各种任务中表现出色。
对于 AI 智能体的开发者而言,掌握这些上下文工程技术是构建 AI Agent 的关键。
参考文献
- LangChain Blog. (2025, July 2). Context Engineering. blog.langchain.com/context-eng...