Skip to content

haomehaode/manus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

智能体任务执行系统

Python License Version

📖 项目简介

Manus 是一个基于多智能体架构的智能任务执行系统,能够自动分析用户意图、规划任务、执行操作并验证结果。系统采用模块化设计,支持多种AI模型和工具集成,适用于自动化任务处理、智能问答、数据分析等场景。

✨ 核心特性

  • 🤖 多智能体协作: 意图分析、任务规划、执行、验证等智能体协同工作
  • 🛠️ 丰富的工具生态: 支持文件操作、网络搜索、MCP协议工具等
  • 🔄 异步任务处理: 基于asyncio的高性能异步任务执行
  • 🎯 智能意图识别: 自动分析用户任务类型并选择合适的执行策略
  • 📊 实时状态监控: 提供任务执行状态和系统运行状态监控
  • 🌐 多AI模型支持: 支持OpenAI、Anthropic、Gemini等主流AI模型

🏗️ 系统架构

┌─────────────────────────────────────────────────────────────┐
│                    Manus 智能体系统                          │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │  意图分析   │  │  任务规划   │  │  任务执行   │        │
│  │  智能体     │  │  智能体     │  │  智能体     │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
│           │              │              │                 │
│           ▼              ▼              ▼                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              任务执行流水线                          │   │
│  │  意图分析 → 规划 → 执行 → 验证 → 汇总               │   │
│  └─────────────────────────────────────────────────────┘   │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │  工具注册   │  │  任务管理   │  │  结果验证   │        │
│  │  中心       │  │  系统       │  │  智能体     │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
└─────────────────────────────────────────────────────────────┘

📁 文件结构

manus/
├── 📁 config/                    # 配置文件目录
│   ├── ai_models.json           # AI模型配置
│   └── servers.json             # 服务器配置
├── 📁 src/                       # 源代码目录
│   ├── 📁 agents/               # 智能体模块
│   │   ├── base.py              # 智能体基类
│   │   ├── intent.py            # 意图分析智能体
│   │   ├── planner.py           # 任务规划智能体
│   │   ├── worker.py            # 任务执行智能体
│   │   ├── verifier.py          # 结果验证智能体
│   │   ├── llm.py               # LLM接口封装
│   │   └── promp.py             # 提示词管理
│   ├── 📁 tools/                # 工具模块
│   │   ├── base.py              # 工具基类
│   │   ├── registry.py          # 工具注册中心
│   │   ├── 📁 local/            # 本地工具
│   │   │   ├── file_tools.py    # 文件操作工具
│   │   │   └── baidu_search_tools.py  # 百度搜索工具
│   │   └── 📁 mcp/              # MCP协议工具
│   │       └── mcp_tools.py     # MCP工具实现
│   ├── models.py                # 数据模型定义
│   └── system.py                # 系统核心编排器
├── 📁 venv/                     # 虚拟环境
├── config.py                    # 系统配置管理
├── demo.py                      # 演示脚本
├── env.example                  # 环境变量示例
├── requirements.txt             # 依赖包列表
├── run.py                       # 主程序入口
└── README.md                    # 项目说明文档

🚀 系统优化特性

✨ 智能验证与重试优化

系统经过深度优化,实现了智能的任务验证和重试机制:

🔍 工具智能选择

  • BaiduWebSearch: 专门用于事实性信息查询(如出生日期、年龄、地点等)
  • BaiduAISearch: 专门用于复杂问题分析、智能问答和多媒体资源搜索
  • 大模型能根据查询类型自动选择合适的搜索工具

📊 智能质量评估

  • 验证标准优化:重点关注信息准确性而非结果数量
  • 评分体系:70分以上认为质量达标,避免不必要的重试
  • 权威性评估:优先信任权威来源(如百度百科、豆瓣等)

🔄 智能重试决策

  • 避免过度重试:第一轮结果质量达标时不再重试
  • 结果导向评估:重点关注是否回答了用户问题
  • 重试条件明确:只在完全失败或信息严重缺失时才重试

时间信息准确性

  • 2025年基准:所有时间计算都基于2025年
  • 年龄计算准确:确保人物年龄计算的正确性
  • 信息时效性:优先使用最新和权威的信息源

📈 优化效果对比

