源码深度学习 · 零基础友好 · 60 天升级版

CrewAI 源码学习

60 天 · 每天 30 分钟 · 逐层读懂最流行的"角色扮演多智能体框架"——像组建一支团队一样,让多个 AI 分工协作完成复杂任务。本教程已升级为 60 天深度版:真源码走读 + 设计取舍 + 边界坑点,0 基础友好

00

开篇 · 这是个什么框架

CrewAI 是一个流行的 多智能体(multi-agent)编排框架。核心思想很直观:把一个复杂任务,交给一支 AI "团队"(Crew)来做——团队里每个 AI 智能体(Agent)扮演一个角色(如"研究员""写手""审稿人"),各司其职、互相协作。

🚀 本教程已升级为 60 天深度版:相比旧的 20 天版,我们把内容拆成 10 个阶段,每天都做到真源码走读(带真实 file:line)+ 逐行大白话讲解 + 数据结构/控制流内联 SVG + "为什么这么设计"的取舍 + 边界坑点。从 Agent 执行循环到 Task 护栏、Crew 流程、工具系统、记忆知识、Flow 事件驱动、LLM 集成、生态收官,全部读到源码里去。0 基础也能跟。

🎯 一句话:CrewAI 让你像组建一支团队一样搭 AI 应用——给每个 Agent 一个角色 + 目标 + 背景故事,把工作拆成一个个 Task(任务),然后让 Crew(团队)按某种 Process(流程)把任务分配下去、协作完成。

CrewAI 有两种搭建范式:

👥

Crew 团队

自主协作的 Agent 团队——你定义角色和目标,Agent 自主决定怎么干、如何配合。

🔀

Flow 工作流

事件驱动的确定性编排——用 @start/@listen 精确控制步骤顺序,可内嵌 Crew。

🎭

角色扮演

role + goal + backstory 让 Agent "入戏",产出更专业的结果。

🧰

工具 + 记忆 + 知识

Agent 能用工具、有记忆、可接入 RAG 知识库。

零基础也别怕:阶段 1 完全不假设你懂 Agent/LLM/多智能体。我们从"什么是角色扮演的 AI 智能体"讲起,一步步深入到执行循环、任务护栏、流程编排、工具、记忆、Flow、LLM 与生态。源码在 lib/crewai/src/crewai/(monorepo 结构,Day 01 讲)。
01

架构全景(动起来看)

下图那颗发光小球是"一次 kickoff() 从顶层团队落到底层大模型调用"的过程。从上到下:编排范式 → 团队 → 任务与智能体 → 底层能力。

L4 · 编排范式
Crew自主 Agent 团队
Flow事件驱动工作流
Processsequential / hierarchical
L2 · 核心构件
Agent角色扮演智能体
Task任务定义
ExecutorReAct 执行循环
Delegation互相委派
L3 · 增强能力
Tools工具
Memory记忆
KnowledgeRAG 知识
Planning规划
L1 · 底层
LLM大模型(litellm)
Events事件总线
TaskOutput结构化输出

CrewAI 最核心的心智模型是"组队干活"——三个概念缺一不可:

Agent 智能体扮演角色的"员工"
role+goal+backstory
+ Task 任务要做的"活儿"
description+expected_output
Crew 团队把员工和活儿组队
按 Process 执行
kickoff()开工!
为什么"角色扮演"有用? 给 AI 一个明确身份("你是资深财经记者")+ 目标 + 背景,它会更"入戏",产出更专业、更聚焦的结果——这是提示词工程的经典技巧,CrewAI 把它做成了框架的一等公民。
02

怎么用这份教程

⏱️

每天 30 分钟

一天一个独立页面,跟着"今日小结 + 10 分钟动手 + 明日预告"收尾。

👶

零基础友好

不假设你懂 Agent/RAG/事件驱动,术语首次出现都有大白话解释。

📍

真源码 + 行号

关键代码标 文件:行号,逐行走读,可在真源码里跳转对照。

🎨

设计取舍 + 边界

每天讲"为什么这么设计"和"坑在哪",不止是 API 说明。

一条主线:从"Agent/Task/Crew 是什么"→"Agent 执行循环深入(ReAct/解析/工具)"→"Task 输出与护栏"→"Crew 流程编排(顺序/层级/规划)"→"工具系统(BaseTool/MCP)"→"记忆与知识(RAG/embedding)"→"Flow 事件驱动工作流"→"LLM 抽象与集成"→"进阶生态(YAML/hooks/安全/a2a)"→"CLI、部署与收官"。
S1

阶段 1 · 入门与心智

D01-06 · 项目全景、跑通第一个 crew、Agent/Task/Crew 基础、一次 kickoff 旅程
01

