Anthropic发布《AI Agent 上下文工程指南》
来源: | 作者:DE.Tech | 发布时间: 2025-10-27 | 36 次浏览 | 分享到:
在人工智能应用领域,提示工程(prompt engineering)曾长期占据焦点地位,而如今一个新兴术语正逐渐崭露头角:上下文工程(context engineering)‍。基于语言模型的构建工作,已不再局限于寻找完美的提示词句,而是转向回答更宏观的问题:“何种上下文工程配置最有可能激发模型产生预期行为?”本文将探讨这一新兴的上下文工程技术,并提供一套精炼的心智模型,用于构建可控且高效的人工智能体(agents)。

    在人工智能应用领域,提示工程(prompt engineering)曾长期占据焦点地位,而如今一个新兴术语正逐渐崭露头角:上下文工程(context engineering)‍。基于语言模型的构建工作,已不再局限于寻找完美的提示词句,而是转向回答更宏观的问题:“何种上下文工程配置最有可能激发模型产生预期行为?”

    上下文(context)指的是从大型语言模型(LLM)采样时所包含的符号(tokens)集合。当前的工程问题在于,如何在LLM固有约束下优化这些符号的效用,以稳定实现目标结果。有效驾驭LLM通常需要具备上下文思维——即综合考虑LLM在任意时刻可获取的整体状态,以及该状态可能引发哪些潜在行为。

本文将探讨这一新兴的上下文工程技术,并提供一套精炼的心智模型,用于构建可控且高效的人工智能体(agents)。

上下文工程 vs. 提示工程

    在Anthropic看来,语境工程是提示工程的自然演进。提示工程专注于编写和组织LLM指令以获取最佳结果(参见我们的文档了解概述及实用策略);而语境工程则是一套在LLM推理过程中策划和维护最优符号(信息)集合的策略,包括提示之外可能进入语境的所有其他信息。

    在LLM工程早期,提示设计是AI工程工作的核心,因为除日常聊天外的大多数用例都需要针对单次分类或文本生成任务优化的提示。正如其名,提示工程主要关注如何编写有效的提示(尤其是系统提示)。然而,随着我们转向构建能够在多轮推理和更长时间跨度中运作的智能体,我们需要管理整个语境状态(系统指令、工具、模型语境协议MCP、外部数据、消息历史等)的策略。

循环运行的智能体会生成越来越多可能与下一轮推理相关的数据,这些信息必须被循环提炼。语境工程正是从不断演化的信息宇宙中,策划哪些内容应进入有限语境窗口的艺术与科学。

为何上下文工程对构建强大智能体至关重要?

    尽管LLM速度迅猛且能处理越来越大的数据量,但我们观察到,它们与人类一样,在某个节点会失去专注力或陷入混乱。针对“大海捞针”式基准测试的研究揭示了上下文衰减(context rot)‍现象:随着语境窗口中符号数量的增加,模型准确回忆语境信息的能力会下降。

    虽然某些模型衰减较缓,但这一特性普遍存在。因此,语境必须被视为边际收益递减的有限资源。与人类有限的工作记忆容量类似,LLM在解析大量语境时消耗着“注意力预算”。每个新引入的符号都会消耗部分预算,从而加剧了精心策划LLM可用符号的必要性。

    这种注意力稀缺源于LLM的架构约束。LLM基于Transformer架构,其中每个符号都可以关注整个语境中的其他符号,形成n²对关系(n为符号数)。随着语境长度增加,模型捕捉这些关系的能力被稀释,导致语境规模与注意力聚焦之间存在天然张力。此外,模型的注意力模式源自训练数据分布(其中短序列通常更常见),意味着模型对跨语境依赖的经验较少且专用参数不足。

    位置编码插值等技术通过让模型适配原始训练的小语境来处理更长序列,但会削弱符号位置理解。这些因素形成了性能梯度(而非硬性悬崖):模型在长语境中仍高度可用,但在信息检索和长程推理上的精度可能低于短语境表现。

这些现实意味着,深思熟虑的语境工程对于构建强大智能体至关重要。

