大模型智能体上下文工程:提升性能的三大核心策略

智能体上下文管理新策略!Lance Martin博士分享:减少、隔离、卸载,提升LLM性能。

原文标题:斯坦福博士、LangChain 工程师 Lance Martin 谈上下文工程的 3 种策略!

原文作者:图灵编辑部

冷月清谈:

文章深入探讨了针对大语言模型(LLM)智能体开发中的关键挑战——上下文工程。随着LLM上下文窗口的增大,其性能会因注意力预算消耗而下降,因此精确管理输入信息变得至关重要。斯坦福博士、LangChain工程师Lance Martin结合Manus等智能体实践,分享了提升模型表现的三种核心策略。 这三大策略分别是:减少上下文、隔离上下文和卸载上下文。 减少上下文通过对过期工具结果进行精简或总结,避免信息冗余;隔离上下文利用子智能体拥有独立上下文窗口的特性处理特定任务,同时有策略地共享必要信息;卸载上下文则强调用少量通用工具配合沙箱环境,将复杂操作和工具结果存储至外部,实现操作与数据的解耦。文章最后还提醒开发者警惕『苦涩经验』,即需确保智能体框架足够中立、灵活,以适应和发挥未来更强模型的性能,避免因过度结构化而成为瓶颈。 为智能体提供计算环境(如文件系统和终端)是这些策略的基石。

怜星夜思:

1、文章里提到了『苦涩经验』,就是要让智能体框架保持中立、适应模型升级。但实际开发中,我们总会为了解决眼前的性能问题加一些『捷径』。大家觉得,在追求性能和保持框架灵活性之间,怎么找到那个平衡点?有没有遇到过因为框架限制了后续模型升级性能提升的例子?
2、『卸载上下文』里说,与其给LLM绑定一大堆工具,不如用少量通用工具(比如Bash)加上一个沙箱环境。大家平时是怎么设计自己的工具集的?这种“原子工具+沙箱”模式真的比“大而全的工具库”更好用吗?会不会有些复杂任务反而效率不高?
3、多智能体协作中,规划者和执行者之间上下文的『隔离』与『共享』是个技术活。文章里提到了两种策略:简单任务只传指令,复杂任务共享完整上下文。你们在实际项目中是怎么判断任务复杂度的?有没有因为上下文共享不当导致智能体“迷失”或者效率低下的经历?

原文内容

本文作者 Lance Martin,斯坦福博士、LangChain 工程师。内容整理自他与 Manus 联合创始人纪逸超(Yichao “Peak” Ji)的一次视频分享后的笔记与思考。

在这场对话中,Lance 讨论了一个既重要又常被忽视的话题——上下文工程(Context Engineering),并结合 Manus 等智能体的实践,分享了如何通过更聪明的上下文管理来提升模型表现。

希望这些经验能给你带来启发,无论你是做智能体开发、LangChain 应用,还是单纯对 AI 感兴趣。

为什么需要上下文工程

早些时候,我参加了与 Manus 联合创始人兼首席战略官纪逸超(Yichao “Peak” Ji)的网络研讨会。下面是我的笔记。

Anthropic 将智能体定义为一种系统:“在这种系统中,大模型可以自主管理自己的流程和工具使用,同时掌控完成任务的方式。简单来说,就是 大模型在一个循环中调用各种工具。”

Manus 是目前最受欢迎的通用消费者级智能体之一。一个典型的 Manus 任务通常会调用 50 次工具。如果没有上下文工程,这些工具调用的结果就会不断累积到 LLM 的上下文窗口里。随着上下文窗口变满,很多人发现 LLM 的性能会下降。

举个例子,Chroma 有一项关于上下文衰退的优秀研究,而 Anthropic 也解释过,上下文增长会消耗 LLM 的注意力预算。因此,在构建智能体时,仔细管理哪些信息进入 LLM 的上下文窗口非常重要。Karpathy 对此总结得很清楚:

“上下文工程是一门微妙的艺术与科学,它的核心在于为智能体的下一步行动,精准填充上下文窗口所需的“刚好合适”的信息。”

上下文工程的方法

每次 Manus 会话都会使用一台专用的云端虚拟机,为智能体提供一个虚拟计算环境,包括文件系统、用于操作文件的工具,以及在沙箱环境中执行命令(例如内置工具和标准 shell 命令)的能力。