方面 优化前 优化后
工具选择 随机选择,可能不合适 智能选择,根据查询类型
验证评分 70分以下,触发重试 80-90分,直接完成
重试次数 3轮重试,浪费时间 0-1轮,提高效率
时间准确性 使用过时年份(2023年) 使用正确年份(2025年)
用户体验 等待时间长,结果可能错误 响应快速,结果准确

🚀 快速开始

环境要求

  • Python 3.8+
  • Windows 10/11 或 Linux/macOS
  • 至少 2GB 可用内存

安装步骤

  1. 克隆项目

    git clone <repository-url>
    cd manus
  2. 创建虚拟环境

    python -m venv venv
    # Windows
    venv\Scripts\activate
    # Linux/macOS
    source venv/bin/activate
  3. 安装依赖

    pip install -r requirements.txt
  4. 配置环境变量

    cp env.example .env
    # 编辑 .env 文件,填入您的API密钥
  5. 验证安装

    python config.py

配置说明

.env 文件中配置以下关键参数:

# AI模型API密钥(至少配置一个)
OPENAI_API_KEY=sk-your-openai-api-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key
GEMINI_API_KEY=AIza-your-gemini-api-key

# 系统配置
LOG_LEVEL=INFO
TASK_TIMEOUT=300
MAX_CONCURRENT_TASKS=5

# 工具配置
ENABLE_WEB_SEARCH=true
ENABLE_FILE_OPERATIONS=true

🎮 使用方法

命令行运行

  1. 单次任务执行

    python run.py --mode single --task "搜索Python异步编程教程"
  2. 交互模式

    python run.py --mode interactive
  3. 指定日志级别

    python run.py --mode single --task "分析项目代码" --log-level DEBUG

交互模式命令

在交互模式下,您可以使用以下命令:

  • help - 显示帮助信息
  • tools - 显示所有可用工具
  • status - 显示系统状态
  • clear - 清屏
  • quit / exit - 退出程序

示例任务

系统支持多种类型的任务:

  • 🤖 AI问答: "你是什么模型?"
  • 🔍 搜索任务: "搜索关于Python异步编程的信息"
  • 📁 文件任务: "检查当前项目的文件结构"
  • 📊 分析任务: "分析项目代码的复杂度"
  • 🌐 网络任务: "查询当前天气情况"

🔄 运行流程

任务执行流程

用户提交任务
    ↓
1. 意图分析 (IntentClassifierAgent)
    ↓
2. 任务规划 (TaskPlannerAgent) 
    ↓
3. 串行执行子任务 (WorkerAgent + VerifierAgent)
   ├── 第1轮执行计划
   │   ├── 执行子任务1 → 立即验证 → 通过则继续,失败则重试(最多3次)
   │   ├── 执行子任务2 → 立即验证 → 通过则继续,失败则重试(最多3次)
   │   ├── ...
   │   └── 执行子任务N → 立即验证 → 通过则继续,失败则重试(最多3次)
   │
   ├── 某个子任务3次失败 → 立即停止 → 重新规划 🔄
   │
   ├── 第2轮执行计划(重新规划后)
   │   ├── 基于失败原因生成新的子任务序列
   │   └── 重复执行流程
   │
   ├── 第3轮执行计划(重新规划后)
   │   ├── 最后一次重新规划机会
   │   └── 重复执行流程
   │
   └── 达到最大重新规划次数 → 任务失败 ❌
    ↓
4. 生成最终结果(最后一个子任务的结果)
    ↓
任务完成

详细步骤说明

  1. 系统初始化 (run.py)

    • 加载环境变量和配置
    • 初始化智能体系统
    • 注册可用工具
  2. 任务提交 (ManusSystem.submit_task)

    • 创建任务对象
    • 初始化任务上下文
    • 启动异步执行流水线
  3. 意图分析 (IntentClassifierAgent)

    • 分析用户任务类型
    • 确定执行策略
    • 选择合适的工具集
  4. 任务规划 (TaskPlannerAgent)

    • 分解复杂任务为子任务
    • 制定执行计划
    • 分配执行资源
  5. 任务执行 (WorkerAgent)

    • 按计划执行子任务
    • 调用相应工具
    • 收集执行结果
  6. 智能验证 (VerifierAgent)

    • 单任务验证:对主要任务结果进行质量评估
    • 智能决策:基于结果质量判断是否需要重试
    • 避免重试:如果结果质量达标(≥70分),直接完成
    • 必要重试:只有在结果质量不达标时才重新执行
  7. 结果汇总 (ManusSystem)

    • 聚合执行结果
    • 生成最终报告
    • 更新任务状态

