如果你曾在考前一晚疯狂突击,大概体会过那种感觉:书越往后翻,前面几章的内容反而开始模糊。智能体也面临同样的困境。当它接手越来越长的任务,就会不断吞入更多信息——指令、工具返回结果、文件等等。这些内容最终会远远超出模型上下文窗口能舒适容纳的范围。模型携带的历史记录、噪声和工具输出越多,它的准确率和推理能力往往就越差。
在智能体工程领域,这种现象被称为上下文腐烂(context rot)。围绕如何管理智能体的上下文窗口,LangChain 在其开源智能体框架 Deep Agents 中给出了一套解法,核心思路是通过一种叫中间件的机制,把这些技术注入到智能体的运行过程中。
![]()
智能体就是模型加外壳
简化来看,一个智能体不过是被套上了外壳的模型。为应对上下文腐烂,智能体可动用的上下文工程手段主要分为两类:一是阻止不必要的信息进入上下文窗口;二是管理和过滤已经进入窗口的内容。外壳会策略性地运用这些方法,在合适的时机把合适的上下文交给模型。
但要把这套外壳搭建好,说起来容易做起来难,需要大量工作。Deep Agents 是 LangChain 的开源外壳,它用一系列技术把上下文移出活跃窗口——转移到文件、摘要或独立的智能体中,让主智能体只携带自己需要的内容,同时保留在需要时找回原始数据的可能。
具体包含五种技术:
- 卸载:大型工具结果和用户消息被保存到文件系统,模型只看到预览。
- 摘要:当对话接近上下文上限时,较早的消息被压缩成一段摘要。
- 技能:任务相关的知识只在模型判断其相关时才加载。
- 子智能体:嘈杂的工作在独立的上下文窗口中运行,只把结果带回主窗口。
- 长期记忆:智能体学到的东西被保存到文件中,延续到下一次对话。
放到真实场景里看
以一个竞品分析智能体为例。它每周一研究五家竞争对手,并按团队模板撰写报告。单次运行大致是这样的:拉取公司 A 的市场数据导出(数万行);搜索新闻、阅读几篇文章并做笔记;对公司 B 到 E 重复上述步骤;起草报告,根据反馈修改并排版。
到第四步时,这个智能体已经在每一次模型调用中携带了五份原始数据导出、数十条搜索结果和两份过时的草稿。其中大部分内容对最终报告的排版毫无用处。检索方法(RAG 或文件系统搜索)能帮智能体只拉取所需内容,但这只解决了一半问题。即便是一个精准的智能体,也会积累不必要的消息、工具结果和中间产物,所以外壳还必须管理已经进入和围绕上下文窗口的内容。
中间件:把技术挂进运行循环
智能体在一个循环中运行:模型决定做什么,调用工具,读取结果,如此重复直到任务完成。中间件就是接入这个循环特定位置的代码,比如智能体启动前、每次模型调用前后,或每次工具调用前后。在每个接入点,它都能读取上下文并在下一步运行前修改它。本文提到的每一项上下文工程技术,都是挂在某个接入点上的一段中间件。其中大部分是内置的,不需要自己编写中间件就能使用这些技术,除非你想定制某些特定功能。
先看卸载。智能体并不总是需要看到每次工具调用或人类消息返回的全部数据,尤其是数据量很大的时候。比如每次 pull_market_report 工具调用都会返回一份完整的数据导出(数千行),但智能体只需要其中几个数字,因此可以限制模型只看到那几行。
FilesystemMiddleware 在每次工具被调用时运行:当工具结果超过大约 20000 个 token 时,完整结果会在进入对话之前被写入 /large_tool_results/{tool_call_id},模型只看到一段简短预览(开头和结尾几行)以及文件路径。当智能体之后需要公司 B 的季度营收时,它可以用 read_file 在文件中翻页查找。超大的用户/人类消息,比如粘贴的一段通话记录,会以更高的阈值(50000 个 token)得到同样处理,并被保存到 /conversation_history/。
再看摘要。无论怎样努力卸载冗长的工具调用,上下文在长时间运行中还是会逐渐堆积(比如五家公司的搜索、笔记和草稿)。摘要可以用来把智能体的整个上下文窗口压缩成一段关于此前经过的总结,让它能够继续开展研究任务。那些尖峰是大块工具结果/人类消息到达;卸载会在模型看到它们之前把每一个换成简短预览,所以上下文只会小幅增长。摘要则应对缓慢攀升:一旦使用量达到 85%,较早的消息会被压缩成一段摘要,上下文随之回落。SummarizationMiddleware 在每次模型调用前检查 token 使用量:一旦使用量越过阈值,就会触发压缩。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.