开源精选 MetaGPT多AgentSOP软件开发开源

MetaGPT深度解析:让AI模拟一家软件公司的多Agent实验

“只需要一句话需求,就能自动生成PRD、系统设计、API文档和可运行的代码。“——这是MetaGPT最吸引人的承诺,也是它68K Star的来源。

项目速览

维度详情
GitHubgeekan/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

维度MetaGPTCrewAIAutoGen
协作方式文档驱动角色分工对话驱动
结构化程度极高(SOP)低(自由对话)
软件开发原生支持需自行编排需自行编排
输出质量高(标准化)不稳定
灵活性
学习曲线

MetaGPT的最适用场景

✅ 适合:
├── 从零到一的软件原型开发
├── 需求分析和技术方案编写
├── 教学演示(展示AI协作能力)
├── 探索性项目(快速试错)
└── 文档密集型项目

⚠️ 需要注意:
├── 生成的代码可能需要人工修复
├── 复杂项目(>5个模块)质量显著下降
├── 成本不可忽视(单次复杂项目$3-20)
└── 不适合作为持续集成的一部分

局限性

  1. SOP的刚性 — 固定流程不适合所有类型的项目
  2. 上下文丢失 — 长项目(>50步)会出现信息遗忘
  3. 代码质量 — 生成的代码是”能跑”级别,非生产级
  4. 成本 — 多个Agent顺序执行,token消耗大
  5. 幻觉放大 — 一个Agent的错误被下游Agent放大

MetaGPT最大的贡献,是证明了”用人类组织的协作模式来驱动AI Agent”是一条可行的路。SOP不是束缚,而是在AI随机性中注入确定性的方式。如果你需要一个能帮你从PRD写到代码的AI团队原型,MetaGPT是一个绝佳的起点——但要准备好为”生产级”做大量的人工打磨。

GitHub: https://github.com/geekan/MetaGPT