CrewAI 源码学习
60 天 · 每天 30 分钟 · 逐层读懂最流行的"角色扮演多智能体框架"——像组建一支团队一样,让多个 AI 分工协作完成复杂任务。本教程已升级为 60 天深度版:真源码走读 + 设计取舍 + 边界坑点,0 基础友好。
开篇 · 这是个什么框架
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 知识库。
lib/crewai/src/crewai/(monorepo 结构,Day 01 讲)。架构全景(动起来看)
下图那颗发光小球是"一次 kickoff() 从顶层团队落到底层大模型调用"的过程。从上到下:编排范式 → 团队 → 任务与智能体 → 底层能力。
CrewAI 最核心的心智模型是"组队干活"——三个概念缺一不可:
role+goal+backstory+ Task 任务要做的"活儿"
description+expected_output→ Crew 团队把员工和活儿组队
按 Process 执行→ kickoff()开工!
怎么用这份教程
每天 30 分钟
一天一个独立页面,跟着"今日小结 + 10 分钟动手 + 明日预告"收尾。
零基础友好
不假设你懂 Agent/RAG/事件驱动,术语首次出现都有大白话解释。
真源码 + 行号
关键代码标 文件:行号,逐行走读,可在真源码里跳转对照。
设计取舍 + 边界
每天讲"为什么这么设计"和"坑在哪",不止是 API 说明。
项目全景与 monorepo
CrewAI 是什么、Crew vs Flow、lib 结构、__init__ 导出;读 README。
装环境 + 跑第一个 crew
最小可运行例子,从零到能 kickoff 的第一支团队。
Agent 是什么
agent/agent.py 模型总览:role/goal/backstory/tools/llm。
Task 是什么
task.py 模型:description/expected_output/agent/context。
Crew 组装
crew.py 总览:agents+tasks+process 怎么组成一支团队。
一次 kickoff 旅程总览
把前 5 天串起来:从组队到产出的全过程心智地图。
Agent 数据模型全字段
agent/agent.py 逐字段:从配置到运行期属性的完整画像。
Agent 执行循环
agents/crew_agent_executor.py:思考→用工具→观察→循环。
输出解析 parser.py
Thought / Action / Final Answer 怎么从 LLM 文本里解析出来。
单步执行 step_executor.py
一步内如何调用工具、拼接观察结果、决定是否继续。
工具处理 tools_handler + 缓存
tools_handler.py:工具调用的记录、复用与缓存机制。
LiteAgent 轻量智能体
lite_agent.py / lite_agent_output.py:不进 Crew 的单体 Agent。
Task 模型全字段
task.py 逐字段:从 description 到执行控制的全部旋钮。
TaskOutput 与护栏 guardrail
输出对象结构 + guardrail 如何校验/重试不合格产出。
结构化输出
output_pydantic / output_json:让任务产出可解析的结构化数据。
context 任务依赖
用 context 把上游任务的产出喂给下游任务。
异步任务 async_execution
async_execution 如何并行跑任务、结果如何汇合。
条件任务 ConditionalTask
tasks/ 下的条件任务:按上游结果决定是否执行。
Crew 模型全字段
crew.py 逐字段:团队级配置的全景(进程、记忆、规划开关)。
Process.sequential
process.py:顺序流程如何一个接一个跑任务、传递上下文。
Process.hierarchical + manager
层级流程:manager agent 如何调度、委派、汇总子任务。
kickoff 家族
kickoff / kickoff_for_each / kickoff_async 的区别与实现。
规划 planning
执行前先制定计划(planner),提升复杂任务成功率。
训练 train + replay
train 迭代优化、replay 从某个任务重放执行。
记忆开关与 crew 级配置
memory=True 到底打开了什么、crew 级配置怎么下发。
事件系统 events/
事件总线 / 监听器:可观测性与外部集成的挂载点。
BaseTool 工具基类
tools/base_tool.py:一个工具的最小契约(name/description/run)。
StructuredTool
tools/structured_tool.py:带参数 schema 的结构化工具。
工具调用 tool_calling.py
tool_calling.py:Agent 决定用哪个工具、参数怎么拼装。
工具缓存与复用
tools_handler 复用:同样的调用如何命中缓存、省钱省时。
MCP 工具
mcp/、mcp_tool_wrapper.py / mcp_native_tool.py:接入 MCP 生态。
自定义工具与最佳实践
怎么写一个好用、稳健、可缓存的自定义工具。
记忆总览
memory/ 目录结构:CrewAI 的记忆到底由哪几块拼成。
unified_memory.py
统一记忆入口:多种记忆如何被一个接口聚合。
recall / encoding flow
recall_flow.py / encoding_flow.py:记忆怎么写入、怎么召回。
短期 / 长期 / entity 记忆
三类记忆各自的存储、检索与适用场景。
memory_scope.py 作用域
记忆作用域:哪些记忆共享、哪些隔离,怎么划分。
RAG 检索增强
rag/:检索增强如何把外部信息拼进上下文。
knowledge 知识源
knowledge/:给 Agent/Crew 挂载文件、网页等知识源。
embedding 与存储后端
embedding 配置与向量存储后端的选择与切换。
Flow 是什么
flow/ 总览、与 Crew 的关系:确定性工作流的心智模型。
@start / @listen 装饰器
用装饰器把方法连成事件驱动的工作流。
flow_definition / config
flow_definition.py / flow_config.py:Flow 的内部结构与配置。
router 与条件跳转
@router 如何根据结果在多条分支间做条件跳转。
state 管理与持久化
state/、flow persistence:结构化/非结构化 state、@persist。
expressions.py 表达式
Flow 表达式:用表达式描述条件与依赖关系。
conversation.py 对话式
对话式 Flow:把多轮交互建成事件驱动流程。
Flow vs Crew 选型取舍
什么时候用 Flow、什么时候用 Crew、如何互相嵌套。
LLM 抽象 llm.py
llm.py:litellm 统一多模型、调用入口与配置。
llms/ 各 provider 适配
不同厂商模型的适配层:差异怎么被抹平。
函数调用与结构化输出
function calling / structured output 在 LLM 层怎么落地。
上下文窗口管理 context.py
context.py:上下文超长如何裁剪、压缩、保留关键信息。
token / 成本 / usage
用量统计:token 计数、成本估算与 usage 追踪。
telemetry 遥测
telemetry:采集了什么、怎么开关、隐私边界。
@CrewBase 与 YAML 配置
project/:@CrewBase 装饰器、YAML 定义 agents/tasks。
hooks 钩子
hooks/:在执行生命周期关键点插入自定义逻辑。
security 安全
security/:权限、指纹、安全边界的设计。
a2a agent 间协作协议
a2a/:agent-to-agent 协作协议如何让不同 agent 互通。
CLI + 构建测试部署
cli/:脚手架、运行、测试与部署一条龙。
收官 · 知识地图串讲
全 60 天知识地图串讲 + 六框架对比 + 学习/求职建议。
🚀 60 天深度版已就绪!10 个阶段、60 讲,真源码走读 + 设计取舍 + 边界坑点。建议按顺序学,准备好了就从 Day 01 · 项目全景 开始。