项目全景与 monorepo

CrewAI 是什么、Crew vs Flow、lib 结构、__init__ 导出;读 README。

≈30 min · 已就绪 NEW开始学 →
02

装环境 + 跑第一个 crew

最小可运行例子,从零到能 kickoff 的第一支团队。

≈30 min开始学 →
03

Agent 是什么

agent/agent.py 模型总览:role/goal/backstory/tools/llm。

≈30 min开始学 →
04

Task 是什么

task.py 模型:description/expected_output/agent/context。

≈30 min开始学 →
05

Crew 组装

crew.py 总览:agents+tasks+process 怎么组成一支团队。

≈30 min开始学 →
06

一次 kickoff 旅程总览

把前 5 天串起来:从组队到产出的全过程心智地图。

≈30 min开始学 →
S2

阶段 2 · Agent 深入

D07-12 · Agent 全字段、执行循环、输出解析、单步执行、工具处理、LiteAgent
07

Agent 数据模型全字段

agent/agent.py 逐字段:从配置到运行期属性的完整画像。

≈30 min开始学 →
08

Agent 执行循环

agents/crew_agent_executor.py:思考→用工具→观察→循环。

≈30 min开始学 →
09

输出解析 parser.py

Thought / Action / Final Answer 怎么从 LLM 文本里解析出来。

≈30 min开始学 →
10

单步执行 step_executor.py

一步内如何调用工具、拼接观察结果、决定是否继续。

≈30 min开始学 →
11

工具处理 tools_handler + 缓存

tools_handler.py:工具调用的记录、复用与缓存机制。

≈30 min开始学 →
12

LiteAgent 轻量智能体

lite_agent.py / lite_agent_output.py:不进 Crew 的单体 Agent。

≈30 min开始学 →
S3

阶段 3 · Task 深入

D13-18 · Task 全字段、TaskOutput 护栏、结构化输出、context 依赖、异步任务、条件任务
13

Task 模型全字段

task.py 逐字段:从 description 到执行控制的全部旋钮。

≈30 min开始学 →
14

TaskOutput 与护栏 guardrail

输出对象结构 + guardrail 如何校验/重试不合格产出。

≈30 min开始学 →
15

结构化输出

output_pydantic / output_json:让任务产出可解析的结构化数据。

≈30 min开始学 →
16

context 任务依赖

用 context 把上游任务的产出喂给下游任务。

≈30 min开始学 →
17

异步任务 async_execution

async_execution 如何并行跑任务、结果如何汇合。

≈30 min开始学 →
18

条件任务 ConditionalTask

tasks/ 下的条件任务:按上游结果决定是否执行。

≈30 min开始学 →
S4

阶段 4 · Crew 与流程 (核心深水区)

D19-26 · Crew 全字段、sequential/hierarchical、kickoff 家族、规划、训练回放、记忆开关、事件系统
19

Crew 模型全字段

crew.py 逐字段:团队级配置的全景(进程、记忆、规划开关)。

≈30 min开始学 →
20

Process.sequential

process.py:顺序流程如何一个接一个跑任务、传递上下文。

≈30 min开始学 →
21

Process.hierarchical + manager

层级流程:manager agent 如何调度、委派、汇总子任务。

≈30 min开始学 →
22

kickoff 家族

kickoff / kickoff_for_each / kickoff_async 的区别与实现。

≈30 min开始学 →
23

规划 planning

执行前先制定计划(planner),提升复杂任务成功率。

≈30 min开始学 →
24

训练 train + replay

train 迭代优化、replay 从某个任务重放执行。

≈30 min开始学 →
25

记忆开关与 crew 级配置

memory=True 到底打开了什么、crew 级配置怎么下发。

≈30 min开始学 →
26

事件系统 events/

事件总线 / 监听器:可观测性与外部集成的挂载点。

≈30 min开始学 →
S5

阶段 5 · 工具系统

D27-32 · BaseTool、StructuredTool、工具调用、缓存复用、MCP 工具、自定义最佳实践
27

BaseTool 工具基类

tools/base_tool.py:一个工具的最小契约(name/description/run)。

≈30 min开始学 →
28

StructuredTool

tools/structured_tool.py:带参数 schema 的结构化工具。

≈30 min开始学 →
29

工具调用 tool_calling.py

tool_calling.py:Agent 决定用哪个工具、参数怎么拼装。

≈30 min开始学 →
30

工具缓存与复用

tools_handler 复用:同样的调用如何命中缓存、省钱省时。

≈30 min开始学 →
31

MCP 工具

mcp/、mcp_tool_wrapper.py / mcp_native_tool.py:接入 MCP 生态。

