#Manus

宝玉
2个月前
确实,Manus 很聪明,他们把工具分成了 3 层: 第 1 层:函数调用 (Function Calling) 这是最基础的一层,只保留一小组固定的、原子化的函数,比如:读写文件、执行 Shell 命令、搜索文件等。在 LLM 的系统提示词中就只有这一层的工具定义,相对比较少,15 个以内,输入格式和输出格式都很清晰,不容易出错,但这里面有两个工具很特殊,一个是 Shell, 一个是 File。 第 2 层:沙箱工具 (Sandbox Utilities) 每个 Manus 会话都运行在一个完整的虚拟机沙箱里。就是原推文提到的,虚机预装了很多命令行工具,比如格式转换器、语音识别工具,甚至一个 mcp 命令行客户端。 然后这些工具都通过第 1 层中定义的 Shell 来调用,就是命令行工具,命令行调用。 但是这么多工具模型怎么知道呢? Manus 在系统提示词里会直接告诉 LLM,在一个特定的文件夹里有很多预装的命令行工具。对于最常用的工具,直接列出它们的名字。不常用的,LLM 可以直接通过原推提到的命令列出所有命令行工具,通过 --help 参数来查看任何一个工具的用法,因为所有这些工具都是他们自己开发的,格式统一。 第 3 层:代码包与 API (Packages and APIs) 这一层其实就是 LLM 实时编写 Python 代码,通过代码实现更复杂的功能。比如用户想查询某个 API 的数据,可以直接用 Python 写一个函数,fetch API 的数据,并解析成需要的格式。 其实在 Codex 中,用 Python 代码当工具已经用的很多了。 由于复杂的运算都是代码完成的,返回给 主 Agent 的知识计算后的结果,所以并不会占用主 Agent 的上下文。 这样 3 层设计的好处是,从模型的角度看,它需要调用的工具就固定是第 1 层的十几个,而借助命令行和代码,它又可以衍生出无数的工具组合。 还有一点就是我在之前推文提到的子智能体,Manus 也是大量采用“智能体即工具 (agent as tool)”的模式。把子智能体当工具用,比如负责检索是一个子智能体,但是这个子智能体在主 Agent 看来就是一个工具。同时也可以很好的起到减少上下文的效果。
宝玉
3个月前
Manus 诞生背后的故事: 故事始于2023年3月,当时开发 Manus 的团队“蝴蝶效应”正在全力投入一个名为“AI浏览器”的项目。团队投入了近一半的人力,耗时7个月,产品已经打磨到随时可以发布的状态。 然而,就在产品上线前一周,团队的CEO和产品负责人做出了一个惊人的决定:砍掉这个项目。他们预见到,这个浏览器即使发布,也只会吸引一小部分用户,虽然能活下来,但会耗尽团队资源,让他们陷入一个“局部最优”的困境,从而失去探索其他更有潜力方向的机会。 在砍掉项目后,团队经历了两三周看似“无所事事”的空窗期。正是在这段时间,团队成员在观察市场上的其他产品时,发现了一个奇怪的现象:许多非程序员用户竟然在使用一款名为 “Cursor” 的AI编程工具。 他们发现,这些用户完全看不懂编程代码,只是通过和右侧的聊天框对话来解决一些日常问题(比如音视频格式转换),然后不断点击“接受”按钮。这个用户“误用”的场景,给了团队巨大的灵感,他们意识到一个让普通人仅通过对话就能驱动AI完成复杂任务的产品的巨大潜力。 基于这个灵感,一个仅有6人的小团队在两个月内开发出了 Manus 的原型。有趣的是,在寻找早期用户进行测试时,他们收到的反馈大多是负面的,充满了质疑。但团队并未因此动摇,他们判断,对于一个全新的、开创性的产品,用户很难基于过去的经验给出有效的反馈。因此,他们选择相信自己的判断,停止了发布前的用户调研,最终将 Manus 推向了市场。