W
AI-Wiki
CONCEPT

Context Engineering

定义

Context Engineering,是指围绕 Agent 的上下文窗口进行系统化设计的方法,重点不是提示词的修辞技巧,而是管理“说什么、什么时候说、说多少”。在本文语境里,它被描述为比 Prompt Engineering 更底层的一层:Prompt Engineering 主要管“怎么说”,而 Context Engineering 管 Agent 实际获得哪些信息、这些信息何时进入上下文,以及一次放入多少内容才最有效。

它要解决的问题并不抽象,而是当前大模型 Agent 在长上下文使用中的现实痛点:虽然模型可用上下文窗口越来越大,例如文中举例的 Claude 约 200K、Gemini 约 2M,但“窗口大”不等于“上下文管理好”。如果把所有规则、历史、工具说明和任务资料一次性塞进去,模型仍可能出现中间信息记不住、关键信息被稀释、加载成本高、执行效率差等问题。文中将这种现象直接点名为 lost-in-the-middle。

在本文档中的语境

本文中的 Context Engineering 不是单独的一条提示技巧,而是 Agent [[Skills]] 体系中最底层、也最偏理论化的一支。原文提到的项目 Agent Skills for Context Engineering 没有刻意展示花哨功能,却因其对“Agent 的上下文窗口应该怎么管理”提出了成体系的方法而被强调,甚至被描述为“最学术,却最底层”。

在这个语境下,Context Engineering 的意义主要有五点:

  • 它直接关注 Agent 应该接收哪些信息,而不是只优化一句提示词的表达;
  • 它强调信息进入上下文的时机控制,即不是一次性全量灌入,而是按需加载;
  • 它关注上下文容量管理,避免长上下文中信息稀释和中段遗失;
  • 它为多 Agent 协作提供架构约束,决定不同 Agent 该共享什么、隔离什么;
  • 它把记忆系统与工具使用原则连接起来,使 Agent 不只是“会调用工具”,而是知道何时把哪些记忆、规则和工具说明纳入当前推理环境。

因此,Context Engineering 可以视为连接 Agent SkillsSkill Engineering、记忆机制与工具调用设计的一类基础方法。

关键机制与组成

原文提到,相关 Skills 被分成四层,说明 Context Engineering 不是单一技巧,而是一组分层能力。

基础层(Foundation)

基础层关注 Agent 对上下文本身的理解和处理能力,包含至少三类核心问题:

  • 理解上下文是什么:区分系统规则、任务说明、历史对话、检索材料、工具反馈、记忆片段等不同来源的信息;
  • 会压缩上下文:不是机械删减,而是在保留任务所需关键信息的前提下进行摘要、提炼和裁剪;
  • 能识别上下文失效:尤其是识别 lost-in-the-middle 这类长上下文问题,即重要信息位于中部时更容易被模型忽略。

这一层决定 Agent 是否具备“上下文卫生”能力。如果连哪些信息重要、哪些信息冗余都分不清,后续再复杂的工作流也会建立在低质量输入之上。

架构层(Architecture)

架构层强调上下文不是单 Agent 内部的小问题,而是系统设计问题。原文明确提到,这一层涉及:

  • 多 Agent 协作设计;
  • 记忆系统设计;
  • 工具使用原则。

这意味着 Context Engineering 不只是优化一个 Prompt,而是在回答一组系统级问题:

  • 多个 Agent 协作时,哪些上下文需要共享,哪些应局部保留;
  • 长期记忆、短期工作记忆和当前任务上下文之间如何切分;
  • 工具说明、调用结果和环境状态是否应常驻上下文,还是只在触发时注入。

从这里可以看出,Context Engineering 是记忆与工具使用之间的桥梁。没有这层设计,记忆会变成“堆资料”,工具调用会变成“函数很多但不知道何时用”。

运维层(Operations)

运维层关注运行中的效率和效果,原文给出的关键词是:

  • 优化上下文;
  • 评估 Agent 系统效果。

