编辑
2025-03-18
👨‍🎓 无限进步
00
请注意,本文编写于 92 天前,最后修改于 91 天前,其中某些信息可能已经过时。

目录

设计思路
1.极简可插拔框架
2. 工具驱动的 ReAct Agent
3. 规划能力处理复杂任务
4. 动态 Agent 分配与工具调度
工作流程与执行路径
1. 用户需求输入
2. PlanningTool 规划
3. 任务分配与执行
4. 结果汇总与状态更新
5. 整体产出
技术机构剖析
工程结构概览
4.2 核心系统组件
4.3 系统运行机制
4.4 Memory 管理与 Agent 分配
未来优化与发展展望
与 MetaGPT 等项目的内在关联

设计思路

image.png

1.极简可插拔框架

OpenManus 的核心设计是构建一个非常精简的 Agent 框架,强调模块化和可扩展性。它通过可插拔的工具(Tools)和提示词(Prompt)的组合来定义 Agent 的功能和行为,降低了开发和定制 Agent 的门槛。

  • Prompt 决定 Agent 的行为逻辑和思考方式;
  • Tools 则提供行动能力(如计算机操作、代码执行、搜索等)。

通过对 Prompt 和 Tools 的自由组合,就能快速"拼装"出新的 Agent,赋予其处理不同类型任务的能力。

2. 工具驱动的 ReAct Agent

OpenManus 基于 ReAct(Reason + Act)模式,并以工具为核心驱动 Agent 的行动。Prompt 引导 Agent 的推理和逻辑,而 Tools 则赋予 Agent 行动能力。ToolCall Agent 的引入,进一步提升了工具使用的效率和规范性。

3. 规划能力处理复杂任务

OpenManus 延续了 Manus 的多智能体规划优势,将 PlanningTool 用于对用户需求进行高层规划。这种"先规划,后执行"的思路在复杂、长链任务上效果更佳。PlanningTool 将复杂的用户需求分解为线性的子任务计划,这种规划能力是处理现实世界复杂问题的关键。过去的研究表明,在相同模型能力下,如果缺乏系统的分解和规划,许多真实问题的成功率会大打折扣;而加入规划后,成功率会有显著提升。

4. 动态 Agent 分配与工具调度

当一个任务拆解出若干子任务后,系统会根据子任务类型,动态将其分配给预先定义或适配的 Agent(有各自的工具集和能力倾向)。这种 临时分配 + 工具协作的机制,可以最大化利用多模型、多工具的组合优势,提高应对不同问题场景的灵活度。Agent 预先装备了不同的工具集以应对不同类型的任务,提高了系统的灵活性和效率。

工作流程与执行路径

640.png

1. 用户需求输入

用户在前端或命令行中输入复杂的需求,例如"写一段代码完成某种功能,并自动部署到服务器上"。

2. PlanningTool 规划

系统先调用 PlanningTool,对需求进行分析与分解,形成一个线性结构的计划或任务序列。比如,会将需求拆解为:

  • 分析需求与环境
  • 编写初始代码
  • 测试并修复错误
  • 部署并验证结果

这些子任务被记录在一个 plan 或类似结构中。

openManus.png

3. 任务分配与执行

  • 如果任务中涉及大规模数据分析或机器学习流程,可能会调用一个具备 Data Interpreter 能力的 Agent;
  • 若任务需要复杂的代码修复或文件管理,则会调用另一个能够使用 ComputerUse 工具的 Agent;
  • 系统按照顺序从计划中依次取出子任务;
  • 根据任务关键字或意图判定,分配给最合适的 Agent。目前 Agent 分配主要基于正则匹配,未来考虑使用 LLM 实现更智能的任务分配。
  • 每个 Agent 都会采用 ReAct 循环(Reason + Act)与 Tools 进行交互,以完成自己所负责的子任务。

4. 结果汇总与状态更新

当某个子任务执行完毕后,系统会将执行结果、关键上下文信息进行必要的"总结与压缩"(以避免不断增加的冗长 Memory),然后存入当前的"Plan 内存"或全局可访问的共享内存。

  • 如果任务完成顺利,进入下一子任务;
  • 若出现执行失败或结果异常,系统可进行自动调试或重新规划,视设计实现程度而定。

5. 整体产出

当所有子任务执行完毕,系统对整体结果进行汇总并返回给用户,或完成如网页部署、自动执行脚本等操作。

技术机构剖析

image.png

工程结构概览

