开源精选 MetaGPT多AgentSOP软件开发开源
云
云铭
进化之路 · 扫码阅读
微信 · 浏览器扫码
在手机上获得更好的阅读体验
MetaGPT深度解析:让AI模拟一家软件公司的多Agent实验
“只需要一句话需求,就能自动生成PRD、系统设计、API文档和可运行的代码。“——这是MetaGPT最吸引人的承诺,也是它68K Star的来源。
项目速览
| 维度 | 详情 |
|---|---|
| GitHub | geekan/MetaGPT |
| Stars | ~68K |
| 语言 | Python |
| 许可证 | MIT |
| 定位 | 模拟软件公司SOP的多Agent框架 |
核心思想:SOP驱动的Agent协作
为什么是SOP
MetaGPT的核心洞察:人类组织之所以能高效协作,不是因为每个人都全知全能,而是因为SOP(标准作业程序)。
传统Agent协作:自由对话(低效、容易跑偏)
MetaGPT模式:严格SOP(高效、产出可预期)
类比:
自由对话 = 一群人在群里头脑风暴
SOP驱动 = 专业团队按流程协作
软件公司的SOP映射
真实公司角色 MetaGPT Agent
─────────── ──────────────
CEO/产品经理 → ProductManager Agent
架构师 → Architect Agent
项目经理 → ProjectManager Agent
工程师 → Engineer Agent
QA测试 → QA Agent
核心流程
一次完整的”一句话开发”
输入:"做一个类似抖音的短视频App"
Step 1: ProductManager Agent
├── 市场调研
├── 竞品分析
├── 用户画像
└── 产出:结构化的PRD(产品需求文档)
Step 2: Architect Agent
├── 系统架构设计
├── 技术选型
├── 模块划分
└── 产出:系统设计文档 + 数据库Schema
Step 3: ProjectManager Agent
├── 任务分解
├── 优先级排序
├── 依赖分析
└── 产出:开发任务清单
Step 4: Engineer Agent(s)
├── 按任务清单逐个实现
├── 编写代码
├── API实现
└── 产出:可运行的代码
Step 5: QA Agent
├── 代码审查
├── 测试用例编写
├── 集成测试
└── 产出:测试报告 + 修复建议
整个过程是结构化的文档驱动——每个Agent的产出是标准化文档,下游Agent读取上游文档继续工作。
关键设计
1. 角色定义
from metagpt.roles import ProductManager, Architect, Engineer, QaEngineer
# MetaGPT内置了预定义角色
pm = ProductManager(
name="产品经理",
profile="注重用户体验和数据驱动决策",
goal="产出一份清晰完整的PRD",
)
architect = Architect(
name="系统架构师",
profile="全栈工程师背景,擅长分布式系统",
goal="设计可扩展、可维护的系统架构",
)
2. Action(行为)系统
from metagpt.actions import Action, WritePRD, WriteDesign, WriteCode
# 每个角色有一组可执行的行为
class WritePRD(Action):
PROMPT_TEMPLATE: str = """
作为产品经理,基于以下需求编写PRD:
## 背景
{context}
## PRD结构
### 1. 产品概述
### 2. 目标用户
### 3. 功能需求(按P0/P1/P2优先级)
### 4. 非功能需求
### 5. 用户故事
### 6. 成功指标
## 历史PRD参考
{history_prd}
"""
async def run(self, context: str, history_prd: str = ""):
prompt = self.PROMPT_TEMPLATE.format(
context=context,
history_prd=history_prd
)
prd = await self.llm.aask(prompt)
return prd
3. 记忆系统
# MetaGPT的记忆分为三个层次
class Message:
content: str # 消息内容
role: str # 发送角色
cause_by: Action # 触发该消息的行为
class Memory:
messages: List[Message]
documents: Dict # 结构化的文档(PRD、设计稿等)
context: List # 当前任务的上下文
4. 环境(Environment)
from metagpt.environment import Environment
# 在环境中注册所有角色
env = Environment()
env.add_roles([pm, architect, engineer1, engineer2, qa])
# 发布需求
env.publish_message(
Message(
content="开发一个支持多币种的个人记账App",
role="Human"
)
)
# 运行
await env.run()
实战演示
从需求到代码的完整示例
import asyncio
from metagpt.team import Team
from metagpt.roles import ProductManager, Architect, Engineer
async def build_app(idea: str):
# 组建团队
team = Team()
# 招聘角色
team.hire([
ProductManager(),
Architect(),
Engineer(n=2), # 2个工程师
])
# 设定投资预算(类比真实项目)
team.invest(investment=5.0) # $5预算
# 启动项目
project = await team.run(
idea=idea,
max_auto_summarize_code=2 # 最多做2轮自动代码审查
)
return {
"prd": project.docs.get("prd"),
"design": project.docs.get("system_design"),
"code": project.code,
"cost": project.cost,
"duration": project.duration
}
# 运行
result = asyncio.run(
build_app("开发一个支持多币种、多账户、自动分类的个人记账应用")
)
MetaGPT vs CrewAI vs AutoGen
| 维度 | MetaGPT | CrewAI | AutoGen |
|---|---|---|---|
| 协作方式 | 文档驱动 | 角色分工 | 对话驱动 |
| 结构化程度 | 极高(SOP) | 高 | 低(自由对话) |
| 软件开发 | 原生支持 | 需自行编排 | 需自行编排 |
| 输出质量 | 高(标准化) | 高 | 不稳定 |
| 灵活性 | 低 | 中 | 高 |
| 学习曲线 | 中 | 低 | 中 |
MetaGPT的最适用场景
✅ 适合:
├── 从零到一的软件原型开发
├── 需求分析和技术方案编写
├── 教学演示(展示AI协作能力)
├── 探索性项目(快速试错)
└── 文档密集型项目
⚠️ 需要注意:
├── 生成的代码可能需要人工修复
├── 复杂项目(>5个模块)质量显著下降
├── 成本不可忽视(单次复杂项目$3-20)
└── 不适合作为持续集成的一部分
局限性
- SOP的刚性 — 固定流程不适合所有类型的项目
- 上下文丢失 — 长项目(>50步)会出现信息遗忘
- 代码质量 — 生成的代码是”能跑”级别,非生产级
- 成本 — 多个Agent顺序执行,token消耗大
- 幻觉放大 — 一个Agent的错误被下游Agent放大
MetaGPT最大的贡献,是证明了”用人类组织的协作模式来驱动AI Agent”是一条可行的路。SOP不是束缚,而是在AI随机性中注入确定性的方式。如果你需要一个能帮你从PRD写到代码的AI团队原型,MetaGPT是一个绝佳的起点——但要准备好为”生产级”做大量的人工打磨。