这意味着 Context Engineering 不是一次性写好就结束,而要在实际使用中持续观察:

  • 当前注入的上下文是否过长;
  • 是否存在大段说明从未被真正利用;
  • 某类任务是否因为缺少中间信息而频繁失败;
  • 上下文裁剪后是否影响结果质量;
  • Skills 的按需加载是否比全量注入更高效。

原文还给出了一个非常具体的效率判断:如果 Agent 启动时只加载技能名称,消耗只是几十个 token;真正需要时再加载完整指令,才增加几百个 token。相比把所有说明一开始全部塞入提示中,这种按需加载方式被描述为可高效约 10 倍。这里体现的正是运维层思路:把上下文看成一种需要预算、调度和评估的资源。

认知层(Cognitive)

认知层是原文中最理论化的一层,提到要让 Agent 拥有“信念—欲望—意图”式结构。其含义不是把 Agent 神秘化,而是强调上下文组织不能只围绕输入材料堆叠,还要服务于 Agent 的目标理解、意图维持和行动选择。

换句话说,Context Engineering 在这一层开始关注:

  • Agent 当前相信什么是事实;
  • Agent 当前想达成什么目标;
  • Agent 下一步准备采取什么行动。

如果这些状态不能被稳定地保留、更新和显式组织,Agent 即便有长窗口,也容易在多步骤任务中迷失目标。

为什么它重要

1. 它解决“长上下文够用但不会用”的问题

原文明确指出,模型上下文窗口在持续增大,但有效利用率并不高。问题不在于窗口绝对长度,而在于缺乏对上下文内容、顺序和时机的工程化管理。

因此,Context Engineering 的价值不是单纯追求更长输入,而是追求更高的信息利用率。它反对“能塞就塞”的思路,更强调:

  • 不必要的信息不要进入当前上下文;
  • 需要的信息要在需要时进入;
  • 进入后要以模型更容易抓住的形式组织;
  • 可延迟加载的说明不要抢占当前注意力。

2. 它直接缓解 lost-in-the-middle

原文把 lost-in-the-middle 视为 Context Engineering 要识别和应对的典型失效问题。所谓 lost-in-the-middle,是指模型在处理长上下文时,对中间部分的信息关注不足,导致真正关键的条件、约束或事实虽然已提供,却没有在输出中被正确利用。

Context Engineering 对此的基本应对不是一句“请仔细阅读”,而是结构性处理,例如:

  • 压缩与重排重要信息;
  • 把关键约束放到更容易被保留的位置;
  • 将长材料拆为按步骤注入的上下文片段;
  • 在任务阶段切换时重新注入当前最关键的信息。

这也是它区别于一般 Prompt Engineering 的地方:问题不只靠措辞修补,而要靠上下文编排解决。

3. 它提升上下文加载效率

原文给出的按需加载机制是 Context Engineering 的一个非常具体的实践模式。Agent 启动时不必把所有技能全文、规则全文、工具全文都加载进来,而可以只加载名称或简短索引;当某个任务真正触发某项能力时,再读入对应的完整说明。

这种做法至少带来三种收益:

  • 降低初始 token 消耗;
  • 减少无关说明对当前任务的干扰;
  • 让同一个 Agent 能挂载更多能力,但不因全量注入而臃肿。

这也是 Agent Skills 之所以能在工程上成立的关键之一:Skill 可以作为按需注入的知识单元存在,而不是永远常驻提示词。

4. 它支撑多 Agent 协作

原文在架构层中直接把多 Agent 协作列为 Context Engineering 的组成部分,说明多 Agent 的关键难点并不只是“多开几个模型实例”,而是如何设计它们的上下文边界。

典型问题包括:

  • 总控 Agent 应看到全局计划,执行 Agent 是否只应看到局部任务;
  • 某个 Agent 生成的中间结论是否应原样共享给其他 Agent;
  • 各 Agent 是否共享同一记忆池,还是按职责分层;