AI 智能体的上下文工程:来自Manus 经验分享
Update: 2025-07-24
Description
Manus 博客原文:AI代理的上下文工程:构建Manus的经验教训
Manus 项目通过语境工程(Context Engineering)解决了AI智能体开发和运行中的多项关键挑战,并积累了宝贵的经验,这些经验对未来的AI智能体开发具有重要启示。
以下是Manus项目通过语境工程解决的主要挑战及其具体做法:
- 应对模型迭代周期慢和产品与底层模型耦合过深的问题:挑战:在早期的自然语言处理(NLP)中,模型需要经过数周的微调和评估才能适应新任务,这种缓慢的反馈循环对于快速迭代的应用是不可接受的。
解决方案:Manus 选择押注语境工程,而非训练端到端的代理模型。这使得产品改进能够从数周缩短到数小时,并使产品独立于底层模型,就像“潮水上涨(模型进步),我们希望Manus是船,而不是扎根海底的柱子”。 - 优化延迟和成本问题:挑战:AI智能体在每次迭代中上下文会不断增长,导致预填充(prefilling)与解码(decoding)的比率高度倾斜(例如Manus中输入与输出的令牌比约为100:1),这会显著增加延迟和推理成本。
解决方案:围绕KV-缓存进行设计,提高KV-缓存命中率。具体实践包括:保持提示前缀的稳定:避免在系统提示开头包含动态时间戳,因为即使单个令牌的差异也可能使缓存失效。
确保上下文仅支持追加:避免修改先前的动作或观察,并确保序列化过程是确定性的,以防止无意中破坏缓存。
在需要时显式标记缓存断点:确保断点至少包含系统提示的结尾,并考虑缓存过期。
在自托管模型时,确保启用前缀/提示缓存,并使用会话ID在分布式工作器之间一致路由请求。 - 管理日益增长的动作空间和防止模型选择错误动作:挑战:随着智能体能力的增强,其动作空间(工具数量)会变得越来越复杂,模型更容易选择错误的动作或采取低效路径。动态添加或删除工具会导致KV-缓存失效和模型混淆。
解决方案:采用“遮蔽而非移除”策略。Manus使用上下文感知的状态机来管理工具可用性,并通过在解码期间遮蔽令牌逻辑(token logits)来防止(或强制)选择特定动作。这可以通过响应预填充(response prefill)来实现,支持自动(Auto)、必选(Required)和指定(Specified)三种函数调用模式。此外,通过设计带有一致前缀的动作名称(例如,所有浏览器相关工具都以browser_
开头),可以在不使用有状态逻辑处理器的情况下,轻松地在给定状态下强制智能体从特定工具组中进行选择。 - 克服上下文窗口限制、性能下降和长输入的高成本:挑战:即使现代LLM提供大上下文窗口,但在实际智能体场景中仍可能不够用,且长输入成本高昂,模型性能在一定上下文长度后会下降。传统的截断或压缩策略会导致信息丢失,并且无法可靠预测未来关键的观察。
解决方案:将文件系统作为终极上下文。Manus将文件系统视为无限大小、持久且可由智能体直接操作的外部化内存。模型学会按需写入和读取文件,将文件系统不仅作为存储,还作为结构化的外部化记忆。Manus的压缩策略都是可恢复的,例如,网页内容可以从上下文中删除,只要保留URL,文档内容可以省略,只要其路径在沙盒中可用。 - 解决长期任务中目标漂移和“中间信息丢失”问题:挑战:在涉及平均约50次工具调用的复杂任务中,智能体容易偏离主题或忘记早期目标,尤其是在长上下文或复杂任务中。
解决方案:通过“复述”操纵注意力。Manus会不断地重写和更新一个todo.md
文件,逐步检查已完成的项目。这种“复述”行为将全局计划推送到模型的近期注意力范围,从而避免“中间信息丢失”问题并减少目标错位。这有效地利用自然语言来偏置模型的焦点,使其专注于任务目标,而无需特殊的架构更改。 - 提高智能体的错误恢复和适应能力:挑战:智能体在多步骤任务中失败是常态,但常见的做法是隐藏错误(清理痕迹、重试或重置状态),这使得模型无法从错误中学习和适应。
解决方案:“保留错误的尝试”。当模型看到失败的动作及其产生的观察或堆栈跟踪时,它会隐式地更新其内部信念,从而减少重复相同错误的机会。Manus认为错误恢复是真正智能体行为最清晰的指标之一。 - 避免因上下文模式重复导致的过拟合和行为僵化:挑战:少样本提示(Few-shot prompting)在智能体系统中可能适得其反,因为语言模型擅长模仿上下文中的行为模式,这可能导致智能体陷入重复、漂移、过度泛化甚至幻觉。
解决方案:增加多样性。Manus在动作和观察中引入少量结构化变体(例如,不同的序列化模板、替代措辞、顺序或格式上的微小噪声)。这种受控的随机性有助于打破模式,调整模型的注意力,防止智能体“陷入困境”。
对未来AI智能体的启示:
- 语境工程是智能体系统的核心:模型能力再强,也无法替代对记忆、环境和反馈的需求。智能体的运行速度、恢复能力和扩展性最终都取决于如何塑造其上下文。
- 学习是一个实验性的科学过程:语境工程是一个“随机梯度下降”的过程——涉及架构搜索、提示调整和经验性猜测,它不是优雅的,但行之有效。
- 文件系统作为通用上下文的潜力:将文件系统作为外部化记忆,提供无限大小和持久性,这对于处理大规模非结构化数据和长期的智能体任务至关重要。
- 状态空间模型(SSM)的未来展望:如果SSM能够掌握基于文件的内存,将长期状态外部化而非保存在上下文中,那么它们的速度和效率可能解锁新型智能体,并有望成为神经图灵机的真正继任者。
- 通过自然语言进行模型控制:通过不断将目标“复述”到上下文末尾,可以在不改变底层架构的情况下,使用自然语言来偏置模型的注意力和焦点。
- 重视错误恢复能力:智能体在实际应用中会犯错,将失败的尝试保留在上下文中,让模型从错误中学习并适应,是衡量真正智能体行为的关键指标。学术界和基准测试应更加关注这一领域。
- 避免“少样本陷阱”:过度统一的上下文会使智能体变得脆弱。通过引入多样性来打破重复模式,有助于智能体保持灵活性和适应性。
- 真实世界测试的重要性:Manus的经验是经过数百万用户的真实世界测试积累的,这表明实际部署和用户反馈对于发现有效模式至关重要。
总而言之,Manus项目的语境工程经验表明,AI智能体的智能不仅仅取决于底层模型的能力,更在于如何巧妙地管理和塑造其与环境交互的上下文。这就像一位经验丰富的船长,他不仅需要一艘坚固的船,更重要的是懂得如何利用风向、水流和海图(即上下文)来引导船只,即使面对风暴(错误)和复杂航线(任务),也能高效、稳定地抵达目的地。
Comments
In Channel