OpenManus 的核心设计是构建一个非常精简的 Agent 框架,强调模块化和可扩展性。它通过可插拔的工具(Tools)和提示词(Prompt)的组合来定义 Agent 的功能和行为,降低了开发和定制 Agent 的门槛。
通过对 Prompt 和 Tools 的自由组合,就能快速"拼装"出新的 Agent,赋予其处理不同类型任务的能力。
OpenManus 基于 ReAct(Reason + Act)模式,并以工具为核心驱动 Agent 的行动。Prompt 引导 Agent 的推理和逻辑,而 Tools 则赋予 Agent 行动能力。ToolCall Agent 的引入,进一步提升了工具使用的效率和规范性。
OpenManus 延续了 Manus 的多智能体规划优势,将 PlanningTool 用于对用户需求进行高层规划。这种"先规划,后执行"的思路在复杂、长链任务上效果更佳。PlanningTool 将复杂的用户需求分解为线性的子任务计划,这种规划能力是处理现实世界复杂问题的关键。过去的研究表明,在相同模型能力下,如果缺乏系统的分解和规划,许多真实问题的成功率会大打折扣;而加入规划后,成功率会有显著提升。
当一个任务拆解出若干子任务后,系统会根据子任务类型,动态将其分配给预先定义或适配的 Agent(有各自的工具集和能力倾向)。这种 临时分配 + 工具协作的机制,可以最大化利用多模型、多工具的组合优势,提高应对不同问题场景的灵活度。Agent 预先装备了不同的工具集以应对不同类型的任务,提高了系统的灵活性和效率。
用户在前端或命令行中输入复杂的需求,例如"写一段代码完成某种功能,并自动部署到服务器上"。
系统先调用 PlanningTool,对需求进行分析与分解,形成一个线性结构的计划或任务序列。比如,会将需求拆解为:
这些子任务被记录在一个 plan 或类似结构中。
当某个子任务执行完毕后,系统会将执行结果、关键上下文信息进行必要的"总结与压缩"(以避免不断增加的冗长 Memory),然后存入当前的"Plan 内存"或全局可访问的共享内存。
当所有子任务执行完毕,系统对整体结果进行汇总并返回给用户,或完成如网页部署、自动执行脚本等操作。
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)和一些基础工具库:
这样的结构设计使得 OpenManus 在提供强大功能的同时保持了极高的可维护性和可扩展性。
OpenManus 的架构由四个主要模块构成:
示例代码(Manus 实现):
pythonclass 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()
)
)
其中,planning.py 实现了 Manus 著名的计划功能,用 Markdown 格式管理任务计划并跟踪执行进度。
pythonPLANNING_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 的系统提示则更加简洁:
pythonSYSTEM_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."
pythonstep_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.
"""
用户输入需求,调用 Manus agent 的 run 函数
run 函数循环执行 step 操作(来自 ReActAgent)
每个 step 包含 think(选工具)和 act(执行工具)两个环节
直接使用基础工具集(Python执行、搜索、浏览器、文件保存等)
使用 PlanningTool 对需求进行整体规划
针对每个子任务动态生成适合的上下文和指令
调用 Manus agent 执行各个子任务
维护计划状态和执行进度
值得注意的是,在当前版本中,虽然 PlanningFlow 具备多智能体调度的能力,但实际上只有单一的 Manus 智能体在执行任务。未来版本可引入更多专业化的 Agent 以充分发挥多智能体协作的优势。
与前文描述一致,OpenManus 实现了简单但有效的记忆管理和 Agent 分配机制:
Memory 管理:每个子任务执行后进行总结压缩,避免上下文过长
Agent 分配:当前主要基于正则匹配和规则,后续可考虑 LLM 辅助分配
虽然 OpenManus 在短时间内完成了初版本的核心功能,但团队也对后续的发展方向有清晰的思考,包括:
更深入地将 Tree-of-Thought 等搜索方法引入,或使用自适应的规划方案,让多智能体的任务分解与决策更高效、更精准。
在 GAIA、TAU-Bench、SWE-Bench 等多智能体任务集上进行持续评测,为后续工程优化提供量化标准,也能让社区更透明地了解 OpenManus 的改进幅度。
多模型适配与成本优化
记忆管理与信息追踪
在多智能体长链任务中,如何高效追踪并管理上下文信息是关键挑战;团队将探索更灵活的 memory 结构,避免信息丢失与无效重复。
随着工具数量与类型增加,Agent 对于工具选择、调用参数、执行顺序的管理将愈发复杂;如何让 Agent 自动创建或改写工具,也将成为下一阶段研究的热点。
多智能体在代码生成、网站搭建、数据分析等场景已有快速落地趋势。只有在"真实场景任务"和"用户效果"上极致打磨,才能促使用户持续使用 Agent 并产生商业价值。
OpenManus 在短时间里得以火速上线,与其团队早期在多智能体领域的系列研究息息相关。MetaGPT、Data Interpreter、AFlow、FACT、SELA、SPO 等项目不仅在论文、开源代码层面做了长期积累,也对多智能体的核心模块——规划、工具调用、搜索与记忆——进行了深入探索。其中:
这些项目形成了一个庞大的多智能体技术储备,为 OpenManus 的快速构建提供了坚实的"技术底座"。
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!