Anthropic如何高效地进行Agent上下文工程
本文探讨了AI Agent开发从提示词工程向上下文工程的演进。Anthropic团队提出LLM存在"注意力预算有限"和"上下文衰减"的核心约束,强调上下文是珍贵资源。高效上下文工程需聚焦三个要素:精简的系统提示词、功能明晰的工具集和规范化的few-shot示例。文章建议采用"即时探索"策略替代传统RAG,并提出三种长周期任务处理技术(压缩
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 不再需要将整个知识库“背”下来,而是像人类一样:
- 维护索引: Agent 仅持有轻量级标识符(如文件路径、查询 ID、网页链接)。
- 动态加载: 在运行时,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 上下文窗口限制的长周期任务,文章提出了三种专业技术:
- 压缩 (Compaction):
- 机制: 在上下文窗口即将达到限制时,将消息历史传递给模型进行总结和压缩,提炼出最关键的细节(如架构决策、未解决的 Bug),然后用这个摘要重新开始新的上下文窗口。
- 技巧: 小心权衡召回率(保留所有相关信息)和精确率(消除多余内容,例如清除工具调用的原始结果)。
- 结构化笔记 (Structured Note-taking):
- 机制: Agent 定期将笔记(如 To-do List、策略摘要)写入并持久化到上下文窗口外部的内存(例如
NOTES.md文件),然后在需要时将其拉回上下文。 - 效果: 提供持久记忆,使 Agent 能够在多次上下文重置中保持任务的连贯性。
- 机制: Agent 定期将笔记(如 To-do List、策略摘要)写入并持久化到上下文窗口外部的内存(例如
- 子 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
更多推荐

所有评论(0)