LangChain 详解 Deep Agents 上下文工程:五种让 Agent 记住信息而不撑爆上下文的机制
LangChain 官方博客 10 月 14 日拆解 Deep Agents 上下文工程:落盘、摘要、技能开箱即用,记忆与子代理一次配置。

LangChain 官方博客 2026-10-14 发布《Context Engineering: How Deep Agents Remember》(作者 Jess Weng),把 Deep Agents 框架的五种上下文管理机制逐一拆开讲了一遍。Deep Agents 是 LangChain 2025 年 7 月底开源的智能体框架,GitHub 仓库自述为「The batteries-included agent harness」,2026-10-15 查看约 30.3k 星、MIT 协议、Python 编写。文章的核心信息是:对付长会话退化的手段大多不必自己写中间件——工具结果落盘、85% 触发摘要、技能渐进加载开箱即用,markdown 长期记忆传一个参数开启,自定义子代理显式传入列表,官方原话是「Most of this is built in」。
要点
- 单条工具结果超过约 2 万 token,框架自动写入文件系统,模型只看到首尾几行预览和文件路径,需要细节时调
read_file取回;超大的用户消息(5 万 token 阈值)同样处理(官方博客,2026-10-14)。 - 上下文用量达到窗口 85%(默认值)时,框架在下一次模型调用前触发摘要:旧消息压缩成摘要、最近消息原样保留,摘要存成 markdown 文件、随时可恢复,且新摘要会把旧摘要包进去,不会越压越丢。
- 这不是一次新功能发布:deepagents 仓库 2025-07-27 创建,LangChain 今年 1 月底就写过 Deep Agents 的上下文管理,8 月 7 日 Managed Deep Agents 宣布公测,本篇是把既有机制整合成一篇方法论。
背景
上下文工程这个话题的起点是一份研究。Chroma 2025-07-14 发布的技术报告《Context Rot》测了 18 个模型(含 GPT-4.1、Claude 4、Gemini 2.5、Qwen3 系列),结论是「Across all experiments, model performance consistently degrades with increasing input length」——任务难度不变,输入变长,性能照样掉,而且掉得不均匀。两个半月后,Anthropic 在 2025-09-29 的工程指南里沿用并推广了 context engineering 一词,本站 2026-09-28 的《Agent 牌桌已变》讲过这层概念:上下文是每轮都在重排的有限资源,管理它是工程问题。LangChain 这篇的位置不同:Chroma 和 Anthropic 回答「为什么要管」,它回答「落地到框架里该怎么管」。
事实部分
Deep Agents 的五种上下文工程机制可以整理成下表(据官方博客 2026-10-14,路径与阈值均为原文数字;哪些默认生效见表后说明):
| 机制 | 触发条件 | 行为与开启方式 |
|---|---|---|
| 工具结果落盘 | 单条工具结果超约 2 万 token;用户消息超 5 万 token | 写入 /large_tool_results/、/conversation_history/ 等路径,模型只见首尾预览加路径,read_file 可取回 |
| 对话摘要 | 每次模型调用前检查,用量达窗口 85% | 另起一次 LLM 调用压缩旧消息,最近消息原样保留;摘要存 /conversation_history/{session_id}.md,也可改为话题切换时触发 |
| 技能加载 | 运行前扫描技能目录 | 只读各技能 SKILL.md 的标题和描述注入系统提示,全文按需加载;官方称十个技能的上下文开销约等于十条单行注释 |
| 子代理 | 遇到噪音大的任务 | 在独立上下文窗口里跑,只回传最终结论;自定义子代理需经 subagents=[…] 显式传入,可指定提示词、工具或更便宜的模型 |
| 长期记忆 | 学到值得跨会话保留的信息 | 需以 memory=[…] 参数开启:写进 markdown 文件(如 /memories/AGENTS.md),运行开始时载入、每次调用注入系统提示;换模型供应商不丢 |
官方博客里最接近设计原则的一句是:「Large inputs should be offloaded, not truncated. Truncation is lossy; offloading keeps it retrievable.」——大输入该外置而不是截断,截断是有损的,外置保留可取回性。五个机制共用这条逻辑:窗口里只留索引和摘要,原文都在文件系统里,丢了能找回来。就开启方式,官方的概括是「Most of this is built in, so you don’t need to write any middleware to use these techniques (unless you want to customize something specific)」——落盘与摘要在默认阈值下自动运行,技能只需指定技能目录,记忆和自定义子代理要各传一次参数。
各方说法
独立的证据两边都有。支持面在 Chroma 的数据:18 个模型实测退化,其中干扰项越多伤害越大,而打乱材料的逻辑顺序反而普遍提分——说明「怎么呈现」比「在不在窗口里」更关键。HN 上(Chroma 报告讨论串,260 分 59 评)实践者的观察更具体:posnet 说 Claude Code「压缩次数越多退化越明显」,重读原文件都比依赖压缩摘要强;zwaps 说 Gemini 远没到窗口上限推理就先垮,「Context engineering is still king, RAG is not dead」。反方的声音也在:blixt 引 Many-Shot ICL 论文提醒「I wouldn’t assume a longer context is always worse」,塞满示例的长上下文有时反而提分,结论取决于具体任务。落地上,NVIDIA 开发者博客 2026 年 7 月的实测是第三方数据:给 Nemotron 3 Ultra 调 Deep Agents 的 harness profile,加自定义中间件、改提示词后,read_file 分页测试从 0/3 修到 3/3,127 分制总评分从 94 提到 96——同一套默认值换个模型,仍要按模型重调。
编辑判断
对正在跑长任务 Agent 的开发者,这篇的用处是一张可以直接对照的机制与阈值清单:如果你的 harness 还在把整段工具输出塞进窗口、把旧对话一压了之,Deep Agents 的五个阈值(2 万 token、5 万 token、85%、SKILL.md 标题扫描、markdown 记忆)给出了业界落地的参照系,自己实现时不必从零拍脑袋。两个诚实的保留意见。其一,官方没有给这套机制的对照基准,NVIDIA 的分数是调优结果而非「默认开与关」的对比,85% 这类数字是经验值而非测出来的最优;Chroma 自己也提醒退化非均匀,换任务、换模型都要重验。其二,markdown 长期记忆走的是最轻的路线,适合个人与中小团队;需要事实带时间窗、过期自动失效的记忆,就得看 Graphiti 这类时序知识图谱方案,两者不是同一档投入。
怎么试
框架装好即用:uv add deepagents,文档在 docs.langchain.com/deepagents。装好后,工具结果落盘、摘要、技能加载默认生效;长期记忆给 create_deep_agent 传 memory=["/memories/AGENTS.md"] 这类参数开启;自定义子代理传入 subagents 列表(官方文档注明默认自带一个通用子代理)。定制入口是对应中间件的提示词、阈值和存储路径;官方博客末尾给的起点就是这个安装命令。