手撕“开源版Manus”

手撕“开源版Manus”


周末被Manus刷屏,看了拿到邀请码的老哥们发到网上的实测视频,确实挺炫酷,但Monica采用的饥饿营销策略让manus产品的邀请码被炒到了2万一个,家境贫寒之下找了Github上号称复现manus的项目OpenManus当做它的平替参照,做个剖析来过个瘾。

结论

体验

manus 教程

思考

设计目标

快速具备面向复杂任务的可靠交付能力

开放式探索能力和领域创造力,能带来新认知新方法

架构

追求专业能力组合的多智能体架构

1、使用分离的专门模型处理不同任务

2、每个子任务有独立的执行模块

3、通过明确的协调层管理各智能体间的通信

追求整体智能涌现的端到端模型架构

1、单一模型负责理解所有任务需求

2、通过生成代码或指令与外部工具交互

3、任务管理和执行逻辑都内置于同一模型中

优势

ROI最高:在垂域通过”LLM+小模型集群+领域知识库”进行工程化封装,即可快速具备可用性

更强的专业性:针对特定任务的专业模型可以达到更高精度

更敏捷的迭代:可以单独优化或替换某个智能体而不影响整体

可验证的流程:各智能体的职责划分明确,便于诊断问题

更强的拓展性:可以更容易地添加新功能或适应新领域

更强的一致性:全过程由同一模型处理,思考、执行、反馈、决策有更强的整体性和连贯性

更极致的效率:没有多Agent之间的通讯、启停开销

更流畅的体验:对用户请求的响应更快,更高效

突破人类经验局限的创造力:端到端模型可以涌现“反直觉但事后可解释”的决策模式,另外整体思考也会带来意想不到的解决方案

劣势

更高的复杂度:多智能体协作需要复杂的协调机制

更高的维护成本:多组件系统带来更高的维护和调试成本

更高的在线时延:多智能体间的通信可能引入额外延迟

整体性思考欠缺:分治的思路可能导致缺乏全局观和创造性

更难更新:整体模型更新周期长,针对某一单功能进行优化的成本更高

更高资源:需要更大的模型容量来包含所有功能,导致难以训练,需要探索新方法

核心流程

用户请求 → 识别任务需求→选择合适的工具(GoogleSearch、PythonExecute、etc.)→调用外部独立工具并执行 → 搜集工具结果并整合→ 决定下一步行动

用户请求 → 将所有上下文给到端到端模型 → 模型生成综合性的响应(推理、行动,etc)→ 内部执行所有功能 → 更新内部状态→ 将结果反馈到下一轮



项目获取

以下在本机的终端(terminal)中执行

准备Python环境

获取远程项目资源

安装依赖包

准备一个配置大语言模型接口的文件

修改文件中的三个参数为你的API参数(model、base_url、api_key)

项目实测

指令

执行过程

执行过程非常慢,需要耐心等待,并且有一定的失败概率

交付结果

看起来确实有模有样的,粗看起来无论排版还是内容,让我自己写可能也不过如此,但这个表现是LLM直接赋予的,就像我上面说的,OpenManus其实更多是工程化的定义。

手撕“开源版Manus”

系统分析

流程拆解

当用户输入指令(比如给它指令:”分析知乎热搜”)后OpenManusOpenManus执行流程如下

1.启动系统

用户启动main.py并输入指令

系统创建一个名为OpenManus的”智能助手”实例,接受并处理用户指令

2.分析和规划

大语言模型先分析用户的指令,理解用户想要完成什么任务

再思考解决方案,制定一个详细的执行计划

最后决定每一步需要使用什么工具来完成任务

3.执行与反馈循环

选择LLM推荐的工具(比如用BrowserUseTool工具访问知乎)

执行工具操作并返回结果(比如网页内容)

LLM分析上一步的结果

LLM评估后决定下一步行动是什么(比如是重新调整planning还是执行预定的下一步)

4.处理与创建

如果获取到数据,LLM会编写python代码处理这些数据

系统执行这些代码(这里用的是PythonExecute工具)

LLM继续指导如何生成报告和可视化图表

5.保存与完成

有了结果之后视需要选择保存文件(这理由对应的文件操作工具FileSaver)

LLM确认任务完成,系统返回执行摘要,继续等待用户的下一个指令

这里要特地说一下LLM在OpenManus中的作用,LLM 既是系统的认知核心,也是执行控制器,在整个过程中不断规划、执行、分析和适应。这种迭代方法使系统能够处理需要多个步骤、工具交互和基于中间结果的动态调整的复杂任务。LLM就像是OpenManus的”大脑”,在整个过程中起到的作用非常关键

1.指挥中心

LLM接收用户指令,理解任务需求,然后规划整个执行流程。它决定需要采取哪些步骤,以什么顺序执行,以及使用哪些工具。

2.工具调度

在执行任务的过程中,LLM能够从工具箱中默认的几种可选工具(浏览器、Python执行器、文件保存器等)里面挑选最合适的工具来完成当前任务,同时还会生成执行时工具的配置参数。

3.代码生成

当需要处理数据或创建可视化图表时,LLM会根据当前情况编写合适的Python代码。比如它可以根据当前的任务生成清洗数据、分析信息、生成图表和报告的python脚本(当然这个过程中可能需要安装相关的依赖包,实测有大部分安装包都需要在给出提示后手工安装)。

4.过程管理

当遇到困难(如网页结构复杂、数据提取失败)时,LLM能够分析失败原因,调整策略,尝试新方法。它具有”反思”能力,可以从错误中学习并改进方案。

5.节点决策

在每一步执行后,LLM评估结果并决定下一步行动。它可以根据反馈调整计划,决定是继续执行、修改策略还是完成任务。

6.结果评估

LLM负责判断任务是否完成、结果是否符合要求。它可以生成总结报告,并决定何时结束任务执行。

这里主要关注=LLM的作用,其在项目中扮演的角色非常核心,无论是生成plan、结合工具执行act,还是根据执行结果判断是否要调整plan,这些都是由LLM承载。

plan环节的prompt

手撕“开源版Manus”

系统时序图

手撕“开源版Manus”

用例图

回到开头的例子,我用这张图来演示当我们敲入命令“搜集知乎上关于manus的帖子……”之后,系统内部发生了,模块之间的调用顺序是什么、同时从图中也可以直观感受到,LLM在agent中发挥的决定性作用。

手撕“开源版Manus”



AI 时代的分布式多模态数据处理实践


在AI多模态数据处理中,企业面临海量文本、图像及音频数据的高效处理需求,本地受限于单机性能,难以满足大规模分布式计算要求。本方案介绍了基于分布式计算框架 MaxFrame,依托 MaxCompute 的海量计算资源,对多模态数据进行分布式处理、模型离线推理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/244347.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月15日 下午8:50
下一篇 2026年3月15日 下午8:51


相关推荐

关注全栈程序员社区公众号