价格

项目总览

相关源文件

本页面内容基于以下源文件生成:

MetaGPT 是一个多智能体框架,旨在通过为 GPT 分配不同角色来形成协作实体,从而处理复杂任务。该项目支持多语言文档,包括中文、英文、法文和日文,体现了其国际化设计理念。根据 README.md:1-39 的描述,MetaGPT 的核心理念是让 GPT 模拟软件公司的工作方式,通过角色协作来完成更复杂的任务。

项目的启动入口逻辑已从 startup.py 迁移至 software_company.py,这一变更在 metagpt/startup.py:1-10 中有明确说明,标记为已弃用并将在未来移除。

核心架构设计

MetaGPT 的核心架构围绕 Team 类展开,该类作为多智能体协作的核心容器,负责管理角色、环境和投资。根据 metagpt/team.py:32-138Team 类继承自 BaseModel,包含以下关键组件:

Team 类职责边界

核心职责

  • 管理多个智能体角色(Agent)的生命周期
  • 维护智能体间的通信环境(Environment)
  • 控制项目预算与投资管理
  • 提供序列化与反序列化能力,支持项目恢复

不负责

  • 具体业务逻辑的实现(由各 Role 负责)
  • LLM 调用的直接管理(由 Context 和 LLM 模块负责)

关键数据结构

python
1class Team(BaseModel):
2    env: Optional[Environment] = None      # 智能体通信环境
3    investment: float = Field(default=10.0) # 项目投资额度
4    idea: str = Field(default="")           # 项目创意/需求
5    use_mgx: bool = Field(default=True)     # 是否使用 MGX 环境

Team 类的初始化逻辑支持两种环境模式:标准 EnvironmentMGXEnv,这一选择由 use_mgx 参数控制(metagpt/team.py:48-53)。

序列化机制

项目采用 JSON 格式进行状态持久化,SerializationMixin 类提供了通用的序列化与反序列化能力。根据 metagpt/schema.py:72-191,序列化路径默认为 ./workspace/storage/ClassName.json,支持异常处理和文件回退机制。

python
1# 序列化示例(metagpt/schema.py:74-93)
2def serialize(self, file_path: str = None) -> str:
3    file_path = file_path or self.get_serialization_path()
4    serialized_data = self.model_dump()
5    write_json_file(file_path, serialized_data, use_fallback=True)
6    return file_path

架构图

正在加载图表渲染器...

架构要点说明

  1. 入口层通过 startup() 函数接收 CLI 参数,委托给 generate_repo() 执行核心逻辑
  2. Team 类作为核心容器,管理 Environment 和多个 Role 实例
  3. 角色层包含 5 种预定义角色,模拟软件公司团队结构(metagpt/software_company.py:46-53
  4. 基础设施层通过 Context 类统一管理配置、LLM 和日志

运行机制与流程

完整运行流程

项目的运行流程从 CLI 入口开始,经过团队组建、投资分配,最终进入多轮迭代执行。根据 metagpt/software_company.py:14-153,核心流程如下:

阶段一:初始化与配置

python
1# metagpt/software_company.py:29-41
2config.update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)
3ctx = Context(config=config)

配置更新通过 update_via_cli 方法完成,支持项目路径、增量模式等参数。Context 对象作为全局上下文传递给 Team

阶段二:团队组建

python
1# metagpt/software_company.py:44-54
2company = Team(context=ctx)
3company.hire([
4    TeamLeader(),
5    ProductManager(),
6    Architect(),
7    Engineer2(),
8    DataAnalyst(),
9])

hire 方法将角色添加到环境中(metagpt/team.py:83-85),每个角色继承自 Role 基类。

阶段三:投资与执行

python
1# metagpt/software_company.py:71-72
2company.invest(investment)
3asyncio.run(company.run(n_round=n_round, idea=idea))

invest 方法设置预算上限(metagpt/team.py:92-96),run 方法启动多轮迭代。

关键调用链时序图

正在加载图表渲染器...

