视频解析
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)”,信任模型能力的进化,同时用工程手段为其扫清障碍,是未来的方向。