上下文工程关注每一次模型调用前,如何以可复用、可度量、可迭代的方式拼装上下文,所谓上下文。区别于提示工程,提示工程聚焦于如何写出好的prompt,而上下文工程需要管理prompt、每次调用的tool、MCP、外部数据、记忆等整个上下文策略。

上下文工程目标

在llm运行的过程中,存在上下文腐蚀(context rot)现象:随着窗口增大,随着token越来越多,模型获取信息的能力会退化。也就是说,上下文是一种有限资源,并且存在边际收益递减。优秀的上下文的目标是:用尽可能少、但高信号密度的tokens,最大化获得期望结果的概率。

上下文工程主要内容

系统提示(system Prompt)

系统提示需的目标是能完整勾勒出期望行为的最小必要信息集合。

工具(Tools)

工具定义了智能体与知识、行动空间的通信规范。

示例(Few-shot)

好的示例胜过千言万语,提供多样且典型的示例。

上下文工程常见手段

在智能体的工程实践中,早期人们采用推理前一次性检索,如今已经过渡为“及时上下文”模式,只需要维护知识的轻量化引用载体,如tools、MCP等,在运行过程中通过工具动态加载所需数据来拼接上下文。及时上下文系统要求更多的运行时间,因此实际应用中,采用预加载+及时上下文的混合模式。尤其对于长时程任务,要求智能体在超出上下文窗口的长序列行动中,仍能保持连贯性、上下文一致与目标导向,例如大型项目开发、小说总结等。

压缩整合

当对话接近上下文上限时,需要用当前摘要进行总结,并重启一个新的上下文窗口,保留的内容包括:关键决策和输出、实现细节、未解决缺陷,丢弃的内容包括:重复的工具输出和已过时内容。需要先优化召回,确保不遗漏关键信息,再优化精确度。

智能体记忆

智能体以固定频率将关键上下文进行持久化,再后续阶段按需查询。

子代理架构

将上下文的关注点分离到子agent中分别运行吧,主agent负责整合和推理。