shell
. ├── app │ ├── agent │ │ ├── base.py │ │ ├── manus.py │ │ ├── planning.py │ │ ├── react.py │ │ ├── swe.py │ │ └── toolcall.py │ ├── flow │ │ ├── base.py │ │ ├── flow_factory.py │ │ └── planning.py │ ├── prompt │ │ ├── manus.py │ │ ├── planning.py │ │ ├── swe.py │ │ └── toolcall.py │ └── tool │ ├── base.py │ ├── bash.py │ ├── browser_use_tool.py │ ├── create_chat_completion.py │ ├── file_saver.py │ ├── google_search.py │ ├── planning.py │ ├── python_execute.py │ ├── run.py │ ├── str_replace_editor.py │ ├── terminate.py │ └── tool_collection.py

项目依赖也相对简单,主要包括一些用于数据验证(pydantic)、AI 服务调用(openai)、浏览器控制(playwright、browsergym、browser-use)和一些基础工具库: image.png

  • pydantic:数据验证和设置管理
  • openai:OpenAI API 的客户端库
  • browser-use:构建能使用网络浏览器的 AI 代理框架
  • browsergym:训练 AI 使用网络浏览器的环境
  • playwright:浏览器自动化库
  • googlesearch-python:无需 API 密钥进行搜索的库

这样的结构设计使得 OpenManus 在提供强大功能的同时保持了极高的可维护性和可扩展性。

4.2 核心系统组件

OpenManus 的架构由四个主要模块构成: image.png

  1. 核心多智能体框架(Agent) Agent 模块采用清晰的继承层次,自底向上逐步增强功能:

示例代码(Manus 实现):

python
class Manus(ToolCallAgent): """ A versatile general-purpose agent that uses planning to solve various tasks. """ name: str = "Manus" description: str = "A versatile agent that can solve various tasks using multiple tools" system_prompt: str = SYSTEM_PROMPT next_step_prompt: str = NEXT_STEP_PROMPT # Add general-purpose tools to the tool collection available_tools: ToolCollection = Field( default_factory=lambda: ToolCollection( PythonExecute(), GoogleSearch(), BrowserUseTool(), FileSaver(), Terminate() ) )
  • BaseAgent:定义了智能体的基础属性(name、memory、system_prompt)和基本行为(执行逻辑、状态检查)。
  • ReActAgent:实现了经典的 "Reasoning + Acting" 模式,先思考后行动,每一步执行都分为 think 和 act 两个阶段。
  • ToolCallAgent:在 ReAct 基础上进一步细化,使 think 阶段专注于工具选择,act 阶段负责执行所选工具。
  • Manus:继承 ToolCallAgent,主要通过定制 system_prompt 和 available_tools 来赋予不同能力。
  1. Tools(工具层) 工具模块是 OpenManus 的行动能力基础,各类工具均继承自 BaseTool:

其中,planning.py 实现了 Manus 著名的计划功能,用 Markdown 格式管理任务计划并跟踪执行进度。

  • ComputerUse:命令行和计算机操作
  • BrowserUse:网络浏览和交互
  • PythonExecute:执行 Python 代码
  • GoogleSearch:网络搜索
  • FileSaver:文件读写
  • PlanningTool:任务规划与追踪
  1. Prompt(提示词模块) Prompt 模块包含了各种 Agent 使用的指令模板,例如 Planning 的系统提示:
python
PLANNING_SYSTEM_PROMPT = """ You are an expert Planning Agent tasked with solving complex problems by creating and managing structured plans. Your job is: 1. Analyze requests to understand the task scope 2. Create clear, actionable plans with the `planning` tool 3. Execute steps using available tools as needed 4. Track progress and adapt plans dynamically 5. Use `finish` to conclude when the task is complete Available tools will vary by task but may include: - `planning`: Create, update, and track plans (commands: create, update, mark_step, etc.) - `finish`: End the task when complete Break tasks into logical, sequential steps. Think about dependencies and verification methods. """

而 Manus 的系统提示则更加简洁:

python
SYSTEM_PROMPT = "You are OpenManus, an all-capable AI assistant, aimed at solving any task presented by the user. You have various tools at your disposal that you can call upon to efficiently complete complex requests. Whether it's programming, information retrieval, file processing, or web browsing, you can handle it all."
  1. Flow(执行流程模块)
  • Flow 模块负责任务的高层编排和执行流程管理:
  • PlanningFlow 的执行流程:
  • 每步执行前,系统会生成上下文丰富的提示:
