面向 AI 智能体的有效上下文工程
要构建有效、可靠的 AI 智能体(Agent),关键在于将“上下文”(Context)视为一种有限且宝贵的资源,并对其进行精心的管理和优化。
1. 从“提示工程”到“上下文工程”的演进
Section titled “1. 从“提示工程”到“上下文工程”的演进”- 提示工程:主要关注如何编写和组织 LLM 的指令(尤其是系统提示)以获得最佳单次输出。
- 上下文工程:是一个更宏观的概念,它关注在 LLM 的整个运行周期中,如何管理和维护进入其“上下文窗口”的所有信息,包括系统提示、工具、外部数据、历史对话等。这是一个持续、迭代的优化过程。
2. 上下文是有限的关键资源
Section titled “2. 上下文是有限的关键资源”- LLM 和人类一样,拥有有限的 “注意力预算” (attention budget)。
- 当上下文窗口中的信息(tokens)过多时,模型的性能会下降,出现 “上下文衰减”(context rot) 现象,即模型难以准确回忆或利用其中的信息。
- 因此,必须精心筛选进入上下文的信息,目标是:用最少、最高效的信息(high-signal tokens)来最大化达成预期结果的可能性。
3.有效上下文的结构
Section titled “3.有效上下文的结构”- 原则:在任何时刻,放入“最小但高信号”的 token 集合,以最大化达成目标的概率。
- 系统提示:把握“合适高度”——足够具体以引导行为,不要用脆弱的硬编码逻辑;结构化分区(背景、指令、工具指引、输出格式);先最小可行,再基于失效模式增补。
- 工具设计:少而精、边界清晰、参数明确、返回信息token高效;避免功能重叠与选择歧义。
- 示例选择:少量、多样、典型的 few-shot 胜过塞满规则与边角案例;示例即高效“行为图片”。
4. 动态与混合式上下文检索
Section titled “4. 动态与混合式上下文检索”- 文章倡导从“预先加载所有信息”转向 “即时”(just-in-time) 的上下文检索策略。
- 智能体不应一次性将所有可能相关的数据都加载到上下文中,而是应该利用工具(如文件系统、数据库查询)在需要时动态地、自主地检索信息。
- 这种方法模仿了人类的认知方式(我们不会记住所有事,而是知道去哪里查找),可以实现 “渐进式信息披露”,让智能体更专注、更高效。在实践中,将预加载与即时检索相结合的 混合策略 通常效果最佳。
5. 处理长时程任务的三大策略
Section titled “5. 处理长时程任务的三大策略”对于超出单个上下文窗口容量的复杂、长期任务,文章提出了三种关键技术:
-
压缩(Compaction):
- 做法:在对话历史接近上下文窗口极限时,让模型对其进行总结和压缩,然后用这个精简的摘要开启一个新的对话窗口。
- 目的:在保留核心信息(如决策、未解决的问题)的同时,丢弃冗余内容,从而实现任务的连贯性。
-
结构化笔记/记忆(Structured Note-taking / Agentic Memory):
- 做法:让智能体在执行任务时,定期将关键信息、待办事项、进度等写入一个外部“记忆体”(如一个
NOTES.md文件),并在需要时读取。 - 目的:为智能体提供持久化记忆,使其能够在多次上下文重置后依然保持对任务的长期追踪和规划能力。
- 做法:让智能体在执行任务时,定期将关键信息、待办事项、进度等写入一个外部“记忆体”(如一个
-
子代理架构(Sub-agent Architectures):
- 做法:将一个复杂任务分解,由一个主代理负责宏观规划和协调,并将具体的、深入的子任务分配给多个专门的子代理去完成。每个子代理在自己的独立上下文中工作,完成后仅向主代理返回一个精炼的总结。
- 目的:实现“关注点分离”,避免主代理的上下文被海量细节淹没,从而高效处理复杂的研究和分析任务。