Context Engineering
上下文工程决定模型在每个步骤的上下文窗口中包含哪些内容,从指令和检索数据到工具结果和记忆。
上下文工程是指在 AI 应用的每一步中,决定哪些信息进入模型的上下文窗口:指令、示例、检索到的文档、工具定义、工具结果、记忆和对话历史,以及每类信息包含多少、按什么顺序排列,以及省略哪些内容。这个术语在 2025 年年中开始流行,当时AI 智能体开始执行包含数十甚至数百个步骤的任务。Andrej Karpathy 将其称为“精细的艺术与科学:为下一步恰到好处地填充上下文窗口”,而 Anthropic 的面向 AI 智能体的有效上下文工程则将其描述为在推理过程中筛选“最优 token 集合”。提示工程关注如何编写指令,是其中的一部分。
为什么上下文需要工程化#
大型语言模型(LLM)只了解自己的训练数据和上下文中的内容,因此缺少上下文会导致回答泛泛而谈或产生幻觉。上下文过多也会出问题。随着输入变长,准确率会下降,这种现象称为上下文腐化;Lost in the Middle研究发现,模型最擅长利用长输入开头或结尾的信息,最不擅长利用中间部分的信息。Anthropic 将上下文描述为一个边际收益递减的注意力预算,每增加一个token,都会消耗一部分预算。每个 token 也会增加成本和推理延迟。对智能体来说,这个问题尤其突出,因为每一步都会追加工具调用及其结果,所以无论新增内容是否仍有用,上下文都会随着每次操作而增长。
核心策略#
LangChain 的上下文工程概述将这些技术归为四种策略,它们与 Anthropic 描述的长期任务方法相对应:
- 写入:将信息保存在上下文窗口之外,例如暂存区、笔记文件或长期记忆中,使其在对话继续进行后仍能留存。Anthropic 将此称为结构化笔记记录。
- 选择:只提取当前步骤需要的内容,例如相关段落、记忆或工具说明。Anthropic 描述了这样一种智能体:它们保留轻量级引用,例如文件路径或查询,并在需要时再加载内容。
- 压缩:通过总结或删减,只保留任务需要的 token。上下文几乎填满时,压缩会生成摘要,并在新的上下文窗口中基于该摘要继续工作。
- 隔离:将工作分配给上下文窗口干净的子智能体,再由子智能体向主智能体返回精简结果;也可以把庞大的数据保存在沙箱或状态对象中,而不是放进上下文。
除了内容,顺序和稳定性也很重要。提示缓存只能复用完全相同的前缀,因此上下文通常会先放置固定指令和工具定义,再放置会变化的内容。Lingrui Mei 及其同事对1400 多篇论文的综述将这一领域归纳为上下文检索与生成、上下文处理和上下文管理,这些方法应用于检索增强生成、记忆系统、工具集成推理和多智能体系统。
工具、协议和技能#
智能体的上下文很大一部分来自工具。模型上下文协议(MCP)由 Anthropic 于 2024 年 11 月推出,之后捐赠给 Linux Foundation 旗下的一个基金会,用于标准化应用向模型公开工具和数据的方式。工具定义本身也是上下文:智能体每次请求中可调用的每个工具都会占用 token,因此有些智能体只会在任务需要时加载工具定义。智能体技能也将同一思路应用于指令:把操作指南和参考文件打包成文件夹,仅在任务需要时由智能体加载。
Ultralytics Agent Skills采用了这种设计,供使用 Ultralytics YOLO的编码智能体使用。只有在提出相关任务时才会加载技能;yolo 路由技能会将每个请求映射到涉及的生命周期阶段,例如数据集、训练或导出;与版本相关的信息,例如权重名称、训练参数和导出格式,则保存在根据固定的 ultralytics 版本核实的目录中,每个技能都会告知智能体:如果目录与实际情况不同,应以已安装的软件包为准。










