随着大型语言模型(LLM)的快速演进,智能体(Agent)开发已成为人工智能领域的前沿阵地。业界普遍将 LLM 比作新型操作系统中的中央处理器(CPU),而其有限的上下文窗口则如同随机存取存储器(RAM),扮演着模型的工作记忆角色。在此背景下,上下文工程(Context Engineering)应运而生,它被定义为一门精妙的艺术与科学,旨在为智能体在任务执行轨迹的每一步,精准地填充恰当信息到上下文窗口中。这一理念不仅关乎效率,更是智能体能否实现可靠、连贯、高性能表现的核心所在。
智能体在执行长期任务时,会交替进行 LLM 调用和工具调用,并根据工具反馈决定下一步行动。然而,这些长时间运行的任务和工具反馈的持续累积,极易导致令牌(token)数量膨胀,进而引发一系列问题:上下文窗口溢出、成本与延迟激增,甚至智能体性能退化。具体的性能问题包括:当幻觉或错误信息进入上下文并被反复引用时造成的 “上下文中毒”;上下文过长导致模型过度关注现有信息而忽略训练所得知识的 “上下文分散”;无关信息干扰模型生成低质量响应的 “上下文混淆”;以及上下文不同部分之间信息冲突引发的 “上下文冲突”。因此,有效地管理上下文信息,成为了智能体工程师的首要任务。
上下文工程:智能体可靠性的基石#
上下文工程不仅是解决技术瓶颈的手段,更是构建可靠智能体系统的根本方法。它涵盖了四大核心策略,以应对不同类型的上下文管理挑战:
-
写入上下文(Write Context):指将信息保存到上下文窗口之外,以供智能体在未来任务中调用。这包括使用 “暂存器”(scratchpad)进行会话内的笔记记录,或通过 “记忆”(memories)机制实现跨会话的长期学习和信息持久化。例如,智能体可以通过工具调用将计划或关键信息写入文件,或利用运行时状态对象保存信息。
-
选择上下文(Select Context):意味着仅将与当前任务最相关的信息拉入上下文窗口。这包括从暂存器中读取、选择相关的记忆(如少样本示例、指令、事实),以及利用检索增强生成(RAG)技术从大量工具描述中筛选出最适用的工具,或从庞大知识库中检索所需知识。在实际应用中,混合检索技术(如向量搜索结合词法 / 正则搜索)和重排序(re-rank)步骤对于提升选择精度至关重要。
-
压缩上下文(Compress Context):旨在只保留执行任务所需的最小令牌量。常用的方法有 “上下文摘要”(Context Summarization),通过 LLM 将冗长的交互历史或工具调用结果提炼成精简摘要,以避免上下文过长导致的性能下降。另一种方法是 “上下文修剪”(Context Trimming),通常通过硬编码启发式规则或训练过的修剪器来过滤掉不相关或不需要的信息,如删除旧消息。
-
隔离上下文(Isolate Context):涉及将上下文分解为更小的、独立的单元,以帮助智能体执行任务。这主要通过多智能体架构实现,每个子智能体拥有专用的上下文窗口,专注于特定子任务,从而实现关注点分离。此外,通过沙盒环境或设计具有特定模式的状态对象,也可以将某些令牌密集型对象或工具调用的结果与 LLM 的直接上下文隔离,仅在需要时暴露。
这些策略共同构成了上下文工程的实践框架,通过实时组装高质量上下文(内循环)和持续优化检索与索引策略(外循环),不断提升智能体的适应性和效能。
多智能体系统:能力扩展与内在挑战#
在智能体架构的选择上,业界存在着关于单一智能体与多智能体系统效用的持续讨论。
多智能体的优势显而易见: 多智能体系统在处理广度优先查询(即需要同时探索多个独立方向的任务)时表现出色。通过让子智能体并行操作,各自拥有独立的上下文窗口来探索问题的不同方面,它们能够有效突破单一智能体上下文窗口的限制,大幅提升信息收集和提炼的效率。例如,在研究任务中,多智能体系统被发现能将研究时间缩短高达 90%,并能处理比单一系统更广泛的信息。这种分布式架构能够有效扩展令牌使用量,使得多智能体系统在任务价值足够高、且需要大量并行化处理的场景中,成为实现高性能的关键。
然而,多智能体系统也面临着严峻的挑战:
-
可靠性与连贯性:最关键的挑战在于,当多智能体处理需要紧密协调或涉及 “写入” 操作的任务时,很容易出现 “决策冲突” 和 “上下文缺失”。例如,当多个子智能体并行生成代码或内容时,它们基于不完全共享的上下文可能做出相互冲突的隐含决策,导致最终输出难以整合或质量低下。实践表明,多智能体系统在并行 “读取” 任务(如研究)上表现更佳,而在并行 “写入” 任务(如代码生成)上则更为脆弱。
-
令牌成本与复杂性:多智能体架构通常会显著增加令牌使用量,可能高达单一聊天交互的数倍甚至十数倍,这大幅提升了运行成本。此外,智能体之间的协调复杂性也会呈指数级增长,尤其是在需要实时沟通和决策互依赖的场景中。
-
调试与评估:由于智能体的动态决策和非确定性行为,多智能体系统变得异常难以调试。即使是细微的改动也可能导致行为的连锁反应,使得传统软件的调试方法难以奏效。这要求采用新的可观测性(observability)、追踪(tracing)和评估方法,以理解智能体间的互动模式和决策流程。
以上下文工程重塑智能体架构#
面对多智能体系统的两面性,上下文工程成为了指导其架构设计和克服挑战的核心罗盘。
隔离策略是多智能体成功的关键: 在多智能体系统中,上下文隔离被视为一种高效策略。每个子智能体被赋予独立的上下文窗口和工具集,专注于其特定的子任务。这种 “关注点分离” 不仅减少了单个上下文窗口的压力,也使得子智能体能够更彻底、更独立地进行探索。例如,研究系统中的子智能体能够并行检索信息,然后将关键洞察压缩后返回给主智能体。值得注意的是,为了确保最终输出的连贯性,这些系统中通常会将最终的 “撰写” 或 “合成” 工作,委托给一个单一的主智能体或专门的合成智能体来完成,从而有效避免了并行写入可能导致的冲突。通过沙盒环境或设计具有结构化模式的状态对象,可以进一步实现上下文隔离,将令牌密集型数据存储在 LLM 的直接上下文之外,仅在需要时选择性地暴露。
连贯性与历史管理在不同架构中的应用: 对于单一智能体或那些任务高度互依赖的系统,维护全局连贯性则显得尤为重要。这可能意味着需要共享完整的智能体轨迹,或者通过高级的记忆压缩技术,将冗长的对话历史或操作日志总结为可检索的事实,以避免上下文遗忘或混淆。例如,一些成功的单一智能体设计(如某些代码助手)通过频繁使用小型模型进行上下文的读取、解析和摘要,有效地管理了长会话的连贯性,并避免了多智能体带来的额外复杂性。写入、选择和压缩等上下文工程策略,在各种智能体架构中都扮演着优化上下文质量的关键角色,无论是用于持久化信息、筛选工具,还是精炼历史记录。
实践之路:控制、简化与验证#
构建健壮的智能体系统,不仅依赖于对上下文工程理论的深刻理解,更需要灵活的实践方法、精简的设计哲学和强大的工程工具支持。
首先,架构选择应强调灵活性与细粒度控制。低级别的编排框架对于智能体开发者至关重要,它赋予了工程师对 LLM 输入上下文、智能体执行步骤和顺序的完全控制权。这种控制使得工程师能够根据任务的具体需求,定制化地应用上下文工程策略,而非受限于预设的 “认知架构” 或隐藏的提示。
其次,应秉持 “大道至简” 的设计原则。在 LLM 本身就难以调试和评估的背景下,引入额外的复杂性(如不必要的多智能体系统或复杂的 RAG 算法)只会成倍增加调试难度和系统脆弱性。对于许多应用而言,一个设计精良的单主线程智能体,辅以有效的上下文管理和小型模型进行压缩与搜索,往往能取得极其强大且更易维护的效果。
最后,完善的工具支持是不可或缺的。一个健壮的智能体开发生态系统需要集成专门针对 LLM 系统特点的调试、可观测性和评估工具。这些工具能够追踪智能体的令牌使用情况、诊断失败模式、量化性能改进,并支持快速迭代和优化上下文工程实践。它们提供了一个 “良性反馈循环”,帮助工程师识别最佳的上下文工程机会,实施方案,进行测试,并持续改进。
结语:走向成熟的智能体设计#
上下文工程是智能体构建者必须掌握的核心 “手艺”。它超越了单纯的 “提示工程”,成为在动态系统中自动、智能地管理信息的科学。多智能体系统并非一劳永逸的解决方案,而是一个强大但有条件的工具。它的价值在于能够高效处理特定类型的任务,特别是那些高度并行化、读取密集型且信息量远超单一上下文窗口的任务。
未来的智能体设计将是上下文工程与架构权衡的艺术。成功的智能体将是那些能够根据任务特性,灵活运用写入、选择、压缩、隔离等多种上下文工程策略,并在扩展能力与维护系统连贯性、可靠性之间取得精妙平衡的系统。只有这样,我们才能构建出真正智能、高效且可控的 AI 智能体,它们将能够驾驭复杂世界,解决人类尚未企及的问题。
参考阅读#
- Don’t Build Multi-Agents
- How and when to build multi-agent systems
- How we built our multi-agent research system
- Context Engineering
- How to Fix Your Context
- RAG is Dead, Context Engineering is King_ — with Jeff Huber of Chroma
- What makes Claude Code so damn good (and how to recreate that magic in your agent)!
- 逆向工程 Claude Code:学习这些 Agent 技巧