python
step_prompt = f""" CURRENT PLAN STATUS: {plan_status} YOUR CURRENT TASK: You are now working on step {self.current_step_index}: "{step_text}" Please execute this step using the appropriate tools. When you're done, provide a summary of what you accomplished. """
  • BaseFlow:抽象基类,定义了 Agent 管理和执行接口
  • PlanningFlow:实现基于规划的执行策略
  1. 创建初始计划(_create_initial_plan)
  2. 按计划步骤调用适当的 Agent
  3. 跟踪计划执行状态并动态调整 640.jpeg

4.3 系统运行机制

  1. 基础版本(Manus):
  • 用户输入需求,调用 Manus agent 的 run 函数

  • run 函数循环执行 step 操作(来自 ReActAgent)

  • 每个 step 包含 think(选工具)和 act(执行工具)两个环节

  • 直接使用基础工具集(Python执行、搜索、浏览器、文件保存等)

  1. 高级版本(PlanningFlow):
  • 使用 PlanningTool 对需求进行整体规划

  • 针对每个子任务动态生成适合的上下文和指令

  • 调用 Manus agent 执行各个子任务

  • 维护计划状态和执行进度

值得注意的是,在当前版本中,虽然 PlanningFlow 具备多智能体调度的能力,但实际上只有单一的 Manus 智能体在执行任务。未来版本可引入更多专业化的 Agent 以充分发挥多智能体协作的优势。

4.4 Memory 管理与 Agent 分配

与前文描述一致,OpenManus 实现了简单但有效的记忆管理和 Agent 分配机制:

  • Memory 管理:每个子任务执行后进行总结压缩,避免上下文过长

  • Agent 分配:当前主要基于正则匹配和规则,后续可考虑 LLM 辅助分配

未来优化与发展展望

虽然 OpenManus 在短时间内完成了初版本的核心功能,但团队也对后续的发展方向有清晰的思考,包括:

  1. 增强规划能力

更深入地将 Tree-of-Thought 等搜索方法引入,或使用自适应的规划方案,让多智能体的任务分解与决策更高效、更精准。

  1. 标准化评测 & 基准

在 GAIA、TAU-Bench、SWE-Bench 等多智能体任务集上进行持续评测,为后续工程优化提供量化标准,也能让社区更透明地了解 OpenManus 的改进幅度。

  1. 多模型适配与成本优化

    • 从使用单一大模型(如 GPT、Claude)走向集成多个"专用小模型"(如针对代码、搜索、翻译、决策的模型),以更低成本实现超过大模型的效果;
    • 对 Token 消耗进行工程化、缓存化的优化,通过更精细的上下文管理显著降低调用成本。
  2. 记忆管理与信息追踪

在多智能体长链任务中,如何高效追踪并管理上下文信息是关键挑战;团队将探索更灵活的 memory 结构,避免信息丢失与无效重复。

  1. 更多工具生态 & 智能创造工具

随着工具数量与类型增加,Agent 对于工具选择、调用参数、执行顺序的管理将愈发复杂;如何让 Agent 自动创建或改写工具,也将成为下一阶段研究的热点。

  1. 商业化场景深耕

多智能体在代码生成、网站搭建、数据分析等场景已有快速落地趋势。只有在"真实场景任务"和"用户效果"上极致打磨,才能促使用户持续使用 Agent 并产生商业价值。

与 MetaGPT 等项目的内在关联

OpenManus 在短时间里得以火速上线,与其团队早期在多智能体领域的系列研究息息相关。MetaGPT、Data Interpreter、AFlow、FACT、SELA、SPO 等项目不仅在论文、开源代码层面做了长期积累,也对多智能体的核心模块——规划、工具调用、搜索与记忆——进行了深入探索。其中:

  • MetaGPT:最早的多智能体协作框架,将 SOP(标准操作流程)进行角色化分配,以提升大模型解决复杂任务的成功率。
  • Data Interpreter:针对机器学习与数据建模场景,强化了智能体在数据处理、模型训练和工具使用上的能力。
  • AFlow:利用蒙特卡洛树搜索(MCTS)在多任务中动态探索最优的 Agent 组合与执行流程。
  • FACT:通过改进大模型的检索与记忆机制,增强多事实问答(QA)等任务的准确度。
  • SELA:让智能体具有蒙特卡洛式的调试能力,在机器学习任务中自动优化策略。
  • SPO:一种自监督的 Prompt 优化工具,适合短样本或质量难以度量的应用场景。

这些项目形成了一个庞大的多智能体技术储备,为 OpenManus 的快速构建提供了坚实的"技术底座"。

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!