当前位置:首页 > 科技资讯 > 正文

Manus的上下文工程:打造高效AI智能体的关键策略

Manus的上下文工程:打造高效AI智能体的关键策略 Manus 上下文工程 AI智能体 KV-cache命中率 第1张

距离Manus在3月6日的首次亮相仅仅过去了100多天,但该公司却接连陷入了大规模裁员传闻和“删博跑路”的争议。

近期,Manus联合创始人季逸超在一篇技术博客中,对公司的发展历程进行了深度回顾。他坦诚地总结了团队在构建Manus过程中积累的七大经验教训,这些经验主要集中在以下几个方面:

1. 不再局限于模型训练,而是聚焦于上下文。Manus放弃了“从头开始为开放信息提取和语义搜索训练模型”的做法,而是将重心放在上下文工程上,以实现“在几小时内而非几周内推出改进,并使产品与底层模型保持正交”。

2. KV-cache命中率是生产阶段AI Agent最重要的单一指标,它直接影响延迟和成本。从上下文工程的角度看,提高KV-缓存命中率涉及几个关键实践:保持提示前缀稳定、使上下文仅追加、在需要时明确标记缓存断点。

3. 除非绝对必要,避免在迭代过程中动态添加或移除工具。Manus采用遮蔽token logits的方法,让模型看不见不应调用的工具。

4. 使用文件系统作为上下文。Manus让模型将长期记忆写入虚拟文件系统,按需读写,实现外部记忆,从而避免信息丢失。

5. 通过复述操控注意力。为了防止任务偏离目标,Manus会不断用自然语言更新并重述todo.md文件,将全局目标拉回注意力焦点。

6. 保留错误的内容。Manus发现,将错误尝试保留在上下文中可以隐式地更新模型的内部信念,减少重复错误的可能性。

7. 不要被少样本提示所困。为了打破模式并调整模型的注意力,Manus选择在行动和观察中引入少量的结构化变化。

尽管Manus曾一度在业界引起轰动,但进入7月后,该公司却“问题不断”。首先是7月8日,Manus被曝启动国内业务调整,大量员工被裁撤;随后在7月11日,其官方微博和小红书账号的内容被清空。

以下是Manus联合创始人季逸超的博客全文,标题为《AI代理的上下文工程:构建Manus的经验教训》:

在Manus项目的初期阶段,我和我的团队面临一个关键抉择:是应该使用开源基础模型训练一个端到端的Agent,还是基于前沿模型的上下文学习能力构建一个Agent?

在我从事NLP工作的第一个十年里,我们并没有这种选择的奢侈。在遥远的BERT时代(是的,已经过去七年了),模型必须先进行微调——并评估——才能转移到新任务。这个过程通常每次迭代需要数周时间。对于快速发展的应用来说,这种缓慢的反馈循环是一个致命的问题。

这是我上一个创业公司的惨痛教训——我从头开始为开放信息提取和语义搜索训练模型。然而,随着GPT-3和Flan-T5的出现,我的内部模型一夜之间变得无关紧要。讽刺的是,这些相同的模型标志着上下文学习的开始——以及一条全新的前进道路。

这个来之不易的教训使得选择变得明确:Manus将押注于上下文工程。这使我们能够在几小时内而非几周内推出改进,并使我们的产品与底层模型保持正交:如果模型进步是上涨的潮水,我们希望Manus成为那条船,而不是固定在海床上的柱子。

然而,上下文工程证明并非那么直接。它是一门实验科学——我们已经重建了我们的Agent框架四次,每次都是在发现了更好的塑造上下文的方式之后。我们亲切地将这种手动架构搜索、提示调整和经验猜测的过程称为「随机研究生下降法」。它不够优雅,但很有效。

这篇文章分享了我们通过自己「SGD」所达到的局部最优解。如果你正在构建自己的AI Agent,我希望这些原则能帮助你更快地收敛。

围绕KV-Cache进行设计

如果我只能选择一个指标,我认为KV-cache命中率是生产阶段AI Agent最重要的单一指标。它直接影响延迟和成本。为了理解原因,让我们看看典型Agent如何运作:

在接收用户输入后,Agent通过一系列工具来完成任务。在每次迭代中,模型根据当前上下文从预定义的动作空间中选择一个动作。然后该动作在环境(例如Manus的虚拟机沙盒)中执行以产生观察结果。动作和观察结果被附加到上下文中形成下一次迭代的输入。这个循环持续直到任务完成。

正如你可以想象,上下文随着每一步而增长,而输出——通常是结构化的函数调用——保持相对简短。这使得Agent程序中的预填充和解码比例与聊天机器人相比高度倾斜。

遮蔽,而非移除

随着你的Agent获得更多能力其行动空间自然变得更加复杂——简单来说工具数量爆炸性增长。为了解决这一问题Manus使用上下文感知的状态机来管理工具可用性。

使用文件系统作为上下文

现代前沿大语言模型现在提供128K个token或更多的上下文窗口。但在真实世界的Agent场景中这通常不够有时甚至是一种负担。为了解决这个问题我们在Manus中将文件系统视为最终上下文。

通过复述操控注意力

如果你使用过Manus你可能会注意到一个有趣的现象:它倾向于创建一个todo.md文件并在任务进行过程中逐步更新它。

保留错误的内容

在我们的经验中改善Agent行为最有效的方法之一出奇地简单:将错误尝试保留在上下文中。

不要被少样本提示所困

解决方法是增加多样性。Manus在行动和观察中引入少量的结构化变化——这种受控的随机性有助于打破模式并调整模型的注意力。