从 Manus 到 Cursor:揭示 AI Agent 上下文工程的实战与过度工程化的真相

作品声明:个人观点、仅供参考

从 Manus 到 Cursor:揭示 AI Agent 上下文工程的实战与过度工程化的真相

现在,AI代理的竞争越来越激烈,而上下文工程则成了这场竞争的重心。你想想,代理在开发时,上下文信息的质量直接影响到模型的推理能力。

不过,在众多团队争先恐后进行上下文优化的时候,Manus和Cursor这两家行业领头羊却提出了一个颇为反常的观点:避免对上下文进行过度工程化,才是提升代理效率的关键所在

它们跳出了“怎样把更多信息塞进上下文”的传统思维,转而去探讨“如何为代理创造一个信息丰富、易于探索的外部环境”。这样的实践思路,给行业带来了非常有价值的启示。

一、上下文缩减:从“硬塞”到“卸载”,破解上下文腐烂难题

随着代理工具调用的增多,上下文信息也在不断膨胀,每次调用的结果都要加到对话记录中,少的几十轮,多的上百轮交互,最终就会出现业内所说的上下文腐烂:推理速度慢、输出质量差、无意义的重复频繁。

针对这个问题,Cursor和Manus各自提出了不同的解决方案,但它们的核心思路却是一致的:上下文卸载,也就是把冗余的信息移到上下文窗口之外,必要时再精准地召回。

Cursor:万物皆可文件化,极致简洁的动态发现

Cursor把“卸载”这一理念发挥到了极致。它的核心思路是以文件为基础单元,将所有冗长的信息转化为可检索的文件,供代理按需取用。

  1. 工具结果文件化:面对Shell命令和MCP协议返回的大量JSON响应,Cursor不再简单地截断,而是直接写入文件,仅在上下文中留下“结果在output.log中”的提示。代理可以先用tail查看关键信息,必要时再读取完整内容,这样既节省Token又不丢失细节。
  2. 聊天记录文件化:当上下文窗口达到上限时,Cursor会生成一份工作摘要,同时保留完整聊天历史的文件引用。若代理发现摘要遗漏了重要信息,就能自主检索历史文件,避免摘要造成的知识流失。
  3. 终端会话文件化:集成终端的所有输出会自动同步到本地文件,用户问“命令为何失败”时,代理能迅速定位日志文件,甚至用grep筛选出错误行,无需手动复制粘贴。

在Cursor看来,文件是简单且强大的基础单元,这种方式比起开发新的抽象接口更安全、更容易落地。它提倡的动态上下文发现模式,实际上就是把信息检索的主动权交还给代理。

Manus:结构化可逆缩减,分阶段化解腐烂风险

与Cursor的简洁直接相比,Manus设计了一套有明确触发机制、分阶段执行的结构化缩减流程,其核心是在性能下降前主动干预,并尽量保证信息的可逆性。

  1. 先定阈值:提前拦截腐烂信号
    Manus发现,模型的实际性能拐点远低于硬件规定的上下文上限,例如百万Token级别的模型,可能在20万Token时就开始显现腐烂迹象。因此,团队经过大量评估,划定了12.8万-20万Token的腐烂前阈值,作为触发缩减操作的信号。
  2. 第一阶段:紧凑化,无损可逆的轻量化
    这是一种“剥离冗余”的无损操作,核心逻辑是:移除所有可从外部状态重建的信息
    举个例子,代理在调用工具时向文件写入内容,历史记录中原本包含path和content两个字段。一旦写入成功,冗长的content就可以从上下文中剥离,只保留path。信息没有丢失,只是被“外部化”到文件系统中,后续需要时,代理凭借path就能找回完整内容。
    需要注意的是,紧凑化仅针对较早的50%历史记录,最新的工具调用将被完整保留,作为模型学习的例子。
  3. 第二阶段:摘要化,有损但带保险的压缩
    当紧凑化收益达到极限时,Manus才会启动摘要化——这是一种有损的操作,但团队为其加上了“保险”:生成摘要前,会将完整上下文转储为日志文件
    即便摘要丢失了细节,代理依然可以像开发者一样,用grep等命令从日志中检索数据。而且摘要化会保留最后几次完整的工具调用记录,以便模型能平滑衔接后续工作,保持行为一致性。

