OpenManus 是MetaGPT 团队推出的开源复刻版 Manus,提供无需邀请码的 Al Agent。OpenManus 基于模块化设计,支持多种语言模型和工具链,能执行代码、处理文件、搜索网络信息等复杂任务。OpenManus 的核心优势在于实时反馈机制,用户能直观看到 A1的思考过程和任务执行进度。OpenManus具备强大的工具链和灵活的配置选项,方便开发者根据需求进行定制。
用户提问阶段
当您在终端中输入问题或任务时(例如"帮我做一份关于小米的分析报告"):
系统会在main.py中启动,并将您的问题传递给代理系统。
2️⃣ 初始化代理
这时候,系统会创建一个"PlanningAgent"(规划代理)实例:
agent = PlanningAgent(available_tools=ToolCollection(PlanningTool(), Terminate()))
这就像准备一个有特定技能的助手:
- 它有规划能力(PlanningTool)
- 它知道何时停止(Terminate)
- 它有一个"大脑"(大语言模型,如GPT-4o)
3️⃣ 规划阶段
一旦您的问题被提交,代理会调用run方法开始工作:它将您的问题添加到"记忆"中它将自己的状态设置为"正在运行"
制定计划规划工具会分析您的请求,并创建一个分步计划,例如:
-
确定网站的目的和内容
-
选择适当的技术栈
-
创建HTML基础结构
-
添加CSS样式
-
测试网站功能
4️⃣ 执行阶段
计划制定后,代理开始一步步执行, 每次执行一个步骤时,代理会:
- 增加步数计数
- 调用step()方法(这是核心执行逻辑)
- 将结果记录下来
对于每个步骤,代理会:思考如何完成当前任务(使用大语言模型)
- 决定使用哪个工具(如Python执行、浏览器、搜索等)
- 调用选定的工具并获取结果
- 评估结果并决定下一步
5️⃣ 工具使用
根据任务需要,代理会使用不同的工具:
- PythonExecute: 编写和运行代码
- GoogleSearch: 查找信息
- BrowserUseTool: 浏览网页
- FileSaver: 保存文件
- Terminate: 完成任务时结束执行
例如,创建网站时,它可能会:
- 使用Python生成HTML/CSS代码
- 使用FileSaver保存为文件
- 使用BrowserUseTool预览网站效果
6️⃣ 自我监控
代理会持续检查自己是否陷入循环:ifself.is_stuck():
stuck_count +=1
self.handle_stuck_state()
- 如果发现在重复同样的操作,它会尝试改变策略
- 如果多次尝试后仍无法进展,它会终止执行
7️⃣ 完成任务
代理会在以下情况下停止:
- 任务成功完成(达到目标)
- 达到最大步数(默认50步)
- 检测到持续的重复操作
- 遇到无法解决的错误
8️⃣ 返回结果
最后,run方法会将所有步骤的结果合并:
return "\n".join(results)
并显示给您,包括:
- 每个步骤的执行过程
- 最终产出(如网站代码)
- 使用说明或后续建议
🔄 简单类比
想象OpenManus像一个智能管家:
- 您告诉管家需要做什么(例如"准备晚餐")
- 管家先思考整体计划(菜单、步骤)
- 然后使用各种工具(锅、刀、食材)
- 一步步执行计划(切菜、烹饪、摆盘)
- 遇到问题会尝试调整(如没有某种食材)
- 最后将成果呈现给您
- 这种设计使得OpenManus能够处理复杂任务,即使任务需要多个步骤和不同工具的组合使用。