在这个沙箱中,Manus 使用三种主要的上下文工程策略,这些策略与 Anthropic 提出的方式类似,我在许多项目中也见过:

  • 减少上下文(Reduce Context

  • 卸载上下文(Offload Context

  • 隔离上下文(Isolate Context)

上下文减少

在 Manus 中,每次工具调用都有完整(full)和精简(compact)两种表示方式。完整版本包含工具调用的原始内容(例如完整的搜索结果),并存储在沙箱中(如文件系统)。精简版本则只保存指向完整结果的引用(例如文件路径)。

Manus 会对较老的过期工具结果进行精简处理,也就是用精简版本替换完整结果。这样,智能体仍然可以按需获取完整内容,但通过删除已经被用来决策的过期结果节省了 token。

较新的工具结果会保留完整,以指导智能体的下一步决策。这是一种通用的上下文减少策略,也类似于 Anthropic 的上下文编辑功能:

当上下文接近 token 上限时,上下文编辑会自动清理过期的工具调用和结果,同时保留对话流程,从而延长智能体无需手动干预就能执行任务的时间。

当上下文接近 token 上限时,上下文编辑会自动清理过期的工具调用和结果,同时保留对话流程,从而延长智能体无需手动干预就能执行任务的时间。

当精简达到边际效益递减时(见下图),Manus 会对整个轨迹进行总结。总结是基于完整工具结果生成的,并通过固定的 schema 定义字段,确保为每条智能体轨迹生成一致的摘要对象。

上下文隔离

Manus 对多智能体采用务实策略,不人为划分角色。人类通常按角色组织(设计师、工程师、项目经理),是因为认知能力有限,而 LLM 不一定有这些限制。

因此,在 Manus 中,子智能体的主要目标是隔离上下文。例如,如果有一个任务要完成,Manus 会将任务分配给拥有自己上下文窗口的子智能体。

Manus 使用多智能体系统,包括:

  • 规划者(planner):分配任务

  • 知识管理者(knowledge manager):审核对话并决定哪些内容保存到文件系统

  • 执行者子智能体(executor sub-agent):执行规划者分配的任务

最初,Manus 使用 todo.md 来规划任务,但发现大约三分之一的动作都花在更新任务列表上,浪费了大量 token。后来,他们改为专门的规划者智能体,通过调用执行者子智能体来完成任务。

在一次播客中,Anthropic 的多智能体研究员 Erik Schluntz 提到,他们也用类似方式设计多智能体系统:规划者分配任务,并使用函数调用作为启动子智能体的通信协议。Erik 和 Walden Yan(Cognition)指出,多智能体的一个核心挑战是规划者与子智能体之间的上下文共享。

Manus 解决方式有两种:

  • 简单任务:规划者只需子智能体的输出,直接通过函数调用传递指令即可,类似 Claude Code 的任务工具。

  • 复杂任务:如果子智能体需要写入规划者也会使用的文件,规划者会将完整上下文共享给子智能体。子智能体仍然有自己的操作空间(工具和指令),但可以访问与规划者相同的完整上下文。

无论哪种情况,规划者都会定义子智能体的输出 schema。子智能体通过 submit results工具填写,然后返回给规划者,同时 Manus 使用受限解码保证输出符合预定义格式。

上下文卸载

工具定义

我们希望智能体能执行多种操作。理论上,可以给 LLM 绑定大量工具,并提供详细使用说明。但工具描述会占用宝贵 token,而且工具过多(尤其是重叠或模糊的工具)容易让模型混淆。

一种趋势是,让智能体只使用少量通用工具,从而访问计算环境。例如,仅用 Bash 工具和几个文件系统访问工具,智能体就能执行广泛操作!

Manus 将这一思路视为分层操作空间:函数/工具调用层 + 虚拟计算沙箱。Peak 提到,Manus 使用少量原子函数(<20),包括 Bash、文件系统管理工具、代码执行工具等。

Manus 并不是把所有操作都放在函数调用层,而是把大多数操作卸载到沙箱层。在沙箱中,Manus 可以直接用 Bash 工具执行各种实用工具,MCP 工具也通过 CLI 暴露,智能体同样可以通过 Bash 调用执行。

Claude 的技能功能也是类似思路:技能存储在文件系统中,而不是绑定工具,Claude 只需少量函数调用(Bash、文件系统访问)即可逐步发现和使用技能。

渐进式加载(Progressive disclosure)是智能体技能灵活可扩展的核心原则。就像一本组织良好的手册,先有目录,再有章节,最后附详细附录,技能只在需要时加载,无需一次性全部读入上下文窗口。

工具结果

由于 Manus 可以访问文件系统,它也能卸载上下文(例如工具结果)。这是上下文减少的关键:工具结果被存储到文件系统,以生成精简版本,从而裁剪掉过期 token。类似 Claude Code,Manus 使用基本工具(如 glob 和 grep)搜索文件系统,无需索引(如向量数据库)。

Manus 不固定使用单一模型,而是按任务路由:编程任务可能用 Claude,多模态任务用 Gemini,数学或推理用 OpenAI。总体而言,模型选择主要受成本驱动,KV 缓存效率是核心因素。

Manus 使用缓存(如系统指令、旧工具结果)减少多轮智能体操作的成本和延迟。Peak 提到,分布式 KV 缓存在开源模型中难以实现,但在前沿服务提供商中支持良好。这使得前沿模型在某些智能体场景下更经济。

牢记Bitter Lesson

讨论最后,我们谈到 Bitter Lesson(苦涩经验)。我一直关注它在 AI 工程中的启示。Claude Code 创始人 Boris Cherny 提到,Bitter Lesson 影响了他让 Claude Code 保持中立设计,以便更容易适应模型升级。

持续构建在不断改进的模型之上意味着要接受持续变化。Peak 提到,Manus 自三月发布以来已经重构五次!

此外,Peak 提醒,智能体框架可能限制模型性能提升,这正是 Bitter Lesson 所强调的挑战:为了短期性能添加结构,可能会限制未来计算能力增长时的表现。

为防止这种情况,Peak 建议在不同模型能力下进行智能体评估。如果性能未随更强模型提升,可能是框架在拖慢智能体。这有助于检验你的智能体是否“面向未来”。

Hyung Won Chung(OpenAI/MSL)的相关演讲也强调,随着模型改进,需要持续重新评估框架(如你的 harness/假设)。

根据现有计算和数据添加必要结构,后续再移除,因为这些捷径可能成为进一步提升的瓶颈。

为智能体提供计算环境(文件系统、终端、实用工具)是许多智能体常用的模式,包括 Manus。它支撑了几种上下文工程策略:

卸载上下文(Offload Context)

  • 将工具结果存储到外部:完整结果保存到文件系统,按需用 globgrep 访问

  • 将动作推到沙箱:用少量函数调用(Bash、文件系统访问)执行沙箱中的多种工具,而不是绑定每个工具

减少上下文(Reduce Context)

  • 精简过期结果:用引用(如文件路径)替换旧工具结果,最近结果保持完整指导决策

  • 需要时生成总结:当精简达到边际效益递减,用 schema 对整个轨迹生成总结

隔离上下文(Isolate Context)

  • 用子智能体完成独立任务:子智能体有自己的上下文窗口,主要为了隔离上下文

  • 有意共享上下文:简单任务只传指令,复杂任务共享完整上下文(轨迹 + 文件系统)

最后,要确保你的框架不会限制模型提升。在不同模型能力下测试性能,简单、中立的设计往往更容易适应模型升级。随着模型改进,也不要怕重建智能体(Manus 自三月以来已重构五次)。

大模型图书推荐

塞巴斯蒂安·拉施卡|著;叶文滔 | 译
塞巴斯蒂安·拉施卡|著;覃立波,冯骁骋,刘乾 | 译

包梦蛟,刘如日,朱俊达 | 著

《大模型技术30讲》:以独特的一问一答式风格展开,从最基础的神经网络,到计算机视觉、自然语言处理,再到模型部署与评测,每一讲都围绕一个真实存在的核心问题展开思考与拆解。

《从零构建大模型》如何从零开始构建大模型的指南,通过清晰的文字、图表和实例,逐步指导读者创建自己的大模型。

《从零构建大模型习题解答》:书中内容围绕《从零构建大模型》一书的结构展开,覆盖代码和主要概念问题、批判性思维练习、单项选择题以及答案解析等内容。

《百面大模型》:大模型面试实战的代表之作。作者手把手拆解了真实的大厂大模型面试题。精选约 100 道高频真题,按照“二星到五星”难度划分,覆盖 MoE、预训练、SFT、PEFT、RLHF、DPO、RAG、智能体等关键考点,帮助读者实现从基础认知到深入思考的逐步进阶。

[沙特] 杰伊·阿拉马尔,[荷] 马尔滕·格鲁滕多斯特 | 著;李博杰 | 译

[沙特] 杰伊·阿拉马尔, [荷] 马尔滕·格鲁滕多斯特 | 著;李博杰 孟佳颖 | 译

《图解大模型》备受关注的大模型“袋鼠书”,全书通过 300 幅全彩插图,以极致视觉化的方式呈现大模型的核心原理与工程实现,覆盖从底层机制、应用开发到性能优化的完整链条。内容结合真实数据集、实用项目与典型场景,注重实操性。

《图解DeepSeek》:2 小时搞懂 DeepSeek 底层技术。近 120 幅全彩插图通俗解读,内容不枯燥。从推理模型原理到 DeepSeek-R1 训练,作者是大模型领域知名专家 Jay & Maarten, 袋鼠书《图解大模型》同系列,广受欢迎。

Agent实战营

9 周实战,实现从 0 到 1 打造智能 Agent,从基础原理到工具调用,从协作系统到项目落地,每周直播 + 社群陪跑,明星导师李博杰亲自授课。

随买随学,所有直播都有回放。笔记、资料、拓展学习路线全打包给你。保姆级教程,你只要跟着做就能快速起飞。

AI工程抢读版

上市一周登上亚马逊计算机图书销量榜首,成为开发者与研究者口口相传的实战圣经。

如今,它依旧稳居亚马逊图书销量榜第一,被视为 AI 工程领域的必读之作。

纸质版(139.8 元) + 电子版(69.9 元)原价 209.7 元,限时特惠 139 元


原视频观看地址:

https://www.youtube.com/watch?v=6_BcCthVvb8


哈哈,万能的单一智能体?那不就是科幻电影里的那种超级AI吗?想想都觉得有点怕怕的… 不过说正经的,我觉得多智能体就像玩游戏组队,各有专长,互相配合,能打更难的副本。单个智能体就像个独行侠,可能厉害,但总有罩门。在可预见的未来,任务只会越来越复杂,多智能体的分工和协作能力,特别是它处理特定领域知识和任务的效率,短期内是很难被一个"大而全"的智能体完全取代的。也许最终会是一种融合,有强大的中央智能,但旗下仍有专业团队协同作战。

确实是个难题!我们项目之前就遇到过,为了让某个弱LLM能跑起来,给它搭了一圈特别详细的提示词(Prompt)和逻辑分支。结果后来换了更强的GPT-4,反而发现那些『拐杖』成了负担,模型想自己发挥都受限。最后不得不把一大堆Prompt都给简化了。现在我们学乖了,能少写逻辑就少写,尽量让LLM自由发挥,只给它最小的限制。

这种『原子工具+沙箱』的模式,其核心是实现操作空间的解耦和分层。通过最小化LLM直接调用的API数量,降低其认知负担和工具选择的混淆性。例如,将文件读写、进程执行等基础原语封装成少量工具,而更复杂的业务逻辑则在沙箱内部通过脚本组合实现。这不仅提升了LLM的泛化能力(面对新工具只需了解如何通过Bash调用),也有利于安全沙箱隔离。挑战在于,如何高效地提示LLM理解并组合这些原子操作来完成复杂任务,可能需要更精妙的Prompt工程或CoT(Chain of Thought)。

关于『苦涩经验』,我认为关键在于将核心业务逻辑和通用适配层解耦。框架应提供抽象接口而非具体实现。初期可为验证MVP引入一些优化,但需明确其『技术债』属性,并制定迭代计划在模型能力提升后移除或通用化。例如,为某个特定模型结构定制的Prompt策略,未来遇到新模型时很可能失效,反而拖慢切换成本。

这不就是『打补丁』和『重构』的永恒哲学命题嘛!感觉就像给一个还在长身体的小孩买衣服,买合身的当时舒服,但很快就穿不下了;买宽松的可能现在有点大,但能穿很久。AI模型迭代这么快,咱们框架设计师就像那个给小孩做衣服的,得有点超前的眼光,或者干脆就接受频繁『重构』的命运。反正,不折腾,不成活!

我个人觉得这要看具体场景。如果是那种需要高度自定义、各种奇奇怪怪操作的任务,『原子工具+沙箱』确实灵活,能让LLM像个程序员一样自己写脚本。但如果任务流程相对固定,而且对效率要求很高,比如一个标准的RAG查询流程,直接封装一个包含数据检索和整合逻辑的『大工具』可能会更直接,LLM少一些『思考』环节,效率反而更高。关键是找到那个平衡点,不是非黑即白。

在多智能体系统中,上下文共享并非简单的是与否,而是一个维度的连续体。判断任务复杂度,需要考虑信息依赖的程度、任务分解粒度以及子任务间的耦合性。例如,若子任务产出仅为规划者决策的输入,则可采用轻量级指令传递;若子任务需修改共同工作区(如共享文件系统),则必须共享上下文以确保一致性。避免『迷失』的关键在于明确的责任边界和通信协议,以及在上下文共享时,提供足够的元数据(例如变更日志、版本信息),让LLM能够更好地理解和协调。这可以借鉴传统分布式系统的ACID原则。

哈哈,这不就是命令行爱好者和图形界面用户的区别嘛!原子工具就像Bash,牛批是牛批,但得会玩。大而全的工具库就像各种App,点一点就行。对LLM来说,可能就像个天才程序员,你给它个键盘就够了,太多花哨的API反而碍手碍脚。但这孩子也可能写出Bug来,哈哈。

哈哈,这不就是咱们平时开会一样嘛!小事情就直接交代一句『你帮我把这个表填了』,不用把所有项目背景都讲一遍。但遇到项目大调整,或者需要跨部门协作的复杂任务,总监不把前因后果、目标、目前的困难都捋清楚,我们下面的人肯定也是一头雾水。『上下文共享』对智能体来说,就跟人开会前的『背景介绍』一样重要!要是没讲清楚,智能体肯定也回你一句『不好意思,我没理解您的意思』。