流程要点说明

  1. CLI 参数通过 typer 库解析,支持投资额、轮次、代码审查等选项(metagpt/software_company.py:78-101
  2. run_project 方法将用户需求封装为 Message 对象并发布到环境(metagpt/team.py:102-107
  3. 主循环检查 env.is_idle 状态,若所有角色空闲则提前终止(metagpt/team.py:128-131
  4. 每轮迭代前检查预算,超出时抛出 NoMoneyExceptionmetagpt/team.py:98-100

错误处理与边界条件

预算超限处理

python
1# metagpt/team.py:98-100
2def _check_balance(self):
3    if self.cost_manager.total_cost >= self.cost_manager.max_budget:
4        raise NoMoneyException(self.cost_manager.total_cost, f"Insufficient funds: {self.cost_manager.max_budget}")

恢复路径验证

python
1# metagpt/software_company.py:64-66
2if not stg_path.exists() or not str(stg_path).endswith("team"):
3    raise FileNotFoundError(f"{recover_path} not exists or not endswith `team`")

反序列化文件缺失

python
1# metagpt/team.py:72-75
2if not team_info_path.exists():
3    raise FileNotFoundError(
4        "recover storage meta file `team.json` not exist, not to recover and please start a new project."
5    )

配置与基础设施

配置管理机制

配置系统采用分层设计,CLIParams 处理命令行参数,Config 类继承并扩展为完整配置。根据 metagpt/config2.py:30-178,关键配置项包括:

配置类职责关键字段
CLIParamsCLI 参数模型project_path, project_name, inc, reqa_file
Config完整配置llm, 继承自 CLIParams 的所有字段

参数验证逻辑

python
1# metagpt/config2.py:40-46
2@model_validator(mode="after")
3def check_project_path(self):
4    if self.project_path:
5        self.inc = True
6        self.project_name = self.project_name or Path(self.project_path).name
7    return self

当指定 project_path 时,自动启用增量模式(inc=True)并推断项目名称。

日志系统设计

日志系统基于 loguru 库构建,支持多级别输出和 LLM 流日志。根据 metagpt/logs.py:27-73

日志级别配置

python
1# metagpt/logs.py:40-52
2def define_log_level(print_level="INFO", logfile_level="DEBUG", name: str = None):
3    global _print_level
4    _print_level = print_level
5    
6    log_name = f"{name}_{formatted_date}" if name else formatted_date
7    _logger.remove()
8    _logger.add(sys.stderr, level=print_level)
9    _logger.add(METAGPT_ROOT / f"logs/{log_name}.txt", level=logfile_level)
10    return _logger

LLM 流日志

python
1# metagpt/logs.py:58-73
2def log_llm_stream(msg):
3    queue = get_llm_stream_queue()
4    if queue:
5        queue.put_nowait(msg)
6    _llm_stream_log(msg)

支持将 LLM 响应流式输出到队列,便于实时展示。

项目路径管理

路径管理通过环境变量和文件系统检测确定项目根目录。根据 metagpt/const.py:12-35

python
1# metagpt/const.py:19-35
2def get_metagpt_root():
3    project_root_env = os.getenv("METAGPT_PROJECT_ROOT")
4    if project_root_env:
5        project_root = Path(project_root_env)
6    else:
7        project_root = get_metagpt_package_root()
8        for i in (".git", ".project_root", ".gitignore"):
9            if (project_root / i).exists():
10                break
11        else:
12            project_root = Path.cwd()
13    return project_root

优先级:环境变量 > 包根目录检测 > 当前工作目录。

核心特性与能力

多智能体协作

MetaGPT 的核心特性是通过角色分工实现复杂任务的协作处理。根据 metagpt/software_company.py:46-53,默认团队包含 5 种角色:

角色职责输出产物
TeamLeader团队协调与任务分配任务计划
ProductManager需求分析与 PRD 编写产品需求文档
Architect系统架构设计架构设计文档
Engineer2代码实现源代码
DataAnalyst数据分析与洞察分析报告

增量开发支持

项目支持在现有代码库基础上进行增量开发,通过 inc 参数和 project_path 指定旧版本路径(metagpt/software_company.py:86-90)。

项目恢复机制

通过 recover_path 参数可以从序列化存储中恢复项目状态(metagpt/software_company.py:99),支持断点续传和状态回滚。

量化能力指标

指标数值说明
预定义角色数5+PM、Architect、Engineer 等
支持语言数4中、英、法、日
默认投资额$3.0可通过 CLI 调整
默认迭代轮次5可配置,测试模式需 8+
序列化格式JSON支持完整状态恢复

技术栈与依赖

技术组件用途版本要求
Python核心语言>= 3.8(推测)
Pydantic数据验证与模型v2(BaseModel)
TyperCLI 框架用于命令行解析
Loguru日志系统多级别日志管理
Asyncio异步执行协程支持
YAML配置文件config2.yaml

目录结构

metagpt/
├── software_company.py    # 主入口与 CLI
├── startup.py             # 已弃用入口
├── team.py                # 多智能体容器
├── config2.py             # 配置管理
├── context.py             # 全局上下文
├── llm.py                 # LLM 接口
├── logs.py                # 日志系统
├── schema.py              # 数据模型
├── const.py               # 常量定义
└── roles/                 # 角色实现
    ├── product_manager.py
    ├── architect.py
    ├── engineer.py
    └── ...

适用场景

  1. 自动化软件开发:从需求到代码的完整流程自动化
  2. 原型快速生成:基于创意快速生成可运行原型
  3. 代码库增量开发:在现有项目基础上添加新功能
  4. 多智能体研究:作为多智能体协作的研究平台
  5. 教育演示:展示 AI 驱动的软件工程流程

报告阅读路线图

正在加载图表渲染器...

推荐阅读顺序

  1. 项目总览(当前章节):了解整体定位与核心概念
  2. 架构设计:深入理解模块划分与依赖关系
  3. 数据流分析:掌握消息传递与状态管理机制
  4. API 设计:学习接口规范与扩展点
  5. 部署与运维:实践生产环境部署