上下文工程

context_engineering2026-09-03 20:23:14

上下文工程(Context Engineering)是为大语言模型选择、组织、提供和更新输入信息的工程方法。它关注的不是“怎样写一句更好的提示词”,而是模型在一次推理中能看到哪些指令、事实、示例、工具说明和历史信息,以及这些内容以什么结构出现。

上下文工程适用于聊天应用、检索增强生成、工作流和 AI Agent。它的目标是在上下文窗口和成本约束内,让模型获得完成当前任务所需的高质量信息。

上下文的边界

模型的上下文是本次调用实际收到的输入,不等于系统掌握的全部数据。数据库中的记录、文件、用户记忆或搜索结果,只有经过选择并装入本轮输入,才会影响模型的判断。

几个相邻概念的区别如下:

概念 关注点
提示工程 如何表达目标、规则、示例和输出要求
上下文工程 如何构造模型本轮可见的完整信息环境
记忆 如何跨步骤或跨会话保存信息
RAG 如何从外部知识源检索与问题相关的资料

提示词、记忆检索结果和 RAG 结果都可能成为上下文的一部分,但上下文工程还要处理消息结构、信息顺序、工具定义、运行历史、长度预算、缓存和安全边界。

上下文由什么组成

一次面向应用的大模型调用通常可能包含:

  • 系统或开发者指令:角色、目标、规则和权限边界;
  • 用户输入:当前请求以及后续补充的信息;
  • 对话历史:之前的用户消息和模型回复;
  • 工具定义与工具结果:模型可采取的动作及外部系统返回的观察;
  • 外部知识:检索结果、文件片段、数据库记录或业务资料;
  • 示例:帮助模型理解任务形式和输出标准的输入输出样例;
  • 运行状态:计划、待办事项、错误、检查结果和资源使用情况。

不同模型 API 会使用各自的消息角色和 Chat Template,把这些结构转换为模型处理的 Token 序列。应用应遵循所用 API 的消息格式,不应把工具结果、外部资料和高优先级指令混成来源不明的一段文本。

设计目标

好的上下文不以“越长越好”为目标,而应同时满足:

  • 相关:内容与当前决策有关,避免无用日志和重复资料;
  • 充分:目标、约束、关键事实和成功标准没有缺失;
  • 清晰:信息有稳定结构,来源、优先级和时效容易识别;
  • 一致:同一事实只有一个当前版本,过期状态被明确替换;
  • 可追溯:摘要和结论能够回到原始文件、记录或链接;
  • 经济:控制 Token、延迟和推理成本,并为输出预留空间。

长上下文模型能够接收更多信息,但不保证能同样可靠地使用每个位置的内容。关键信息可能被噪声掩盖,位于长输入中部的信息也可能更难被利用。因此,信息筛选、排序和结构化仍然必要。

稳定前缀与动态信息

许多模型服务会复用相同输入前缀的计算结果。为了提高 KV Cache 或 Prompt Cache 的利用率,可以把稳定内容放在前部,把频繁变化的信息追加在后部:

  1. 稳定的行为规则和输出约束;
  2. 顺序稳定的工具定义和长期有效的背景资料;
  3. 对话与运行历史;
  4. 最新用户输入、检索结果和当前状态。

时间、计数器和实时状态不宜每轮改写到固定前缀中。工具集合很大时,也不应无条件放入全部定义;可以先提供稳定目录,再按需要加载具体工具或能力说明。

缓存是性能优化,不是正确性的替代品。任何布局首先都必须保证模型获得当前有效的指令和事实。

长上下文管理

当历史不断增长时,常见策略包括:

  • 裁剪噪声:删除重复、低价值或可重新获取的内容;
  • 按需检索:保存原始资料,只把当前步骤需要的片段装入上下文;
  • 结构化摘要:保留目标、约束、决定、依据、失败路径和待办事项;
  • 外部归档:大体积工具输出保存在文件或存储系统中,上下文只保留摘要和定位信息;
  • 分层压缩:先压缩工具结果和旧历史,接近窗口上限时再进行更大范围的整理;
  • 上下文隔离:让独立任务在单独的 Agent 或工作单元中处理,只返回结论和证据。

仅保留最近若干条消息的滑动窗口很简单,但可能删掉早期约束、失败尝试和已经完成的工具调用,导致模型重复犯错。压缩也不是无损操作,因此应保留来源指针,并对关键数字、路径、决定和未完成事项进行校验。

安全与信任边界

网页、邮件、文档和工具输出可能包含恶意或误导性指令。上下文工程需要明确区分可信指令与不可信数据:

  • 标注外部内容的来源和信任级别;
  • 使用消息角色或结构化字段区分指令、数据和工具结果;
  • 不让外部文本自动获得更高的指令优先级;
  • 对写入、发送、删除和权限变更等动作设置独立授权;
  • 在进入上下文前控制敏感信息和个人数据的范围;
  • 记录模型依据了哪些资料,便于审计和复现。

内容过滤只能降低部分风险,不能代替权限控制和结果验证。

与 Agent 上下文管理的关系

上下文工程是通用方法;Agent 上下文管理是它在多轮 Agent 运行中的具体应用。后者进一步处理工具调用轨迹、任务状态栏、长任务恢复、步骤上限和子 Agent 隔离等问题。

检查清单

设计一次模型调用时,可以检查:

  1. 模型是否看到了当前目标、不可违反的约束和完成标准;
  2. 每段资料的来源、时效和优先级是否清楚;
  3. 是否存在互相冲突或已经过期的状态;
  4. 大段工具输出能否改为摘要、定位信息或按需读取;
  5. 压缩后是否仍保留关键决定、失败路径和证据;
  6. 动态内容是否不必要地破坏了稳定前缀;
  7. 不可信内容是否可能越过权限边界影响行动。

相关词条

参考资料

本页目录