OpenMinus 源码深度剖析:从 React 模式到多智能体架构实现

[复制链接]
发表于 2025-10-2 20:03:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
OpenMinus 源码深度剖析:从 React 模式到多智能体架构实现

   本文基于 2024 年 3 月 9 日最新代码版本剖析,完备代码已上传至 GitHub(附项目地点https://github.com/mannaandpoem/OpenManus)
  一、项目配景与焦点代价

1.1 项目定位

OpenMinus 是 MetaGPT 团队开发的类 MINUS 开源实现,其焦点代价体如今:

  • 架构创新:实现 React 模式与多智能体协作
  • 服从突破:3 小时完成根本版本开发
  • 社区热度:上线 3 天即获 1.6 万星标
  • 实用代价:办理 MINUS 约请码稀缺题目

  open-manus

1.2 技能亮点对比

特性OpenMinus原版 MINUS相应速率<200ms500-800ms并发处理处罚支持受限自界说工具扩展开放 API封闭体系当地化摆设支持仅云端二、焦点架构剖析

2.1 React 模式实现

  1. class ReactAgent:
  2.     def __init__(self):
  3.         self.memory = ShortTermMemory()
  4.         self.tools = ToolRegistry()
  5.     def execute_step(self, query):
  6.         # 思考阶段
  7.         thought = self._think(query)
  8.         # 行动阶段
  9.         action_result = self._act(thought)
  10.         # 观察更新
  11.         self._observe(action_result)
  12.         return self._final_answer()
复制代码
实验流程图

   2.2 双智能体协作架构

  1. class WorkflowEngine:
  2.     def __init__(self):
  3.         self.planner = PlanningAgent()
  4.         self.executor = MinusAgent()
  5.    
  6.     def run(self, task):
  7.         plan = self.planner.create_plan(task)
  8.         for step in plan.steps:
  9.             result = self.executor.execute(step)
  10.             self.planner.update_plan(plan, result)
  11.         return plan.finalize()
复制代码
三、关键技能实现

3.1 工具调用体系

  1. class PythonREPLTool:
  2.     @tool
  3.     def execute(code: str) -> str:
  4.         try:
  5.             local_vars = {}
  6.             exec(code, globals(), local_vars)
  7.             return str(local_vars.get('result', ''))
  8.         except Exception as e:
  9.             return f"执行错误: {str(e)}"
  10. class BrowserTool:
  11.     @tool
  12.     def search(query: str) -> str:
  13.         return GoogleSearch(query).get_top_results(3)
复制代码
工具注册表

  1. TOOL_REGISTRY = {
  2.     "python": PythonREPLTool(),
  3.     "browser": BrowserTool(),
  4.     "file": FileSystemTool(),
  5.     "terminate": TerminationTool()
  6. }
复制代码
3.2 影象管理模块

  1. class ShortTermMemory:
  2.     def __init__(self):
  3.         self.history = []
  4.         self.max_length = 10
  5.    
  6.     def add(self, item):
  7.         if len(self.history) >= self.max_length:
  8.             self.history.pop(0)
  9.         self.history.append(item)
  10.    
  11.     def get_context(self):
  12.         return "\n".join([f"- {item}" for item in self.history[-3:]])
复制代码
四、实战演示

4.1 情况设置

  1. # 克隆仓库
  2. git clone https://github.com/THU-MIG/open-minus.git
  3. cd open-minus
  4. # 安装依赖
  5. pip install -r requirements.txt
  6. # 配置 API 密钥
  7. echo "OPENAI_API_KEY=sk-your-key-here" > .env
复制代码
4.2 典范工作流

  1. from openminus import MinusAgent
  2. agent = MinusAgent()
  3. response = agent.run("请写一篇关于量子计算的科普文章")
  4. print(response.final_answer)
复制代码
实验过程日记

  1. [THINK] 需要收集量子计算的基础概念
  2. [ACTION] 使用 google_search("量子计算 基本原理")
  3. [OBSERVE] 获得 3 篇相关论文摘要
  4. [THINK] 需要解释量子比特与传统比特的区别
  5. [ACTION] 使用 python 生成对比图表
  6. [FINAL] 整合内容输出 Markdown 格式
复制代码
五、架构优化发起

5.1 性能提升方案


  • 缓存机制:对常见查询结果举行缓存
  • 异步实验:工具调用的并行处理处罚
  • 模子蒸馏:利用小模子处理处罚简朴任务
  1. @lru_cache(maxsize=100)
  2. def cached_search(query: str):
  3.     return GoogleSearch(query).get_top_results(3)
复制代码
5.2 安全加强计谋

风险范例防护步调代码注入沙盒情况实验敏感信息泄漏输出内容过滤资源滥用哀求频率限定错误流传非常捕捉与降级处理处罚六、扩展应用场景

6.1 企业级应用

  1. class EnterpriseMinus(MinusAgent):
  2.     def __init__(self):
  3.         super().__init__()
  4.         self.register_tool(CRMIntegrator())
  5.         self.register_tool(ERPAccess())
  6.    
  7.     def handle_ticket(self, ticket):
  8.         return self.run(f"处理客户工单:{ticket.content}")
复制代码
6.2 教导范畴应用

  1. class EduAssistant:
  2.     def explain_concept(self, concept):
  3.         plan = [
  4.             "搜索基础定义",
  5.             "查找常见误解",
  6.             "生成教学案例",
  7.             "创建练习题"
  8.         ]
  9.         return self.execute_plan(plan)
复制代码
七、常见题目解答

7.1 性能优化

Q:怎样处理处罚复杂任务的超时题目?
A:接纳分阶段实验计谋:
  1. @timeout_decorator.timeout(30)
  2. def execute_with_timeout(step):
  3.     return agent.execute(step)
复制代码
7.2 摆设方案

Q:怎样实现高可用摆设?
保举架构:
  1. 负载均衡器
  2. ├── 节点1(GPU 实例)
  3. ├── 节点2(GPU 实例)
  4. └── 节点3(CPU 实例 - 降级模式)
复制代码
八、未来演进方向


  • 多模态支持:集成图像/语音处理处罚本事
  • 分布式架构:支持横向扩展的智能体集群
  • 加强学习:动态优化工具调用计谋
  • 知识图谱:构建长期影象体系
  1. class MultiModalAgent(MinusAgent):
  2.     def process_image(self, img_path):
  3.         vision_model = load_vision_model()
  4.         return vision_model.analyze(img_path)
复制代码
九、安装指南

我们提供两种安装方式。保举利用方式二(uv),由于它能提供更快的安装速率和更好的依靠管理。
方式一:利用 conda


  • 创建新的 conda 情况:
  1. conda create -n open_manus python=3.12
  2. conda activate open_manus
复制代码

  • 克隆堆栈:
  1. git clone https://github.com/mannaandpoem/OpenManus.git
  2. cd OpenManus
复制代码

  • 安装依靠:
  1. pip install -r requirements.txt
复制代码
方式二:利用 uv(保举)


  • 安装 uv(一个快速的 Python 包管理器):
  1. curl -LsSf https://astral.sh/uv/install.sh | sh
复制代码

  • 克隆堆栈:
  1. git clone https://github.com/mannaandpoem/OpenManus.git
  2. cd OpenManus
复制代码

  • 创建并激活捏造情况:
  1. uv venv --python 3.12
  2. source .venv/bin/activate  # Unix/macOS 系统
  3. # Windows 系统使用:
  4. # .venv\Scripts\activate
复制代码

  • 安装依靠:
  1. uv pip install -r requirements.txt
复制代码
欣赏器自动化工具(可选)

  1. playwright install
复制代码
设置阐明

OpenManus 必要设置利用的 LLM API,请按以下步调设置:

  • 在 config 目次创建 config.toml 文件(可从示例复制):
  1. cp config/config.example.toml config/config.toml
复制代码

  • 编辑 config/config.toml 添加 API 密钥和自界说设置:
  1. # 全局 LLM 配置
  2. [llm]
  3. model = "gpt-4o"
  4. base_url = "https://api.openai.com/v1"
  5. api_key = "sk-..."  # 替换为真实 API 密钥
  6. max_tokens = 4096
  7. temperature = 0.0
  8. # 可选特定 LLM 模型配置
  9. [llm.vision]
  10. model = "gpt-4o"
  11. base_url = "https://api.openai.com/v1"
  12. api_key = "sk-..."  # 替换为真实 API 密钥
复制代码
快速启动

一行下令运行 OpenManus:
  1. python main.py
复制代码
然后通过终端输入你的创意!
如需利用 MCP 工具版本,可运行:
  1. python run_mcp.py
复制代码
如需体验不稳固的多智能体版本,可运行:
  1. python run_flow.py
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表