莫度编程网

技术文章干货、编程学习教程与开发工具分享

OpenManus 源码解析(一)—— 源码结构及包图

1. OpenManus 基础介绍

OpenManus 由 MetaGPT 团队创立的一个开源项目,于2025年3月发布。

OpenManus 是一个简洁通用的 Agent 框架,通过可插拔的 Tools 和 Prompt 组合设计,支持 Computer Use、Browser Use 和 Planning Use 等多种工具调用能力。

OpenManus 网址:https://github.com/mannaandpoem/OpenManus


2. OpenManus 支持的三种模式

2.1. 单代码模式

  • 通过 python man.py 启动
  • 异步执行 main 函数, 接收提示词作为参数,调用 Mnaus().run 函数执行实际逻辑

2.2. flow 流程模式

  • 通过 python run_flow.py 启动
  • 异步执行 run_flow() 函数, 接收提示词作为参数,执行过程分为两步:
    • 通过 FlowFactory.create_flow() 创建 flow 对象;
    • 调用 flow.execute(prompt) 执行实际逻辑

2.3. MCP 模式

  • 通过 python run_mcp_server.py 启动 mcp 服务端
  • 通过 python run_mcp.py 启动 mcp 客户端
  • 异步执行 run_mcp 函数,支持三种场景:
    • 单代理模式(--prompt):执行 MCPRunner().run_single_prompt()
    • 交互模式(--interactive):执行 MCPRunner().run_interactive()
    • 其他:执行 MCPRunner().run_default()
  • 支持两种连接方式:
    • stodio:stdio(Standard Input/Output,标准输入输出)来进行交互的。客户端通过启动服务器子进程,并利用标准输入(stdin)和标准输出(stdout)建立双向通信。这种模式导致 MCP 客户端与服务器之间存在强耦合,且每个服务器进程只能与启动它的客户端通信(1:1 的关系)
    • sse:SSE(Server-Sent Events,服务器发送事件)协议进行通信,使服务器能够作为一个独立运行的进程,支持多个客户端的灵活连接、使用和断开。基于 SSE 的服务器和客户端可以是完全解耦的进程,甚至运行在不同的节点上,从而提供更高的灵活性和扩展性。

3. OpenManus 包图

  • app/ -- 包含所有核心组件的主应用程序包
    • agent/ -- 包含处理任务执行逻辑的代理实现
    • flow/ -- 管理代理之间的高级工作流和编排
    • mcp/ -- MCP协议的 服务端实现
    • prompt/ -- 提示词相关的实现
    • sandbox/ -- 沙箱环境的实现
    • tool/ -- 工具集
    • bedrock.py -- Amazon bedrock相关
    • config.py -- 配置管理
    • exceptions.py -- 异常管理
    • llm.py -- LLM 通信接口实现
    • logger.py -- 日志管理
    • schema.py -- 数据模型和架构定义
  • 入口函数:
    • main.py -- 运行单个代理的简单入口函数
    • run_flow.py -- 在流程中运行代理的入口函数
    • run_mcp.py -- 运行 MCP 客户端的入口函数
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言

    Powered By Z-BlogPHP 1.7.4

    蜀ICP备2024111239号-43