智能体协作机制

  • 意图分析智能体: 负责理解用户意图,确定任务类型
  • 规划智能体: 将复杂任务分解为可执行的子任务序列
  • 执行智能体: 负责具体任务的执行,调用相应工具
  • 验证智能体: 验证执行结果的正确性和完整性

🛠️ 工具系统

本地工具

  • 文件操作工具 (file_tools.py)

    • 文件读写、目录遍历、文件搜索等
  • 百度搜索工具 (baidu_search_tools.py)

    • 网络搜索、内容抓取等

MCP协议工具

  • SEO数据库工具: 关键词管理、监控数据等
  • 百度建议工具: 搜索建议、相关搜索等

工具注册机制

系统采用插件化工具注册机制,支持动态加载和配置工具:

# 工具注册示例
@tool_registry.register("file_reader")
class FileReaderTool(BaseTool):
    def execute(self, file_path: str) -> str:
        # 工具实现逻辑
        pass

⚙️ 配置管理

环境配置

系统支持多环境配置:

  • 开发环境 (DevelopmentConfig): 调试模式,详细日志
  • 生产环境 (ProductionConfig): 性能优化,错误日志
  • 测试环境 (TestingConfig): 测试模式,禁用外部服务

动态配置

支持通过环境变量动态调整:

# 调整工作智能体数量
WORKER_COUNT=5

# 设置任务超时时间
TASK_TIMEOUT=600

# 控制并发任务数
MAX_CONCURRENT_TASKS=10

📊 监控和日志

系统状态监控

  • 任务执行统计
  • 智能体运行状态
  • 工具使用情况
  • 系统性能指标

日志系统

使用 loguru 提供结构化日志:

  • 支持多级别日志
  • 彩色输出格式
  • 异步日志写入
  • 日志轮转管理

🔧 开发指南

添加新工具

  1. 继承 BaseTool
  2. 实现 execute 方法
  3. 使用装饰器注册工具
  4. 添加工具描述和参数说明

扩展智能体

  1. 继承 BaseAgent
  2. 实现核心业务逻辑
  3. 集成到系统流水线
  4. 添加配置和参数

自定义配置

  1. 修改 config.py 文件
  2. 添加新的配置项
  3. 更新环境变量示例
  4. 验证配置有效性

🧪 测试

运行测试

# 运行所有测试
python -m pytest tests/

# 运行特定测试
python -m pytest tests/test_system.py

# 生成覆盖率报告
python -m pytest --cov=src tests/

测试覆盖

  • 单元测试: 核心功能模块
  • 集成测试: 智能体协作
  • 端到端测试: 完整任务流程

🚀 部署

生产环境部署

  1. 环境准备

    # 使用生产配置
    export ENVIRONMENT=production
    export LOG_LEVEL=WARNING
  2. 性能优化

    # 增加工作智能体数量
    export WORKER_COUNT=10
    export MAX_CONCURRENT_TASKS=20
  3. 监控配置

    # 启用详细监控
    export ENABLE_METRICS=true
    export METRICS_PORT=9090

Docker部署

FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
CMD ["python", "run.py", "--mode", "interactive"]

🤝 贡献指南

开发流程

  1. Fork 项目仓库
  2. 创建功能分支
  3. 提交代码更改
  4. 创建 Pull Request

代码规范

  • 遵循 PEP 8 代码风格
  • 添加适当的类型注解
  • 编写清晰的文档字符串
  • 确保测试覆盖率

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🆘 常见问题

Q: 系统启动失败怎么办?

A: 检查环境变量配置,确保API密钥正确设置,查看日志获取详细错误信息。

Q: 任务执行超时怎么处理?

A: 调整 TASK_TIMEOUT 配置,或检查网络连接和外部服务状态。

Q: 如何添加自定义工具?

A: 参考现有工具实现,继承 BaseTool 类并注册到工具注册中心。

Q: 系统性能如何优化?

A: 调整工作智能体数量、并发任务数,使用更快的AI模型API。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages