在AI智能体系统的设计中,上下文工程已逐渐取代传统微调训练,成为新一代LLM智能体的关键工程挑战。Manus团队通过多个迭代版本,总结出一套系统的上下文优化策略,帮助其智能体在速度、稳定性与任务完成能力上实现突破。本文提炼Manus的关键方法论,适合开发者与AI工程师参考。
为什么选择上下文工程而非模型微调?
在传统NLP时代(如BERT时期),模型迁移需要微调+评估,周期长、反馈慢,阻碍快速迭代。LLM出现后,上下文学习崛起,提供了更灵活的迭代方式。对于尚未PMF(产品市场匹配)的AI应用,快速试错能力比参数最优更关键。简单来说就是微调模型性价比不高,微调的速度甚至比不上现在开源大模型的速度,甚至垂直领域的能力还比不上开源模型的通用能力,这也是现在为什么很少人关注微调的原因。
实践1:围绕KV Cache进行优化
KV-cache命中率是AI代理系统中影响延迟和成本的最核心指标。 实践建议:
-
保持提示前缀稳定:避免插入时间戳等每次变化的内容,这些会导致可能无法命中缓存。
-
上下文只追加,不修改历史:JSON序列化需保证键顺序一致,避免破坏缓存。
-
显式设置缓存断点:对支持KV缓存的框架(如vLLM),需正确使用Session ID或断点标记。
实践2:遮蔽掉,而非简单的移除
当工具数量激增(尤其是用户自定义工具)时,代理易陷入决策混乱,动态添加/移除工具会破坏上下文结构和缓存稳定性。更优方案:
● 使用Logits Masking在解码阶段控制工具的选择范围,而不改动原始上下文。
● 工具命名采用统一前缀(如browser_, shell_),便于在特定状态下启用/禁用一类工具。
实践3:使用文件系统作为外部长期记忆
现在不少LLM的上下文窗口可以达到128K甚至200K,但这对于复杂的工作任务来说仍然微不足道。 文件系统的优势:
-
存储能力无限
-
内容结构化且可被访问
实践4:用“复述”操控注意力
在长任务中,模型容易遗忘早期目标或“跑偏”。Manus的策略是:
● 智能体在执行任务过程中自动维护todo.md文件
● 每次迭代中更新当前任务目标,将目标显式地复述到上下文末尾
这种“复述”策略将长远目标拉入近期注意力窗口,增强模型稳定性和一致性。
实践5:保留错误记录,帮助模型自适应
智能体不可避免地会犯错。一般做法都是直接擦除失败记录,重试、清空、温度调整,直到模型返回正确的响应,这种做法是有点“碰运气的”。 更推荐做法是:
● 保留失败动作与观察,LLM通过上下文隐式更新策略
● 错误反馈是强化代理行为的关键信号,不能丢弃
这种做法其实挺常见,比如debug中我们会把错误信息直接丢给模型去修复,而不是让模型重头开始生成代码。
实践6:避免上下文中“模式过度统一”
少样本学习虽然常用于提示词中,但在长任务中容易引发行为重复或偏差。这会导致模型倾向于模仿已有模式,而不会做出当下最合适的选择。 更推荐的做法是:
● 增加结构性扰动:如不同格式、不同措辞、顺序变化
● 保持输入/行为的微妙多样性,防止模型陷入固定节奏
结语:智能体的未来,一次上下文构建一个
上下文工程已成为现代AI Agent系统不可或缺的一部分。无论模型本身如何进化,对上下文的建模、维护、裁剪与反馈机制的设计,将决定一个智能体是否稳健、高效、可扩展。
本文只是对Manus技术团队分享的经验做了一些提取,感兴趣的读者请直接阅读官方的技术博客。