Manus强调,紧凑化是可逆的,而摘要化是不可逆的,二者结合,既实现了上下文的精简,又最大程度降低了信息损失。

二、工具管理:从“全量注入”到“动态发现”,告别工具过载

随着代理能力的增强,配备的工具越来越多,另一个问题也随之而来:将所有工具的详细描述塞进上下文,不仅浪费Token,还容易导致上下文混淆,使模型面对众多工具无所适从,甚至会出现错误的工具幻觉。

对此,Cursor和Manus都选择把主动权交给代理,让工具“动态可寻”而非“静态预置”。

Cursor:工具说明书文件化,索引+发现双层架构降本增效

Cursor的解决方案延续了“文件化”思路:将所有MCP工具和代理技能的详细定义同步到本地文件夹,上下文只保留工具名称列表
它将工具管理分为两层:

  • 索引层:系统提示词中仅含工具名称,极少占用Token;
  • 发现层:工具的详细描述、参数定义、使用方法都存放在文件夹中。

当模型需要调用工具时,就像程序员查文档一样,主动去文件夹中用grep或语义搜索获取信息,再拉取到上下文中进行处理。

高效工具使用的新模式:分层设计让操作更简便

这种新方式真是立竿见影!A/B 测试的结果显示,使用 MCP 工具的任务中,Token 的消耗竟然减少了46.9%。更让人惊喜的是,文件化的操作还让 Agent 能够实时感知工具的状态。比如,当 MCP 服务器需要重新认证时,Agent 会主动提醒用户,而不是默默地“遗忘”了工具。

Manus:分层的行动空间,兼顾缓存友好与灵活性

Manus 认为,动态 RAG 的工具描述有明显缺陷:工具的定义一旦改变,就会重置 KV 缓存,历史调用记录也可能误导模型使用无效工具。所以,团队设计了一套三层行动空间,让复杂工具通过底层原子函数来间接调用。

  1. 原子函数调用层(核心层)
    这一层只保留少量固定的原子函数,比如读取和写入文件、执行 Shell 命令,以及在文件和互联网中搜索。这一层的功能边界非常清晰,不会随意变动,特别适合与 KV 缓存配合,并为 Agent 提供统一的外部交互接口。
  2. 沙盒工具层(卸载层)
    大部分工具,比如格式转换器、语音识别工具,甚至 MCP 的调用,都被预装在定制的 Linux 虚拟机沙箱里。Agent 其实看不到这些工具的详细定义,而是通过第一层的 Shell 命令与它们互动,比如用 ls /bin 查看工具列表,或者用 mcp_cli –help 来学习如何使用。
  3. 软件包与 API 层(代码层)
    针对需要大量内存计算或复杂第三方交互的任务,Agent 可以编写并执行 Python 脚本。比如在分析一整年的股票数据时,Agent 不会把原始数据直接塞进上下文,而是通过脚本进行计算,只返回摘要结果。

这套分层设计的魅力在于:无论工具多复杂,最终都是通过原子函数进行调用,对模型来说,接口变得极为简洁,而且缓存也更稳定。

三、多 Agent 协作:从“共享内存”到“契约通信”,实现高效协同

多 Agent 协作的主要问题在于信息同步的成本高输出结果的不一致性。Manus 从通信模式和输出约束这两方面入手,提出了一套可行的解决方案。

两种协作模式:灵活选择,平衡隔离与共享