≈30 min开始学 →
32

自定义工具与最佳实践

怎么写一个好用、稳健、可缓存的自定义工具。

≈30 min开始学 →
S6

阶段 6 · 记忆与知识 (核心深水区)

D33-40 · 记忆总览、unified_memory、recall/encoding flow、短/长/entity、作用域、RAG、知识源、embedding
33

记忆总览

memory/ 目录结构:CrewAI 的记忆到底由哪几块拼成。

≈30 min开始学 →
34

unified_memory.py

统一记忆入口:多种记忆如何被一个接口聚合。

≈30 min开始学 →
35

recall / encoding flow

recall_flow.py / encoding_flow.py:记忆怎么写入、怎么召回。

≈30 min开始学 →
36

短期 / 长期 / entity 记忆

三类记忆各自的存储、检索与适用场景。

≈30 min开始学 →
37

memory_scope.py 作用域

记忆作用域:哪些记忆共享、哪些隔离,怎么划分。

≈30 min开始学 →
38

RAG 检索增强

rag/:检索增强如何把外部信息拼进上下文。

≈30 min开始学 →
39

knowledge 知识源

knowledge/:给 Agent/Crew 挂载文件、网页等知识源。

≈30 min开始学 →
40

embedding 与存储后端

embedding 配置与向量存储后端的选择与切换。

≈30 min开始学 →
S7

阶段 7 · Flow 事件驱动

D41-48 · Flow 总览、@start/@listen、definition/config、router、state 持久化、表达式、对话式、Flow vs Crew
41

Flow 是什么

flow/ 总览、与 Crew 的关系:确定性工作流的心智模型。

≈30 min开始学 →
42

@start / @listen 装饰器

用装饰器把方法连成事件驱动的工作流。

≈30 min开始学 →
43

flow_definition / config

flow_definition.py / flow_config.py:Flow 的内部结构与配置。

≈30 min开始学 →
44

router 与条件跳转

@router 如何根据结果在多条分支间做条件跳转。

≈30 min开始学 →
45

state 管理与持久化

state/、flow persistence:结构化/非结构化 state、@persist。

≈30 min开始学 →
46

expressions.py 表达式

Flow 表达式:用表达式描述条件与依赖关系。

≈30 min开始学 →
47

conversation.py 对话式

对话式 Flow:把多轮交互建成事件驱动流程。

≈30 min开始学 →
48

Flow vs Crew 选型取舍

什么时候用 Flow、什么时候用 Crew、如何互相嵌套。

≈30 min开始学 →
S8

阶段 8 · LLM 与集成

D49-54 · LLM 抽象、provider 适配、函数调用、上下文窗口、token/成本、telemetry
49

LLM 抽象 llm.py

llm.py:litellm 统一多模型、调用入口与配置。

≈30 min开始学 →
50

llms/ 各 provider 适配

不同厂商模型的适配层:差异怎么被抹平。

≈30 min开始学 →
51

函数调用与结构化输出

function calling / structured output 在 LLM 层怎么落地。

≈30 min开始学 →
52

上下文窗口管理 context.py

context.py:上下文超长如何裁剪、压缩、保留关键信息。

≈30 min开始学 →
53

token / 成本 / usage

用量统计:token 计数、成本估算与 usage 追踪。

≈30 min开始学 →
54

telemetry 遥测

telemetry:采集了什么、怎么开关、隐私边界。

≈30 min开始学 →
S9

阶段 9 · 进阶与生态

D55-58 · @CrewBase 与 YAML、hooks 钩子、security 安全、a2a 协作协议
55

@CrewBase 与 YAML 配置

project/:@CrewBase 装饰器、YAML 定义 agents/tasks。

≈30 min开始学 →
56

hooks 钩子

hooks/:在执行生命周期关键点插入自定义逻辑。

≈30 min开始学 →
57

security 安全

security/:权限、指纹、安全边界的设计。

≈30 min开始学 →
58

a2a agent 间协作协议

a2a/:agent-to-agent 协作协议如何让不同 agent 互通。

≈30 min开始学 →
S10

阶段 10 · 收官

D59-60 · CLI 与构建测试部署、六框架对比与学习/求职建议
59

CLI + 构建测试部署

cli/:脚手架、运行、测试与部署一条龙。

≈30 min开始学 →
60

收官 · 知识地图串讲

全 60 天知识地图串讲 + 六框架对比 + 学习/求职建议。

≈30 min开始学 →

🚀 60 天深度版已就绪!10 个阶段、60 讲,真源码走读 + 设计取舍 + 边界坑点。建议按顺序学,准备好了就从 Day 01 · 项目全景 开始。