Skip to content

解读文章: Context Engineering for AI Agents: Lessons from Building Manus

应用背景

文章探讨了在人工智能(AI)领域,特别是构建AI智能体(AI Agents)时的核心挑战。其背景是,开发者需要在从头开始训练一个端到端的模型和基于现有前沿大语言模型(LLM)进行“上下文学习”之间做出选择。文章以构建名为“Manus”的AI智能体为例,分享了在不训练新模型的前提下,如何通过精心设计和管理提供给模型的上下文信息(即“上下文工程”),来构建高效、可靠且可扩展的智能体,以解决复杂的、多步骤的任务。

核心思想提炼

  1. 核心理念:上下文工程优于端到端训练 (Context Engineering over End-to-End Training)

    • 类别:战略决策 / 实践经验
    • 阐述:文章明确提出,对于快速迭代的产品,依赖现有大模型的“上下文工程”是比从头训练模型更优越的路径。 这种方法能将开发周期从数周缩短至数小时,并使产品与底层模型的发展解耦,从而能持续受益于整个AI领域的进步。
  2. 关键指标:围绕KV缓存进行设计 (Design Around the KV-Cache)

    • 类别:优化策略
    • 阐述:KV缓存命中率被认为是衡量生产级AI智能体性能最关键的单一指标,直接影响延迟和成本。 为了最大化缓存命中率,上下文的设计应保持前缀稳定且内容仅追加。具体实践包括避免在系统提示的开头加入时间戳等动态内容,并确保数据序列化方式的确定性。
  3. 工具管理:屏蔽工具,而非移除 (Mask, Don't Remove)

    • 类别:优化策略
    • 阐述:当智能体需要使用的工具集很庞大时,动态地从上下文中移除当前不用的工具是一种错误的做法,因为它会破坏KV缓存并让模型对历史记录感到困惑。 更优的策略是保持工具定义不变,通过在解码阶段“屏蔽”不可用工具的logits,来阻止或强制模型选择特定的动作,从而在不破坏上下文稳定性的前提下动态管理可用工具。
  4. 架构创新:将文件系统作为外部上下文 (Use the File System as Context)

    • 类别:架构设计
    • 阐述:LLM的上下文窗口即使再大也有限且昂贵,无法容纳所有信息。文章提出,应将文件系统视为一种容量无限、持久化的外部上下文或记忆体。 智能体可以被训练成按需读写文件,将网页内容等大型数据存入文件,从而在不丢失信息的前提下,保持核心上下文的简洁。
  5. 注意力引导:通过“背诵”来操控注意力 (Manipulate Attention Through Recitation)

    • 类别:实践经验 / 提示工程
    • 阐述:在处理长链条任务时,智能体容易“跑偏”或忘记最初的目标。 文章介绍了一种巧妙的机制:让智能体维护一个任务清单文件(如 todo.md),并在每一步后重写和更新它。 这种行为相当于在上下文的末尾不断“背诵”核心目标,能有效将全局计划拉回模型的近期注意力范围,缓解“迷失在中间”的问题。
  6. 错误处理:保留失败记录以促进学习 (Keep the Wrong Stuff In)

    • 类别:实践经验
    • 阐述:隐藏或清理智能体执行过程中的错误和失败是一种常见的错误倾向。 文章强调,将失败的动作和返回的错误信息保留在上下文中至关重要,因为这些失败记录是模型学习和适应的宝贵证据。 看到失败的尝试能让模型隐式地更新其判断,避免重蹈覆辙,从而实现真正的智能体行为和错误恢复能力。
  7. 泛化能力:避免陷入“少样本”陷阱 (Don't Get Few-Shotted)

    • 类别:优化策略
    • 阐述:在智能体系统中,上下文里充满大量相似的“动作-观察”对(即少样本示例)可能适得其反。 模型会因为模仿这些重复模式而陷入思维定式,导致在需要变通时表现僵化。 解决方法是在上下文中引入结构化的微小变动,如使用不同的序列化模板或措辞,以打破模式的单一性,防止智能体变得脆弱。