软件公司隐喻与多 Agent 系统
学习目标
理解 MetaGPT 的核心设计理念 Code = SOP(Team),以及如何将人类软件工程的流程编码为多 Agent 协作系统。
项目实践
软件公司隐喻
MetaGPT 的核心理念是将 LLM 驱动的 Agent 组织成一个虚拟软件公司,每个 Agent 扮演一个特定角色:
| 角色 | 默认名称 | 职责 | 输出 |
|---|---|---|---|
| ProductManager | Alice | 需求分析、PRD 编写 | docs/prd.json |
| Architect | Bob | 系统设计、API 定义 | docs/system_design.json |
| Engineer2 | Alex | 代码编写、实现 | src/*.py |
| TeamLeader | Edward | 任务协调、进度管理 | 内部调度 |
| DataAnalyst | David | 数据分析、可视化 | 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.0NoMoneyException在total_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.py—generate_repo()组装团队 - 源码验证:
metagpt/team.py— Team 类的hire()、run()方法 - 源码验证:
README.md— “Software Company as Multi-Agent System” 设计理念