AI资讯 / Agent

Agent / 工程

深度智能体如何在不撑爆上下文窗口的情况下保持记忆

LangChain

随着智能体执行越来越长的任务,指令、工具返回结果、文件内容不断堆积,最终超出模型上下文窗口的承载极限,导致推理准确率下降——这一现象被称为「上下文腐化」(context rot)。LangChain 的开源智能体框架 Deep Agents 通过五种上下文工程技术来应对这一问题:将大型工具结果卸载到文件系统并仅向模型展示预览;在上下文接近上限时对旧消息进行摘要压缩;按需加载任务技能;将噪声较多的子任务交给独立上下文的子智能体处理;以及将跨会话的长期记忆持久化到文件。这些技术均以中间件形式嵌入智能体运行循环的关键节点,无需开发者手动编写大量胶水代码。所有记忆文件存储在用户自控的普通文件系统中,切换模型或服务商时历史知识可完整保留。

智能体在执行长周期任务时面临一个结构性困境:每一轮工具调用、每一条用户消息都会向上下文窗口追加新内容,而模型的注意力机制并不会自动过滤无关信息。随着历史记录、工具输出和中间草稿不断累积,模型需要在海量噪声中定位关键信息,推理质量随之下滑。LangChain 将这一现象命名为「上下文腐化」,并将其视为当前智能体工程领域最核心的挑战之一。

Deep Agents 的解决思路是在模型外围构建一个「线束」(harness),通过中间件在智能体运行循环的特定节点介入,在模型调用前后读取并修改上下文内容。中间件可以在工具调用前后、模型调用前后以及会话开始时触发,从而实现对上下文的精细化管理。这种架构将上下文工程逻辑与业务逻辑解耦,开发者无需在每个工具函数内部手动处理裁剪逻辑。

卸载(Offloading)是防止上下文骤增的第一道防线。当工具返回结果超过约 20,000 个 token 时,FilesystemMiddleware 会将完整内容写入文件系统,并仅向模型呈现首尾几行预览及文件路径。以竞品分析智能体为例,每次拉取市场数据导出文件可能包含数万行记录,但智能体当下只需要其中几个关键指标,卸载机制确保原始数据不会占用宝贵的上下文空间,同时在需要时可通过 read_file 工具按需读取。

摘要压缩(Summarization)则负责处理上下文的缓慢攀升。SummarizationMiddleware 在每次模型调用前检测 token 使用率,一旦超过默认阈值 85%,便触发一次独立的 LLM 调用,将较早的消息压缩为单条摘要,同时保留最近消息的原文。被压缩的原始消息会写入会话历史文件,智能体在后续步骤中仍可通过文件读取找回细节。随着任务继续推进,该机制会周期性触发,将上下文使用率反复拉回安全区间。

技能按需加载(Skills)和子智能体(Subagents)分别从「预防信息进入」和「隔离噪声工作」两个维度补充上述机制。技能模块将特定任务的操作知识封装为独立单元,仅在模型判断当前步骤需要时才注入上下文,避免所有指令一次性占满窗口。子智能体则将信息密集型的中间步骤(如大量网页搜索和笔记整理)放在独立上下文中运行,主智能体只接收最终结果,彻底隔离过程噪声。

长期记忆(Long-term Memory)机制让智能体的学习成果跨越单次会话边界。智能体在运行过程中积累的知识、偏好和模板会以普通文件形式保存在用户控制的存储中,下次启动时自动加载。由于存储格式与模型无关,团队在切换底层模型或云服务商时无需迁移历史数据。这一设计也意味着智能体的「记忆」对开发者完全透明,可随时审查或手动编辑。

要点

  • 上下文腐化是长任务智能体准确率下降的根本原因,核心矛盾在于信息持续流入而上下文窗口容量有限
  • Deep Agents 通过卸载、摘要、技能按需加载、子智能体和长期记忆五种中间件技术,将不必要的信息移出活跃上下文而非直接删除
  • 卸载机制针对单次大型工具结果的骤增,摘要机制处理长时间运行中的缓慢累积,两者互补覆盖不同场景
  • 所有记忆和历史数据以普通文件存储在用户自控环境中,切换模型或服务商不会导致历史知识丢失
  • 中间件架构将上下文管理逻辑与业务逻辑解耦,开发者可在不修改工具函数的前提下定制上下文策略
查看原始来源

原始标题:Context Engineering with Deep Agents: How To Remember Without Keeping Everything In Context

本文由 DataHub 基于公开来源整理,用于信息发现与摘要阅读;具体事实、数据和后续更新以原始来源为准。