源码深度学习 · 零基础友好 · 20 天

MetaGPT 源码学习

把软件公司 SOP 抽象为多角色 AI 协作,自动从需求推进到设计、编码与测试。这不是 API 速查表,而是一条可以重复走的源码路线:每天用 30 分钟,从一个真实相对路径出发,先用类比建立直觉,再把它接回整条运行链路。

00

开篇 · 这是个什么项目

MetaGPT 可以先想成一间微型软件公司。它的代码不是一堆孤立文件:入口接到需求,核心对象做判断,工具或模型完成工作,状态把结果交给下一个环节。

💡 20 天的主线先找入口和地图,再跟一次真实任务穿过核心循环;随后研究状态、模型、工具与扩展;最后用复盘把全部概念连成一张可迁移的地图。不要背目录名,要不断问「谁创建它、它把什么交给谁」。
大白话读源码像参观工厂:第一天先看门牌和楼层,不急着拆机器。后面每节课只打开一个焦点路径,但始终知道它属于哪层、服务哪个业务动作。
01

架构全景(动起来看)

发光扫过的每一层都是一次任务可能经过的站点。不同仓库命名不同,但「接入 → 编排 → 核心能力 → 资源」的责任边界很相似。

L5 · 产品入口
Team本层职责
SoftwareCompany本层职责
L4 · 编排通信
Environment本层职责
Message本层职责
Context本层职责
L3 · 角色决策
Role本层职责
ProductManager本层职责
Engineer本层职责
L2 · 工作执行
Action本层职责
Tools本层职责
ProjectRepo本层职责
L1 · 基础能力
Provider本层职责
Memory本层职责
RAG本层职责
CostManager本层职责
输入用户任务组织对象 / 流程执行模型 / 工具沉淀状态 / 记忆
设计取舍分层会增加跳转文件的次数,却让每层只承担一种职责:入口容易替换,核心逻辑能测试,模型与外部工具可插拔。读代码时先沿箭头追「数据」而不是追每一个类。
02

怎么使用这份教程

⏱️

每天 30 分钟

6 讲,每讲先问问题,再给本质和大白话。

📍

真实相对路径

所有路径都从项目根目录算,不把你的机器路径写进源码引用。

🧪

先验证再推理

每页都有可复制 bash 命令;文件版本变化时以本地实际内容为准。

🧭

可迁移方法

学会从入口、数据结构、循环和扩展点读任何 AI 项目。

S1

阶段 1 · 看懂公司入口

D01-D03 · 从 Team、Context、Message 建立总览
01

从 Team.run 进入软件公司

metagpt/team.py:跟踪需求发布、回合循环、预算检查与归档。

≈30 min · 6 讲开始学 →
02

Context 如何集中管理依赖

metagpt/context.py:认识配置、LLM、成本和工作空间如何被统一传递。

≈30 min · 6 讲开始学 →
03

Message 与共享 Schema

metagpt/schema.py:理解角色之间传递什么数据。

≈30 min · 6 讲开始学 →
S2

阶段 2 · 角色如何接力

D04-D06 · 理解 Role 的观察、思考和行动循环
04

Role 基类的运行循环

metagpt/roles/role.py:阅读 observe、think、act 的核心职责。

≈30 min · 6 讲开始学 →
05

产品经理如何产出 PRD

metagpt/roles/product_manager.py:连接角色提示词与需求动作。

≈30 min · 6 讲开始学 →
06

工程师如何消费设计并写代码

metagpt/roles/engineer.py:观察代码任务的选择与执行。

≈30 min · 6 讲开始学 →
S3

阶段 3 · 软件研发 SOP

D07-D10 · 沿着 PRD、设计、编码与测试动作阅读
07

Action 抽象与输出注册

metagpt/actions/action.py:理解 Action 输入、提示词和结构化产出。

≈30 min · 6 讲开始学 →
08

需求分析动作

metagpt/actions/analyze_requirements.py:学习需求从自然语言走向结构化信息。

≈30 min · 6 讲开始学 →
09

PRD 生成动作

metagpt/actions/write_prd.py:理解文档生成与仓库落盘。

≈30 min · 6 讲开始学 →
10

设计 API 与代码生成

metagpt/actions/design_api.py:对照 design_api 与 write_code 的衔接。

≈30 min · 6 讲开始学 →
S4

阶段 4 · 消息与环境

D11-D13 · 拆开发布订阅、记忆和环境调度
11

Environment 的消息路由

metagpt/environment/base_env.py:理解消息如何投递给可响应的角色。

≈30 min · 6 讲开始学 →
12

软件研发专用环境

metagpt/environment/software/software_env.py:理解环境如何附加领域行为。

≈30 min · 6 讲开始学 →
13

角色记忆管理

metagpt/memory:区分长期上下文、历史消息和检索范围。

≈30 min · 6 讲开始学 →
S5

阶段 5 · 模型与知识能力

D14-D17 · 掌握 Provider、成本和 RAG 扩展
14

LLM Provider 统一入口

metagpt/provider/llm_provider_registry.py:理解模型实现的注册与选择机制。

≈30 min · 6 讲开始学 →
15

OpenAI Provider 调用链

metagpt/provider/openai_api.py:跟踪请求、流式响应和结果处理。

≈30 min · 6 讲开始学 →
16

成本控制

metagpt/utils/cost_manager.py:理解 token 成本累计与预算熔断。

≈30 min · 6 讲开始学 →
17

RAG 检索流水线

metagpt/rag:串起解析、索引、检索和重排。

≈30 min · 6 讲开始学 →
S6

阶段 6 · 完整项目复盘

D18-D20 · 串起软件公司流程并完成小改造
18

项目仓库与依赖图

metagpt/utils/project_repo.py:理解生成代码怎样被组织和追踪。

≈30 min · 6 讲开始学 →
19

SoftwareCompany 装配案例

metagpt/software_company.py:回看默认角色和流程如何组装。

≈30 min · 6 讲开始学 →
20

增加一个轻量定制角色

metagpt/roles/assistant.py:用已有 Role 与 Action 完成最小扩展。

≈30 min · 6 讲开始学 →