Manus 借鉴了 Go 语言的哲学:“不要通过共享内存来通信,而是通过通信来共享内存”,设计了两种多 Agent 的协作模式:

  1. 任务委托模式:通信保持隔离
    这是一个经典的主-子 Agent 架构。主 Agent 会把任务封装成简短的指令发送给子 Agent,子 Agent 拥有独立的上下文,从零开始执行任务,最终只返回结果。
    这种模式适合“重结果、轻过程”的任务,比如搜索代码片段。主 Agent 不需要关心子 Agent 使用了哪些工具,只需要结果列表,就像把子 Agent 当成一个“高级工具”一样。
  2. 信息同步模式:共享上下文实现深入协作
    对于那些高度依赖历史信息的复杂任务(比如撰写深度研究报告),任务委托模式的文件传递会引发很大的延迟。这时,子 Agent 会继承主 Agent 的完整上下文,同时拥有独立的系统提示词和行动空间。
    不过,Manus 也提醒,这种模式成本较高,子 Agent 启动时需要填充大量的输入,而且无法复用主 Agent 的 KV 缓存,因此需要根据任务的性质灵活选择。

Agent 化的 MapReduce:用契约确保输出一致性

当多个 Agent 同时工作时,如何确保输出结构一致、内容准确呢?Manus 设计了一套“Agent 化的 MapReduce”系统,核心是用结构化契约约束输出

  1. 共享沙箱:畅通信息传递通道
    所有的 Agent 会话都在同一个虚拟机沙箱中运行,共享文件系统。信息传递不需要复杂的协议,只需传递文件路径,这样就解决了输入同步的问题。
  2. 输出 Schema:定义统一契约
    主 Agent 在创建子 Agent 之前,必须先定义输出 Schema,这就像是一个强制执行的 API 合同,明确规定了结果的数据结构。
  3. 约束解码:确保契约的遵守
    子 Agent 配备了专门的工具 submit_result,系统通过约束解码技术,确保提交的结果严格符合 Schema 要求。

这套设计的本质就是用模式和结构化输出作为“契约”,让多 Agent 协作的信息传递更加高效和可靠。

四、回归本质:避免过度工程化,把主动权交给模型

从 Cursor 和 Manus 的实践中,我们能看到两者的设计理念高度一致:少即是多,简化优于复杂

Cursor 的“动态上下文发现”强调,初始上下文提供的细节越少越好,这样 Agent 能自主探索信息;而 Manus 则提倡“少构建,多理解”,认为上下文工程的目标是让模型的工作变得更简单,而不是复杂。季逸超曾提到,Manus 显著的效能提升并不全靠复杂的检索技巧,而是通过架构的简化和对模型的信任。

它们的探索为行业指明了一个重要的发展方向:未来的上下文工程将从“如何塞更多信息”转向“如何营造更好的环境”。随着基础模型能力的提升,把信息检索和工具选择的主动权交给模型,才是更高效、可持续的路径。

毕竟,最优秀的上下文工程,是让模型感觉不到“工程化”的存在。

来源:今日头条
原文标题:AI Agent 上下文工程实战 从 Manus 与 Cursor 实践看去过度工程化之道 – 今日头条
声明:
文章来自网络收集后经过ai改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!

《从 Manus 到 Cursor:揭示 AI Agent 上下文工程的实战与过度工程化的真相》有6条评论

  1. 很赞同Manus和Cursor的观点,过度工程化上下文反而会降低效率,简化信息反而能提高代理的灵活性和准确性。期待看到更多这样的创新思路。

    回复
  2. 上下文工程的思路确实值得深思,过度追求信息量反而可能导致效率下降。将冗余信息卸载,保持简洁,能让代理更灵活应对复杂任务。

    回复
  3. 上下文工程的优化思路很有启发性,尤其是强调信息的质量而非数量,这样可以有效提升代理的反应速度和输出质量。值得行业内深入探讨和应用。

    回复
  4. Manus和Cursor的观点让我耳目一新,关注信息的整合和质量比单纯的数量更为重要,确实能有效提升AI代理的表现。这样的思路在行业中推广将大有裨益。

    回复
  5. Manus和Cursor提出的上下文卸载思路让我深感启发,减少冗余信息的同时还能提升代理效率,确实是个值得借鉴的方向。这样的创新方法可能会改变整个行业的上下文处理方式。

    回复
  6. 上下文的优化思路很有启发性,尤其是通过卸载冗余信息来提升代理效率,这种方法比单纯增加信息量更为有效。期待更多行业应用。

    回复

发表评论