高效上下文的构成

    鉴于LLM受限于有限的注意力预算,优秀的语境工程意味着找到最小的高信号符号集合,以最大化实现目标结果的可能性。实施这一实践知易行难,以下我们将阐述该指导原则在不同语境组件中的具体含义。

    系统提示应极其清晰,使用简单直接的语言,适合智能体的高度呈现思想。合适的高度是两种常见故障模式间的“金发女孩区”(Goldilocks zone)。一端是工程师在提示中硬编码复杂脆弱的逻辑以激发精确行为,这会带来脆弱性并增加维护复杂度;另一端是提供模糊的高层指导,无法给LLM输出预期提供具体信号或错误假设共享上下文。最优高度需平衡:足够具体以有效引导行为,又足够灵活以提供强启发式引导。

    我们建议将提示组织成不同区块(如<背景信息>、<指令>、##工具指导、##输出描述等),并使用XML标签或Markdown标题等技术划分这些区块——尽管随着模型能力提升,提示的确切格式可能越来越不重要。

    无论如何构建系统提示,都应追求最小信息集以完整概述预期行为(注:最小不一定意味着短,仍需提供足够信息确保智能体遵守预期行为)。最好从测试最小提示开始,基于初始测试发现的故障模式添加清晰指令和示例以改进性能。

    工具让智能体与环境交互并在工作中引入新的额外语境。由于工具定义了智能体与其信息/行动空间之间的契约,因此工具必须提升效率:既返回符号高效的信息,又鼓励高效的智能体行为。

    在《用AI智能体编写AI智能体工具》中,我们讨论了构建LLM易于理解且功能重叠最少的工具。类似设计良好的代码库函数,工具应自包含、健壮且用途极其清晰。输入参数同样应具描述性、明确且发挥模型固有优势。

    最常见的故障模式是工具集臃肿,覆盖过多功能或导致使用哪个工具的模糊决策点。如果人类工程师无法确定特定情境下应使用哪个工具,就不能期望AI智能体做得更好。正如后文将讨论的,为智能体策划最小可行工具集还能在长交互中实现更可靠的语境维护和修剪。

    提供示例(即少样本提示)是众所周知的最佳实践,我们持续强烈建议。但团队常将一长串边缘案例塞入提示,试图阐明LLM执行特定任务应遵循的所有可能规则。我们不推荐此做法,而是建议策划一组多样化的规范示例,有效描绘智能体的预期行为。对LLM而言,示例是“一图胜千言”的“图片”。

    我们对语境各组件(系统提示、工具、示例、消息历史等)的总体指导是:深思熟虑,保持语境信息丰富且紧凑。现在让我们深入探讨运行时动态检索语境。

上下文检索与智能体搜索

    在《构建高效AI智能体》中,我们强调了基于LLM的工作流与智能体的区别。自该文发布以来,我们倾向于一个简单的智能体定义:在循环中自主使用工具的LLM。与客户合作中,我们见证领域正汇聚于这一简单范式。随着底层模型能力增强,智能体的自主性水平可扩展:更聪明的模型让智能体能独立导航细致问题空间并从错误中恢复。

    我们看到工程师设计智能体语境的方式正在转变。如今,许多AI原生应用采用某种基于嵌入的推理前检索,以为智能体推理浮现重要语境。随着领域转向更智能体化的方法,团队越来越多地用“即时”(just in time)语境策略增强这些检索系统。

    采用“即时”方法构建的智能体并非预先处理所有相关数据,而是维护轻量标识符(文件路径、存储查询、网页链接等),并使用这些引用在运行时通过工具动态加载数据到语境中。Anthropic的智能体编码方案Claude Code采用此方法对大型数据库执行复杂数据分析。模型可编写定向查询、存储结果,并利用head和tail等Bash命令分析大量数据,而无需将完整数据对象加载到语境中。此法仿效人类认知:我们通常不记忆整个信息库,而是引入外部组织和索引系统(如文件系统、收件箱、书签)来按需检索相关信息。

    除存储效率外,这些引用的元数据提供了高效优化行为的机制(无论明确提供还是直观感知)。对在文件系统中操作的智能体,tests文件夹中名为test_utils.py的文件与src/core_logic.py中同名文件隐含不同目的。文件夹层次、命名约定和时间戳都提供重要信号,帮助人类和智能体理解如何及何时利用信息。

    让智能体自主导航和检索数据还支持渐进式披露(progressive disclosure)——即允许智能体通过探索逐步发现相关语境。每次交互产生指导下一决策的语境:文件大小暗示复杂性;命名约定提示目的;时间戳可作相关性代理。智能体能层层组装理解,仅在工作记忆中维护必要内容,并利用笔记策略实现额外持久性。这种自我管理的语境窗口使智能体聚焦相关子集,而非淹没在详尽但可能无关的信息中。

    当然,存在权衡:运行时探索比检索预计算数据慢。不仅如此,还需要经过深思熟虑的工程化,确保LLM拥有有效导航其信息景观的正确工具和启发式方法。缺乏适当引导,智能体可能因误用工具、追逐死胡同或未能识别关键信息而浪费语境。

    某些场景下,最有效的智能体可能采用混合策略:为速度预先检索部分数据,并自主决定进一步探索。“合适”自主水平取决于任务。Claude Code是采用此混合模型的智能体:CLAUDE.md文件被简单预先放入语境,而glob和grep等原语让其能导航环境并即时检索文件,有效规避过期索引和复杂语法树问题。

    混合策略可能更适合内容动态性较低的语境(如法律或金融工作)。随着模型能力提升,智能体设计将趋向让智能模型智能行动,逐步减少人工策划。鉴于领域快速发展,“做最简单有效的事”可能仍是我们对基于Claude构建智能体的团队的最佳建议。

长周期任务的上下文工程

    长周期任务要求智能体在符号数超过LLM语境窗口的动作序列中保持连贯性、语境和目标导向行为。对于持续数十分钟到数小时的任务(如大型代码库迁移或综合研究项目),智能体需要专门技术来规避语境窗口大小限制。

    等待更大语境窗口似是明显策略。但可预见的是,所有尺寸的语境窗口都可能受语境污染和信息相关性问题的困扰——至少在对智能体性能要求极高的情境中如此。为让智能体在扩展时间跨度中有效工作,我们开发了几种直接应对这些语境污染约束的技术:压缩(compaction)‍、结构化笔记(structured note-taking)‍和多智能体架构(multi-agent architectures)‍。

压缩
    压缩是对接近语境窗口限制的对话进行总结,并用该总结重新初始化新语境窗口的实践。压缩通常是语境工程中提升长期连贯性的首要手段。核心在于,压缩以高保真方式蒸馏语境窗口内容,使智能体能以最小性能降级继续工作。

    例如在Claude Code中,我们通过将消息历史传递给模型来总结和压缩最关键细节。模型保留架构决策、未解决漏洞和实施细节,同时丢弃冗余工具输出或消息。智能体随后可带着压缩后的语境及最近访问的五个文件继续工作。用户获得连续性,无需担心语境窗口限制。

    压缩的艺术在于选择保留与丢弃的内容,因为过度压缩可能导致细微但关键的语境丢失(其重要性可能后期才显现)。对实施压缩系统的工程师,我们建议在复杂智能体轨迹上精心调整提示:先最大化召回确保压缩提示捕获轨迹中所有相关信息,然后迭代提高精度,消除冗余内容。

    低垂的冗余内容示例是清除工具调用和结果——一旦工具在消息历史深处被调用,智能体为何需要再次查看原始结果?最安全轻量的压缩形式是工具结果清除,最近作为功能在Claude开发者平台发布。

结构化笔记
    结构化笔记(或称智能体记忆)是一种智能体定期编写笔记并持久化到语境窗口外记忆的技术。这些笔记后期被拉回语境窗口。

    此策略以最小开销提供持久记忆。如同Claude Code创建待办列表,或自定义智能体维护NOTES.md文件,这一简单模式让智能体能跟踪复杂任务进度,保持跨大量工具调用本会丢失的关键语境和依赖。

    Claude玩Pokémon展示了记忆在非编码领域如何转变智能体能力。该智能体在数千游戏步骤中保持精确计数——跟踪诸如“过去1234步我一直在Route 1训练Pokémon,Pikachu已向目标10级提升8级”等目标。无需任何记忆结构提示,它开发了已探索区域地图,记住已解锁的关键成就,并维护战斗策略的战略笔记以学习哪些攻击对不同对手最有效。

    语境重置后,智能体阅读自身笔记并继续数小时的训练序列或地下城探索。这种跨总结步骤的连贯性实现了长周期策略,而仅将一切保留在LLM语境窗口中是不可能的。

    作为Sonnet 4.5发布的一部分,我们在Claude开发者平台公开测试了记忆工具,通过基于文件的系统更易存储和查询语境窗口外的信息。这让智能体能随时间积累知识库,跨会话维护项目状态,并引用先前工作而无需将所有内容保留在语境中。

子智能体架构
    子智能体架构提供了另一种规避语境限制的方法。不同于一个智能体尝试维护整个项目状态,专用子智能体可用干净的语境窗口处理聚焦任务。主智能体用高层计划协调,子智能体执行深度技术工作或使用工具查找相关信息。每个子智能体可能广泛探索,使用数万或更多符号,但仅返回其工作的浓缩摘要(通常1000-2000符号)。

    此法实现了关注点分离——详细搜索语境保留在子智能体内,而主导智能体专注于综合和分析结果。此模式在《我们如何构建多智能体研究系统》中讨论,显示在复杂研究任务上较单智能体系统有显著改进。

这些方法的选择取决于任务特性。例如:

  • 压缩适用于需要大量来回交流的任务以保持对话流;

  • 笔记记录适用于具有清晰里程碑的迭代开发;

  • 多智能体架构处理并行探索收益显著的复杂研究和分析。

即使模型持续改进,在扩展交互中保持连贯性的挑战仍将是构建更有效智能体的核心。

结论

    语境工程代表了我们构建LLM方式的根本转变。随着模型能力增强,挑战不仅是 crafting 完美提示——而是深思熟虑地策划哪些信息在每一步进入模型的有限注意力预算。无论您是为长周期任务实施压缩、设计符号高效的工具,还是让智能体即时探索环境,指导原则不变:找到最小的高信号符号集合,以最大化目标结果的可能性。

我们概述的技术将随模型改进而持续演化。我们已经看到,更聪明的模型需要更少的规定性工程,允许智能体以更高自主性运作。但即使能力扩展,将语境视为宝贵有限资源仍将是构建可靠有效智能体的核心。

立即在Claude开发者平台开启您的语境工程之旅,并通过我们的记忆和语境管理手册获取有用提示和最佳实践。

致谢

由Anthropic应用AI团队撰写:Prithvi Rajasekaran、Ethan Dixon、Carly Ryan和Jeremy Hadfield,团队成员Rafi Ayub、Hannah Moran、Cal Rueb和Connor Jennings贡献。特别感谢Molly Vorwerck、Stuart Ritchie和Maggie Vo的支持。


注:数据公开发布,版权出版方所有,不构成任何投资建议
返回