知识库
知识wiki
CrewAI深度解析:基于角色的多Agent协作框架

CrewAI多Agent协作框架知识图谱
概念定义
CrewAI是一个基于Python的多Agent协作框架,以角色(Role)、任务(Task)和流程(Process)为核心抽象层,实现多个AI Agent之间的结构化协作与任务编排。该框架由João Moura于2023年创建,强调通过明确的角色分工和可配置的执行流程来构建可靠的多Agent系统。
核心术语表
| 术语 | 定义 |
|---|---|
| Crew | Agent集合的组织单元,定义协作边界与执行流程 |
| Agent | 具有特定角色(role)、目标(goal)和背景故事(backstory)的AI实体 |
| Task | 分配给Agent的原子工作单元,包含描述、预期输出和工具绑定 |
| Process | 任务执行与Agent交互的编排策略(顺序/层级/协商) |
| Tool | Agent可调用的外部功能接口,如搜索、API调用、文件操作 |
| Callback | 任务执行过程中的钩子函数,用于日志、监控和干预 |
| Kickoff | 启动Crew执行的入口方法,触发整个任务流水线 |
架构层次
CrewAI的架构分为四个层次:
| 层 | 组件 | 职责 |
|---|---|---|
| 编排层 | Process / Crew | 定义任务执行顺序和Agent交互模式 |
| 智能体层 | Agent | 承载角色定义、决策逻辑和工具调用能力 |
| 任务层 | Task | 定义单个工作单元的描述、约束和产出物 |
| 工具层 | Tool | 提供Agent执行任务所需的外部能力 |
三种流程模式(Process)
CrewAI定义了三种内置流程模式:
| 模式 | 机制 | 适用场景 |
|---|---|---|
| Sequential | 任务按顺序依次执行,前一个任务的输出作为后一个的上下文 | 流水线式处理、内容生成管线 |
| Hierarchical | 指定一个Manager Agent负责任务分配和结果审核,形成管理-执行层级 | 需要质量控制、复杂决策分发的场景 |
| Consensual(实验性) | Agent通过协商达成共识后执行,适合需要多角度讨论的决策任务 | 决策评估、审查流程 |
Agent定义结构
Agent实例包含以下配置属性:
| 属性 | 类型 | 说明 |
|---|---|---|
| role | str | Agent的角色身份,如"资深数据分析师" |
| goal | str | Agent的核心目标,驱动行为决策 |
| backstory | str | 背景故事,提供额外的角色上下文 |
| llm | str | 使用的LLM模型,默认GPT-4o |
| tools | list[Tool] | 绑定的工具集合 |
| allow_delegation | bool | 是否允许将任务委派给其他Agent |
| verbose | bool | 是否输出详细的执行日志 |
| memory | bool | 是否启用短期/长期记忆 |
| max_iter | int | 单次任务最大迭代次数(默认15) |
核心代码结构
from crewai import Agent, Task, Crew, Process
# 定义Agent
researcher = Agent(
role="行业研究员",
goal="收集并分析最新行业数据",
backstory="拥有10年行业研究经验的分析师",
tools=[search_tool],
verbose=True
)
writer = Agent(
role="报告撰写者",
goal="将数据转化为可读报告",
backstory="专业的技术写作编辑"
)
# 定义Task
research_task = Task(
description="收集2026年AI Agent市场数据",
expected_output="结构化数据报告",
agent=researcher
)
write_task = Task(
description="基于数据撰写分析报告",
expected_output="Markdown格式报告文档",
agent=writer
)
# 定义Crew(顺序执行)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
verbose=True
)
# 启动执行
result = crew.kickoff()
任务依赖与上下文传递
Task之间通过context字段建立显式依赖关系。当Task B依赖Task A的输出时,Task B可以引用Task A的输出作为上下文:
| 传递机制 | 说明 |
|---|---|
| 隐式传递 | Sequential流程中,前序任务的输出自动注入到后续任务的上下文 |
| 显式传递 | 通过Task的context字段手动指定依赖的任务输出 |
| 委派传递(Delegation) | Agent通过allow_delegation将子问题委派给其他Agent处理并带回结果 |
与主流框架对比
| 维度 | CrewAI | LangGraph | AutoGen |
|---|---|---|---|
| 核心抽象 | 角色+任务+流程 | 状态图+节点+边 | 对话智能体+会话 |
| 编排模式 | 顺序/层级/协商 | 有向图(任意拓扑) | 对话流(自由发言) |
| 上手难度 | 低(声明式配置) | 高(图论概念) | 中(事件驱动) |
| 记忆机制 | 内置短期/长期记忆 | 通过State管理 | 需自行实现 |
| 工具生态 | @tool装饰器 + LangChain工具 | LangChain工具 + 自定义 | 函数注册 + 自定义 |
| 主要应用 | 内容生成、研究分析、自动化流水线 | 客服系统、复杂工作流、状态机场景 | 多Agent辩论、编程场景、群聊对话 |
任务回调机制
CrewAI支持在任务生命周期的各个阶段注册回调函数:
| 回调类型 | 触发时机 | 典型用途 |
|---|---|---|
| on_task_start | 任务开始执行时 | 记录开始时间、初始化上下文 |
| on_task_end | 任务执行完成时 | 校验输出质量、更新状态 |
| on_task_error | 任务执行出错时 | 错误日志、重试逻辑 |
| on_crew_start | Crew启动时 | 初始化全局资源 |
| on_crew_end | Crew执行完毕时 | 资源清理、结果持久化 |
版本发展与关键节点
- v0.1.0 (2023年12月) — 首次发布,支持基本Agent+Task+Sequential模式
- v0.10.0 (2024年3月) — 引入Hierarchical Process和Manager Agent
- v0.20.0 (2024年6月) — 加入内置记忆系统(短期/长期/实体记忆)
- v0.30.0 (2024年9月) — 支持Consensual Process,引入回调系统
- v0.40.0 (2024年12月) — 新增Crew训练功能,支持基于经验的Agent微调
- v0.50.0 (2025年4月) — 增加计划模式(Plan),支持多级任务分解和并行执行
关键设计特点
- 声明式API — 通过面向对象的声明方式定义Agent和Task,无需手写图或状态机
- 角色驱动 — 每个Agent拥有独立的角色、目标和背景故事,通过prompt工程实现角色差异
- 内置记忆 — 框架原生支持短期记忆(任务间上下文)、长期记忆(跨会话)和实体记忆(实体关系记录)
- 任务委派 — Agent可以主动将子任务委派给其他Agent处理,实现动态协作
- LLM无关性 — 支持OpenAI、Anthropic、Gemini、本地模型等多种LLM作为Agent的推理引擎
限制与约束
- 当前仅支持Sync和Async两种执行模式,不支持流式(Streaming)输出
- Consensual Process仍处于实验阶段,不支持复杂协商规则自定义
- 框架对LLM调用成本控制机制有限,长任务链可能产生大量API调用
- Crew之间的嵌套编排需要手动实现,框架不提供原生的父子Crew机制
参见
- CrewAI官方文档
- CrewAI GitHub仓库
- 知识wiki: LangGraph深度:有向图驱动的Agent编排框架
- 知识wiki: 多Agent协作:原理、架构与实现路径
- 知识wiki: Agent框架横向对比:LangGraph vs CrewAI vs AutoGen


黑公网安备 23010302001359号