Anthropic如何高效地进行Agent上下文工程

在过去几年里,“提示词工程师”是 AI 领域最热门的词汇之一。我们绞尽脑汁,试图用最精准的措辞、最巧妙的格式来“哄”动 LLM。然而,随着 AI Agent 走向多轮、长周期、高复杂度的任务,这种以“提示词”为中心的开发模式已经迎来了它的自然演进——上下文工程 (Context Engineering)

Anthropic 的工程师团队在其最新文章中,详细解读了这一转变,并为我们提供了一套系统性的 Agent 上下文管理框架。这不仅仅是技术细节,更是一套关于如何将 LLM 视为具备“有限注意力预算”的认知主体的全新心智模型。

1. 核心矛盾:上下文的“稀缺性”与“衰减”

上下文工程的起点,是认识到 LLM 的内在约束

由于 Transformer 架构的 O(n2)O(n^2)O(n2) 注意力机制,以及模型在训练时对短序列的偏好,LLM 并非上下文越长越好。Anthropic 提出了两个关键概念:

  • 注意力预算 (Attention Budget): LLM 像人类一样,工作记忆有限。每一个新 Token 的引入,都会消耗模型的注意力预算。
  • 上下文衰减 (Context Rot): 随着上下文 Tokens 数量的增加,模型对其中信息的准确召回能力会下降。

结论: 上下文是一种珍贵的、有限的资源。高效的上下文工程,意味着找到最小集合、最高信号的 Tokens,来最大化预期的输出结果。

2. 三位一体:重新设计 Agent 的“身体”与“语言”

一个有效的 Agent 上下文,包含三个关键要素,它们都需要从“最小化 Token”的角度重新设计:

2.1 系统提示词:寻找“黄金高度”的指令

优秀的系统提示词既不应是硬编码的、僵硬的(易碎),也不应是模糊不清、过于通用的。Anthropic 称之为“黄金高度”:足够具体以有效指导行为,但又足够灵活,为模型提供强大的启发式(Heuristics)来引导行为。

  • 实践建议: 使用结构化格式(如 XML 或 Markdown 标题)来清晰地界定 <instructions><background_information> 等部分。核心原则是:给出最少的、但足以全面定义预期行为的信息。
2.2 工具:做“精”不做“多”

工具是 Agent 与外部环境交互的桥梁,必须在 Token 效率上进行优化。

  • 要求: 工具应具备自洽性、健壮性,并且功能界限清晰,避免功能重叠
  • 警示: 一个功能臃肿的工具集,会给 Agent 带来“选择困难症”,导致决策模糊,浪费 Token,最终造成性能下降。
2.3 示例:用“规范”而非“穷尽”

Few-shot 示例是提升性能的利器。但开发者常犯的错误是将所有可能的边缘案例堆砌成列表。

  • 正确做法: 策展一组多样化、具有规范性的示例,用少量“图片”高效地传达 Agent 的预期行为,而非试图用冗长的规则去穷尽一切可能。

3. 范式转变:从“预先检索”到“即时探索”

传统的 RAG(检索增强生成)通常在推理前就将所有相关数据打包丢给 Agent。Anthropic 提出了一种更像人类认知的新策略:Agentic 搜索即时上下文 (Just-in-Time Context)

Agent 不再需要将整个知识库“背”下来,而是像人类一样:

  1. 维护索引: Agent 仅持有轻量级标识符(如文件路径、查询 ID、网页链接)。
  2. 动态加载: 在运行时,Agent 根据任务需要,自主使用工具动态加载和检索数据。

这种方法的好处是:高效(只加载需要的)、智能(文件命名、时间戳等元数据能提供重要信号)、渐进式(Agent 通过探索逐步发现相关上下文)。这种设计让 Agent 能够将复杂的任务分解,保持“工作内存”的清晰。

4. 征服长周期任务:Agent 的“记忆术”

对于跨越数小时乃至数天,Token 计数远远超过上下文窗口的复杂任务,Agent 需要专业的记忆管理策略:

记忆机制 目的与原理 关键技巧
1. 压缩 (Compaction) 维持对话流的连贯性,通过总结将旧的、冗长的历史提炼为新的、高效的上下文。 仔细调整压缩提示词,在“保留关键信息”(召回率)和“清除多余细节”(精确率,如清除原始工具输出)之间找到平衡。
2. 结构化笔记 (Note-taking) 赋予 Agent 跨会话的持久记忆。Agent 定期将关键进度、决策、待办事项写入上下文外部的内存文件(如 NOTES.md)。 最小化内存开销,通过外部存储来追踪复杂的项目状态和依赖关系。
3. 子 Agent 架构 (Sub-agents) 分解复杂性。主 Agent 负责高层规划,将专业任务委派给子 Agent。 子 Agent 在自己的干净上下文窗口中深度探索,然后仅向主 Agent 返回精炼的、浓缩的摘要。实现了关注点的清晰分离。

对于超出 LLM 上下文窗口限制的长周期任务,文章提出了三种专业技术:

  1. 压缩 (Compaction):
    • 机制: 在上下文窗口即将达到限制时,将消息历史传递给模型进行总结和压缩,提炼出最关键的细节(如架构决策、未解决的 Bug),然后用这个摘要重新开始新的上下文窗口。
    • 技巧: 小心权衡召回率(保留所有相关信息)和精确率(消除多余内容,例如清除工具调用的原始结果)。
  2. 结构化笔记 (Structured Note-taking):
    • 机制: Agent 定期将笔记(如 To-do List、策略摘要)写入并持久化到上下文窗口外部的内存(例如 NOTES.md 文件),然后在需要时将其拉回上下文。
    • 效果: 提供持久记忆,使 Agent 能够在多次上下文重置中保持任务的连贯性。
  3. 子 Agent 架构 (Sub-agent Architectures):
    • 机制: 将复杂任务分解,由专业化的子 Agent 处理特定焦点任务(使用干净的上下文窗口)。主 Agent 负责高层规划,子 Agent 执行深度技术工作或搜索,并仅返回浓缩、精炼的摘要给主 Agent。
    • 优势: 实现关注点分离,避免主 Agent 的上下文被详细的搜索内容污染,显著提升复杂任务性能。

总结

上下文工程代表着 LLM 开发者角色的转变:我们不再是魔法般的“提示词施法者”,而是高效的上下文策展人

核心指导原则是:永远将上下文视为一种有限而珍贵的资源。无论模型能力如何进步,这种追求“最小 Token,最大信号”的工程心智,都将是构建稳定、可靠、高效 AI Agent 的基石。

现在,是时候审视您的 Agent 上下文配置,告别臃肿的提示词,拥抱高效的策展实践了。

参考资料

  • https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