跳转至

LangGraph 上下文工程

概述

Lance Martin(LangChain)是业界最积极梳理上下文工程(Context Engineering)模式的声音之一。他的博客文章、Meetup 演讲,以及 open-deep-research 参考实现,共同构成了 LangGraph 在生产环境智能体中进行上下文管理的实践框架。

核心理念:上下文工程是提示词工程的自然延伸,驱动力在于任务形态的转变——从单次调用,到跨多轮累积工具调用反馈的长时运行智能体。

四策略框架

Martin 将上下文工程归纳为四类操作——写入(write)、筛选(select)、压缩(compress)、隔离(isolate)——与常用策略中记录的五大策略高度吻合。这一框架来源于对大量生产环境智能体的规律性观察:

"上下文工程是一门艺术,也是一门科学——在智能体运行轨迹的每一步,将恰当的信息填入上下文窗口。" — Lance Martin,引用自 Andrej Karpathy

LLM 即操作系统的类比:LLM 是 CPU,上下文窗口是 RAM,上下文工程则扮演操作系统的角色——负责管理进入工作记忆(working memory)的内容。

open-deep-research:参考实现

open-deep-research 项目(博客文章)是 LangChain 的开源参考实现,在单个智能体中展示了四种策略的协同运作:

卸载(Offload):将摘要保存至状态

智能体从初始对话中生成结构化摘要,并将其保存至状态(位于活跃上下文窗口之外)。该摘要在后续的写作与研究阶段被检索调用——这是"先写入、后检索"上下文管理模式的典型范例。

缩减(Reduce):汇总工具调用结果

每个研究子智能体完成工作后,其原始工具调用输出和观察结果会先被汇总,再向后传递。这可防止 Token 消耗量大的搜索结果在主上下文中持续堆积。

隔离(Isolate):跨子智能体拆分上下文

研究任务被分解并分发给各子智能体,每个子智能体拥有各自独立的上下文窗口。子智能体返回压缩后的摘要,而非完整的执行轨迹。

关键设计决策(来自 Meetup 演讲)

  • 压缩存在信息损失风险,应优先选择卸载:在压缩与卸载之间拿不准时,卸载更安全,因为它可以还原。压缩存在不可逆的信息损失风险。
  • 多智能体的协调问题是真实风险:open-deep-research 中的子智能体被刻意限制了决策权——它们不会做出可能与主智能体上下文冲突的决策。这直接回应了 Cognition 提出的担忧(参见 Devin)。

DeepAgent:将摘要化作中间件

LangGraph 构建 DeepAgent 时,将摘要化(summarization)作为智能体轮次之间的专属中间件层。与其让主 LLM 自行管理上下文,不如在每轮新任务开始前,用一个独立的摘要化步骤来处理已积累的历史记录。相比 Claude Code 基于阈值触发的自动压缩机制,这是一种结构更清晰的方案。

面向智能体的上下文工程——博客文章

Martin 的 2025 年 6 月博客文章提供了迄今最全面的公开上下文工程策略分类,援引了来自以下系统的案例:

  • Anthropic 多智能体研究员(草稿本、上下文隔离)
  • Claude Code(自动压缩摘要)
  • Cognition/Devin(智能体间交接时的摘要化)
  • HuggingFace CodeAgent(基于环境的上下文隔离)
  • Windsurf(多方法代码检索)
  • ChatGPT、Cursor、Windsurf(长期记忆模式)

记忆筛选核心洞察:"部分流行智能体仅使用少量始终加载到上下文中的固定文件。"Claude Code 使用 CLAUDE.md,Cursor 和 Windsurf 使用规则文件。对于更大规模的记忆集合,会借助嵌入(embeddings)和知识图谱进行索引,但筛选问题依然颇具挑战。

工具 RAG 核心洞察:当工具数量较多时,对工具描述应用 RAG 来获取最相关工具,可将工具选择准确率提升约 3 倍。

检索上下文:Windsurf 的方案

Martin 引用了 Varun(Windsurf)对大规模代码检索复杂性的描述:

"代码索引 ≠ 上下文检索……随着代码库规模增长,嵌入搜索的可靠性会下降……我们必须综合运用 grep/文件搜索、基于知识图谱的检索以及重排序(re-ranking)等多种技术。"

这说明面向智能体的检索并非已解决的问题——它需要将语义搜索、结构化解析(AST)与重排序相结合的多层次方案。

最佳实践

领域 建议
压缩 vs. 卸载 信息损失风险较高时优先卸载;冗余或中间输出可使用压缩
子智能体设计 将子智能体的职责限定在回答问题,而非做出决策,以避免上下文冲突
工具管理 当工具数量超过约 30 个时,对工具描述应用 RAG
长期记忆 对程序性/情景性记忆使用少量始终加载的固定文件(CLAUDE.md 模式);对更大规模的语义记忆库使用嵌入
摘要化 将摘要化作为独立的专属阶段并配套评测数据,而非事后补充的附属步骤

参见

参考资料