
现在,AI代理的竞争越来越激烈,而上下文工程则成了这场竞争的重心。你想想,代理在开发时,上下文信息的质量直接影响到模型的推理能力。
不过,在众多团队争先恐后进行上下文优化的时候,Manus和Cursor这两家行业领头羊却提出了一个颇为反常的观点:避免对上下文进行过度工程化,才是提升代理效率的关键所在。
它们跳出了“怎样把更多信息塞进上下文”的传统思维,转而去探讨“如何为代理创造一个信息丰富、易于探索的外部环境”。这样的实践思路,给行业带来了非常有价值的启示。
一、上下文缩减:从“硬塞”到“卸载”,破解上下文腐烂难题
随着代理工具调用的增多,上下文信息也在不断膨胀,每次调用的结果都要加到对话记录中,少的几十轮,多的上百轮交互,最终就会出现业内所说的上下文腐烂:推理速度慢、输出质量差、无意义的重复频繁。
针对这个问题,Cursor和Manus各自提出了不同的解决方案,但它们的核心思路却是一致的:上下文卸载,也就是把冗余的信息移到上下文窗口之外,必要时再精准地召回。
Cursor:万物皆可文件化,极致简洁的动态发现
Cursor把“卸载”这一理念发挥到了极致。它的核心思路是以文件为基础单元,将所有冗长的信息转化为可检索的文件,供代理按需取用。
- 工具结果文件化:面对Shell命令和MCP协议返回的大量JSON响应,Cursor不再简单地截断,而是直接写入文件,仅在上下文中留下“结果在output.log中”的提示。代理可以先用tail查看关键信息,必要时再读取完整内容,这样既节省Token又不丢失细节。
- 聊天记录文件化:当上下文窗口达到上限时,Cursor会生成一份工作摘要,同时保留完整聊天历史的文件引用。若代理发现摘要遗漏了重要信息,就能自主检索历史文件,避免摘要造成的知识流失。
- 终端会话文件化:集成终端的所有输出会自动同步到本地文件,用户问“命令为何失败”时,代理能迅速定位日志文件,甚至用grep筛选出错误行,无需手动复制粘贴。
在Cursor看来,文件是简单且强大的基础单元,这种方式比起开发新的抽象接口更安全、更容易落地。它提倡的动态上下文发现模式,实际上就是把信息检索的主动权交还给代理。
Manus:结构化可逆缩减,分阶段化解腐烂风险
与Cursor的简洁直接相比,Manus设计了一套有明确触发机制、分阶段执行的结构化缩减流程,其核心是在性能下降前主动干预,并尽量保证信息的可逆性。
- 先定阈值:提前拦截腐烂信号
Manus发现,模型的实际性能拐点远低于硬件规定的上下文上限,例如百万Token级别的模型,可能在20万Token时就开始显现腐烂迹象。因此,团队经过大量评估,划定了12.8万-20万Token的腐烂前阈值,作为触发缩减操作的信号。 - 第一阶段:紧凑化,无损可逆的轻量化
这是一种“剥离冗余”的无损操作,核心逻辑是:移除所有可从外部状态重建的信息。
举个例子,代理在调用工具时向文件写入内容,历史记录中原本包含path和content两个字段。一旦写入成功,冗长的content就可以从上下文中剥离,只保留path。信息没有丢失,只是被“外部化”到文件系统中,后续需要时,代理凭借path就能找回完整内容。
需要注意的是,紧凑化仅针对较早的50%历史记录,最新的工具调用将被完整保留,作为模型学习的例子。 - 第二阶段:摘要化,有损但带保险的压缩
当紧凑化收益达到极限时,Manus才会启动摘要化——这是一种有损的操作,但团队为其加上了“保险”:生成摘要前,会将完整上下文转储为日志文件。
即便摘要丢失了细节,代理依然可以像开发者一样,用grep等命令从日志中检索数据。而且摘要化会保留最后几次完整的工具调用记录,以便模型能平滑衔接后续工作,保持行为一致性。
Manus强调,紧凑化是可逆的,而摘要化是不可逆的,二者结合,既实现了上下文的精简,又最大程度降低了信息损失。
二、工具管理:从“全量注入”到“动态发现”,告别工具过载
随着代理能力的增强,配备的工具越来越多,另一个问题也随之而来:将所有工具的详细描述塞进上下文,不仅浪费Token,还容易导致上下文混淆,使模型面对众多工具无所适从,甚至会出现错误的工具幻觉。
对此,Cursor和Manus都选择把主动权交给代理,让工具“动态可寻”而非“静态预置”。
Cursor:工具说明书文件化,索引+发现双层架构降本增效
Cursor的解决方案延续了“文件化”思路:将所有MCP工具和代理技能的详细定义同步到本地文件夹,上下文只保留工具名称列表。
它将工具管理分为两层:
- 索引层:系统提示词中仅含工具名称,极少占用Token;
- 发现层:工具的详细描述、参数定义、使用方法都存放在文件夹中。
当模型需要调用工具时,就像程序员查文档一样,主动去文件夹中用grep或语义搜索获取信息,再拉取到上下文中进行处理。
高效工具使用的新模式:分层设计让操作更简便
这种新方式真是立竿见影!A/B 测试的结果显示,使用 MCP 工具的任务中,Token 的消耗竟然减少了46.9%。更让人惊喜的是,文件化的操作还让 Agent 能够实时感知工具的状态。比如,当 MCP 服务器需要重新认证时,Agent 会主动提醒用户,而不是默默地“遗忘”了工具。
Manus:分层的行动空间,兼顾缓存友好与灵活性
Manus 认为,动态 RAG 的工具描述有明显缺陷:工具的定义一旦改变,就会重置 KV 缓存,历史调用记录也可能误导模型使用无效工具。所以,团队设计了一套三层行动空间,让复杂工具通过底层原子函数来间接调用。
- 原子函数调用层(核心层)
这一层只保留少量固定的原子函数,比如读取和写入文件、执行 Shell 命令,以及在文件和互联网中搜索。这一层的功能边界非常清晰,不会随意变动,特别适合与 KV 缓存配合,并为 Agent 提供统一的外部交互接口。 - 沙盒工具层(卸载层)
大部分工具,比如格式转换器、语音识别工具,甚至 MCP 的调用,都被预装在定制的 Linux 虚拟机沙箱里。Agent 其实看不到这些工具的详细定义,而是通过第一层的 Shell 命令与它们互动,比如用 ls /bin 查看工具列表,或者用 mcp_cli –help 来学习如何使用。 - 软件包与 API 层(代码层)
针对需要大量内存计算或复杂第三方交互的任务,Agent 可以编写并执行 Python 脚本。比如在分析一整年的股票数据时,Agent 不会把原始数据直接塞进上下文,而是通过脚本进行计算,只返回摘要结果。
这套分层设计的魅力在于:无论工具多复杂,最终都是通过原子函数进行调用,对模型来说,接口变得极为简洁,而且缓存也更稳定。
三、多 Agent 协作:从“共享内存”到“契约通信”,实现高效协同
多 Agent 协作的主要问题在于信息同步的成本高和输出结果的不一致性。Manus 从通信模式和输出约束这两方面入手,提出了一套可行的解决方案。
两种协作模式:灵活选择,平衡隔离与共享
Manus 借鉴了 Go 语言的哲学:“不要通过共享内存来通信,而是通过通信来共享内存”,设计了两种多 Agent 的协作模式:
- 任务委托模式:通信保持隔离
这是一个经典的主-子 Agent 架构。主 Agent 会把任务封装成简短的指令发送给子 Agent,子 Agent 拥有独立的上下文,从零开始执行任务,最终只返回结果。
这种模式适合“重结果、轻过程”的任务,比如搜索代码片段。主 Agent 不需要关心子 Agent 使用了哪些工具,只需要结果列表,就像把子 Agent 当成一个“高级工具”一样。 - 信息同步模式:共享上下文实现深入协作
对于那些高度依赖历史信息的复杂任务(比如撰写深度研究报告),任务委托模式的文件传递会引发很大的延迟。这时,子 Agent 会继承主 Agent 的完整上下文,同时拥有独立的系统提示词和行动空间。
不过,Manus 也提醒,这种模式成本较高,子 Agent 启动时需要填充大量的输入,而且无法复用主 Agent 的 KV 缓存,因此需要根据任务的性质灵活选择。
Agent 化的 MapReduce:用契约确保输出一致性
当多个 Agent 同时工作时,如何确保输出结构一致、内容准确呢?Manus 设计了一套“Agent 化的 MapReduce”系统,核心是用结构化契约约束输出:
- 共享沙箱:畅通信息传递通道
所有的 Agent 会话都在同一个虚拟机沙箱中运行,共享文件系统。信息传递不需要复杂的协议,只需传递文件路径,这样就解决了输入同步的问题。 - 输出 Schema:定义统一契约
主 Agent 在创建子 Agent 之前,必须先定义输出 Schema,这就像是一个强制执行的 API 合同,明确规定了结果的数据结构。 - 约束解码:确保契约的遵守
子 Agent 配备了专门的工具 submit_result,系统通过约束解码技术,确保提交的结果严格符合 Schema 要求。
这套设计的本质就是用模式和结构化输出作为“契约”,让多 Agent 协作的信息传递更加高效和可靠。
四、回归本质:避免过度工程化,把主动权交给模型
从 Cursor 和 Manus 的实践中,我们能看到两者的设计理念高度一致:少即是多,简化优于复杂。
Cursor 的“动态上下文发现”强调,初始上下文提供的细节越少越好,这样 Agent 能自主探索信息;而 Manus 则提倡“少构建,多理解”,认为上下文工程的目标是让模型的工作变得更简单,而不是复杂。季逸超曾提到,Manus 显著的效能提升并不全靠复杂的检索技巧,而是通过架构的简化和对模型的信任。
它们的探索为行业指明了一个重要的发展方向:未来的上下文工程将从“如何塞更多信息”转向“如何营造更好的环境”。随着基础模型能力的提升,把信息检索和工具选择的主动权交给模型,才是更高效、可持续的路径。
毕竟,最优秀的上下文工程,是让模型感觉不到“工程化”的存在。

很赞同Manus和Cursor的观点,过度工程化上下文反而会降低效率,简化信息反而能提高代理的灵活性和准确性。期待看到更多这样的创新思路。
上下文工程的思路确实值得深思,过度追求信息量反而可能导致效率下降。将冗余信息卸载,保持简洁,能让代理更灵活应对复杂任务。
上下文工程的优化思路很有启发性,尤其是强调信息的质量而非数量,这样可以有效提升代理的反应速度和输出质量。值得行业内深入探讨和应用。
Manus和Cursor的观点让我耳目一新,关注信息的整合和质量比单纯的数量更为重要,确实能有效提升AI代理的表现。这样的思路在行业中推广将大有裨益。
Manus和Cursor提出的上下文卸载思路让我深感启发,减少冗余信息的同时还能提升代理效率,确实是个值得借鉴的方向。这样的创新方法可能会改变整个行业的上下文处理方式。
上下文的优化思路很有启发性,尤其是通过卸载冗余信息来提升代理效率,这种方法比单纯增加信息量更为有效。期待更多行业应用。