
视频解析
LangChain 的创始工程师 Lance 和 Manus 的联合创始人兼首席科学家 Pete 在一场深度研讨会中,详细探讨了 上下文工程 的概念、策略以及在生产环境中的实战经验。这是一篇基于视频的解读文章。
视频链接: www.youtube.com/watch?v=6_B...
什么是上下文工程?
在构建复杂的 AI Agent(智能体)时,随着工具调用和交互的增加,上下文窗口(Context Window)的迅速膨胀成为了一个核心挑战。
上下文工程被定义为"一门在上下文窗口中填充下一步所需恰当信息的精妙艺术与科学"。
随着 Agent 运行时间的增长,工具调用的观察结果(Observation)会不断堆积,导致上下文"爆炸"。研究表明,随着上下文长度的增加,模型的推理性能会下降(被称为 "Context Rot")。因此,如何管理这些信息,确保 Agent 在每一步都能获得最准确的信息而不被无关噪音干扰,就是上下文工程要解决的问题。
核心策略:管理上下文的四大支柱
Lance 总结了目前业界(包括 Manus、Deep Agents、Open Deep Research 等项目)通用的四种处理上下文的主流模式:
1. 上下文卸载 (Context Offloading)
- 核心理念:不需要将所有信息都保留在消息历史(Message History)中。将信息移出上下文窗口,存储到外部位置(如文件系统),仅在需要时检索。
- 实践:例如,Agent 进行网页搜索后,不将冗长的 HTML 内容直接塞回对话历史,而是将其转存为文件,仅返回文件路径或简要摘要给 Agent。
- 优势:防止 Token 消耗过快,避免无关信息干扰模型决策。
2. 上下文缩减 (Context Reduction)
- 核心理念:对信息进行压缩或修剪。
- 压缩 (Compaction) :这是 Manus 强调的一个重要概念。它是可逆的。例如,如果 Agent 写入了一个文件,由于文件已存在于文件系统中,历史记录中的"写入内容"参数可以被移除,只保留"文件路径"。如果 Agent 以后需要内容,它可以去读取文件。
- 摘要 (Summarization) :这是不可逆的。将多次工具调用的结果概括为一段话。Pete 建议在上下文即将达到模型性能衰退阈值(通常在 128k-200k tokens 左右)时触发,且应优先使用压缩,再使用摘要。
3. 上下文检索 (Context Retrieval)
- 核心理念:按需取回信息。
- 手段 :
- 语义搜索/索引:适合长期记忆或企业知识库。
- 文件系统搜索 :Manus 和 Claude Code 更倾向于使用简单的 Linux 工具(如
grep,glob)进行实时检索,因为对于代码或临时任务,构建向量索引可能太慢且不必要。
4. 上下文隔离 (Context Isolation)
- 核心理念:通过多 Agent 架构拆分上下文。每个子 Agent 拥有独立的上下文窗口,只关注分派给它的任务。
- 模式 :
- 通过通信共享内存:主 Agent 将完整上下文作为参考传给子 Agent(适合复杂任务,如深度研究)。
- 通过共享内存通信:主 Agent 只给子 Agent 发送明确指令,子 Agent 从零开始(适合简单任务,如"在代码库中查找某段代码")。
Manus 的实战经验:分层动作空间 (Layered Action Space)
Manus 的 Pete 分享了他们在构建通用 Agent 时的一个创新设计------分层动作空间,旨在解决工具过多导致的模型困惑。
-
Level 1: 函数调用 (Function Calling)
- 这是最底层,仅保留 10-20 个原子化的核心工具(如读写文件、执行 Shell 命令、基础搜索)。
- 这些工具具有严格的 Schema 约束,确保稳定性。
-
Level 2: 沙箱工具 (Sandbox Utilities)
- 利用 Agent 运行在虚拟机(VM)中的特性,预装大量 Linux CLI 工具(如格式转换器、
grep、curl)。 - Agent 通过 Shell 命令调用它们,而不是通过 LLM 的 Function Calling 接口。这极大地扩展了能力而不占用上下文中的工具定义空间。
- 利用 Agent 运行在虚拟机(VM)中的特性,预装大量 Linux CLI 工具(如格式转换器、
-
Level 3: 包与 API (Packages and APIs)
- 允许 Agent 编写 Python 脚本来调用复杂的外部 API 或库(如处理 Excel、金融数据)。
- 这种方式利用了代码的可组合性,可以在一个步骤中完成"获取数据 -> 处理数据 -> 生成图表"的复杂流程,而无需多次往返交互。
避坑指南与最佳实践
1. 避免"过度工程" (Over-Engineering)
Pete 强调,Manus 最大的性能提升往往来自于做减法。随着基础模型能力的提升,许多复杂的上下文管理技巧或检索 Hack 可以被移除。上下文工程的目标是让模型的工作更简单,而不是架构更复杂。
2. 评估 (Evaluation) 的金标准
虽然学术基准测试(如 GAIA)有参考价值,但在生产环境中,用户反馈(1-5星评分) 是唯一的金标准。此外,Manus 使用"实习生"进行大量人工评估,特别是针对视觉生成等难以自动化的任务。
3. 规划 (Planning) 的演进
Manus 从最初简单的 todo.md 文件(容易浪费大量 Token 进行更新),进化到了使用专门的 Planner Agent。这个规划 Agent 拥有独立的视角,负责生成结构化的计划,并监督执行进度。
4. 模型选择与成本
并不一定非要使用开源模型来降低成本。对于长上下文 Agent,KV Cache(键值缓存)的复用至关重要。头部厂商(如 Anthropic)提供的基础设施和 Prompt Caching 功能,在综合算账后可能比自建开源模型服务更便宜且更稳定。
结语
上下文工程是当前构建高效 AI Agent 的关键。无论是通过卸载 和缩减 来"节流",还是通过检索 和隔离来"开源",核心目的都是为了在有限的计算资源和模型注意力窗口内,实现最精准的任务执行。正如 Pete 所言:"建立更少,理解更多 (Build less, understand more)",信任模型能力的进化,同时用工程手段为其扫清障碍,是未来的方向。