跳转到内容

软件公司隐喻与多 Agent 系统

学习目标

理解 MetaGPT 的核心设计理念 Code = SOP(Team),以及如何将人类软件工程的流程编码为多 Agent 协作系统。


项目实践

软件公司隐喻

MetaGPT 的核心理念是将 LLM 驱动的 Agent 组织成一个虚拟软件公司,每个 Agent 扮演一个特定角色:

角色默认名称职责输出
ProductManagerAlice需求分析、PRD 编写docs/prd.json
ArchitectBob系统设计、API 定义docs/system_design.json
Engineer2Alex代码编写、实现src/*.py
TeamLeaderEdward任务协调、进度管理内部调度
DataAnalystDavid数据分析、可视化Python 脚本 + 图表

核心公式:Code = SOP(Team)

这意味着代码产出不是靠单个 LLM 的自由发挥,而是靠 Team 中各个角色按照 SOP(标准作业程序)协同完成的确定性流程。

Team 组装与运行

metagpt/software_company.py 中的 generate_repo() 函数是入口:

from metagpt.roles import (
TeamLeader, ProductManager, Architect, Engineer2, DataAnalyst
)
from metagpt.team import Team
company = Team(context=ctx)
company.hire([
TeamLeader(),
ProductManager(),
Architect(),
Engineer2(),
DataAnalyst(),
])
company.invest(investment=3.0) # 设定预算
company.run_project(idea="Create a 2048 game")
await company.run(n_round=5)

Team.run() 的核心循环:

async def run(self, n_round=3, idea="", auto_archive=True):
while n_round > 0:
if self.env.is_idle: # 所有角色都空闲时退出
break
n_round -= 1
self._check_balance() # 检查预算
await self.env.run() # 并行运行所有角色
self.env.archive(auto_archive)

MGX 产品化

MetaGPT 团队将框架产品化为 MGX(MetaGPT X),获得 Product Hunt 2025 年 3 月 Product of the Week #1。Team 类中的 use_mgx 标志控制是否使用 MGXEnv 环境。


问题与规避

预算限制导致运行中断

  • investment 参数设定最大预算(美元),默认 $3.0
  • NoMoneyExceptiontotal_cost >= max_budget 时抛出,终止运行
  • 对策:根据任务复杂度调整 investment,或使用更便宜的模型

角色数量与运行轮次

  • 默认 5 个角色,至少需要 5 轮(n_round=5)才能完成全流程
  • 如果启用 QA 测试(run_tests=True),需要至少 8 轮
  • 对策:简单任务可以减少角色(如只用 DataInterpreter)

设计取舍

领域专注 vs 通用性

  • MetaGPT 专注于软件开发领域,SOP 围绕 PRD → Design → Code → Review 设计
  • 与 CrewAI 的对比:CrewAI 提供通用多 Agent 编排(适用于调研、写作、数据分析等),MetaGPT 则深耕软件工程
  • 代价:不适用于非软件工程场景(如市场调研、创意写作),但可以通过扩展环境(Android/Minecraft/Werewolf)支持其他领域

固定 SOP vs 动态协商

  • 角色间的协作是预先定义的(通过 _watch() 订阅特定 Action 的输出),不是运行时协商的
  • 优点:流程确定性强、可预测
  • 代价:灵活性不如自由协商的多 Agent 系统

参考来源

  • 源码验证: metagpt/software_company.pygenerate_repo() 组装团队
  • 源码验证: metagpt/team.py — Team 类的 hire()run() 方法
  • 源码验证: README.md — “Software Company as Multi-Agent System” 设计理念