"下午2点,我同时打开了三个 GPT 窗口:一个负责写代码,一个负责写文档,一个负责找 Bug。我像一个手忙脚乱的导演,在三个演员之间来回喊'Action'。后来我发现,有个东西叫 CrewAI——它替你当导演,让每个 AI 各就各位,各司其职。"
什么是 CrewAI?
CrewAI是一个开源的 Python 框架,用于构建多角色 AI Agent 协作系统。它的核心理念是:给每个 Agent 一个明确的"角色"(role),让它们像团队一样分工合作完成任务。
打个比方:
- 🏢 OpenClaw = 一家全能型公司,一个 Agent 能干所有活
- 🎭 CrewAI = 一个剧组,导演(Crew)安排演员(Agent)各演各的角色
- 🔗 LangGraph = 一条流水线,工序(Node)之间有明确的流转逻辑
核心概念:三大基石
┌─────────────────────────────────────────────────────────────────┐
│ CrewAI 核心架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ CREW(剧组) │ │
│ │ 定义流程、协调任务、管理 Agent │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Agent │ │ Agent │ │ Agent │ │ │
│ │ │ 研究员 │ │ 作家 │ │ 审稿人 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • Role │ │ • Role │ │ • Role │ │ │
│ │ │ • Goal │ │ • Goal │ │ • Goal │ │ │
│ │ │ • LLM │ │ • LLM │ │ • LLM │ │ │
│ │ │ • Tools │ │ • Tools │ │ • Tools │ │ │
│ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │
│ │ │ │ │ │ │
│ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─────┐ │ │
│ │ │ Task │ │ Task │ │ Task │ │ │
│ │ │ 研究 │ │ 写作 │ │ 审核 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 流程: 研究员搜索 → 作家写作 → 审稿人审核 │
└─────────────────────────────────────────────────────────────────┘
1. Agent(演员)
每个 Agent 有四个核心属性:
| 属性 | 描述 | 示例 |
|---|---|---|
role |
角色名称 | "高级数据分析师" |
goal |
目标 | "提供准确、有洞察的数据分析" |
backstory |
背景故事 | "10年数据分析经验,擅长从复杂数据中发现趋势" |
tools |
可用工具 | 搜索工具、计算器、文件读写 |
2. Task(任务)
Task 是 Agent 需要完成的具体工作单元,包含描述、预期输出和分配的 Agent。
3. Crew(剧组/团队)
Crew 是 Agent 和 Task 的容器,定义了执行流程(顺序/并行)和协作方式。
代码示例:完整的 CrewAI 应用
from crewai import Agent, Task, Crew, Process
# 1. 定义 Agent
researcher = Agent(
role='资深技术研究员',
goal='搜索并整理最新 AI 技术动态',
backstory='''
你是一位拥有15年经验的技术研究员。
你善于从海量信息中提炼关键趋势,
擅长用通俗语言解释复杂技术概念。
''',
tools=[search_tool, web_scrape_tool],
llm="gpt-4o"
)
writer = Agent(
role='技术作家',
goal='将研究成果转化为高质量的技术文章',
backstory='''
你是一位经验丰富的技术作家,
擅长把复杂概念讲得有趣又易懂。
你的写作风格幽默但不失专业。
''',
tools=[file_write_tool],
llm="gpt-4o"
)
reviewer = Agent(
role='技术审稿人',
goal='审核文章的准确性和可读性',
backstory='''
你是一位严格的审稿人,
对技术事实错误零容忍,
同时注重文章的可读性和结构。
''',
llm="gpt-4o"
)
# 2. 定义 Task
research_task = Task(
description='''
搜索2026年最新的 AI Agent 框架动态,
包括 CrewAI、LangGraph、AutoGen 的最新版本和特性。
整理成结构化的研究笔记。
''',
expected_output='一份包含最新动态的研究笔记(Markdown)',
agent=researcher
)
writing_task = Task(
description='''
根据研究笔记,写一篇面向开发者的技术文章。
主题:2026年 AI Agent 框架选型指南。
要求:有趣、实用、有代码示例。
''',
expected_output='一篇完整的 Markdown 技术文章',
agent=writer,
context=[research_task] # 依赖研究任务的结果
)
review_task = Task(
description='''
审核技术文章:
1. 检查事实是否准确
2. 代码示例是否正确
3. 建议改进点
''',
expected_output='审稿意见和修改后的文章',
agent=reviewer,
context=[writing_task]
)
# 3. 组装 Crew
tech_crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, writing_task, review_task],
process=Process.sequential, # 顺序执行
verbose=True
)
# 4. 启动!
result = tech_crew.kickoff()
print(result)
CrewAI vs 其他框架
| 对比维度 | CrewAI | LangGraph | AutoGen | OpenClaw |
|---|---|---|---|---|
| 核心理念 | 角色扮演协作 | 图状状态机 | 对话式协作 | 全能 Agent + Skills |
| 上手难度 | ⭐⭐ 简单 | ⭐⭐⭐⭐ 较难 | ⭐⭐⭐ 中等 | ⭐ 最简单 |
| 状态管理 | 基础 | ✅ 非常强大 | 中等 | ✅ 内置 Memory |
| MCP 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 原生支持 |
| 部署方式 | Python 应用 | Python 应用 | Python 应用 | 自托管 Gateway |
| 最佳场景 | 内容创作团队 | 复杂工作流 | 研究/对话 | 日常自动化 |
OpenClaw 中的等价实现
在 OpenClaw 中,可以用 sessions_spawn 实现类似 CrewAI 的多角色协作:
# OpenClaw 实现 CrewAI 风格的多 Agent 协作
# Step 1: 研究员 Agent
research_result = await sessions_spawn(
task="""
角色:资深技术研究员
任务:搜索2026年最新 AI Agent 框架动态
输出:结构化研究笔记(Markdown)
""",
runtime="subagent",
mode="run"
)
# Step 2: 作家 Agent(传入研究上下文)
article = await sessions_spawn(
task=f"""
角色:技术作家
任务:根据以下研究笔记写一篇技术文章
【研究笔记】
{research_result}
要求:有趣、实用、有代码示例
""",
runtime="subagent",
mode="run"
)
# Step 3: 审稿人 Agent
final = await sessions_spawn(
task=f"""
角色:严格的技术审稿人
任务:审核并改进以下文章
【文章】
{article}
""",
runtime="subagent",
mode="run"
)
💡 CrewAI vs OpenClaw:怎么选?
选 CrewAI:你需要精细控制每个 Agent 的角色、背景、工具,且团队协作逻辑较复杂
选 OpenClaw:你需要一个开箱即用的全能 Agent,日常自动化、内容生成、定时任务
最佳实践:在 OpenClaw 的 Skill 中引用 CrewAI 概念,用 prompt 给 Agent "角色感"
选 CrewAI:你需要精细控制每个 Agent 的角色、背景、工具,且团队协作逻辑较复杂
选 OpenClaw:你需要一个开箱即用的全能 Agent,日常自动化、内容生成、定时任务
最佳实践:在 OpenClaw 的 Skill 中引用 CrewAI 概念,用 prompt 给 Agent "角色感"
CrewAI 的流程模式
1. Sequential(顺序执行)
Agent 按顺序完成任务,前一个的输出是后一个的输入。适合线性工作流。
2. Hierarchical(层级执行)
一个"Manager" Agent 负责分配任务、协调其他 Agent。适合复杂多步任务。
# 层级模式
crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, writing_task, review_task],
process=Process.hierarchical,
manager_llm="gpt-4o" # Manager 用更强的模型
)
3. Consensual(共识模式)
多个 Agent 讨论达成共识。适合需要多方观点的任务(如决策分析)。
⚠️ CrewAI 常见踩坑
1. Token 爆炸:多 Agent + 多轮对话 = token 消耗指数增长。3个 Agent 跑一次可能消耗 10 倍 token
2. 角色串味:如果 prompt 不够清晰,Agent 可能忘记自己的角色,开始干别人的活
3. 速度慢:顺序模式下,每个 Agent 都要等前一个完成。多 Agent 并行要注意任务独立性
4. 调试困难:出问题时很难定位是哪个 Agent 的锅
1. Token 爆炸:多 Agent + 多轮对话 = token 消耗指数增长。3个 Agent 跑一次可能消耗 10 倍 token
2. 角色串味:如果 prompt 不够清晰,Agent 可能忘记自己的角色,开始干别人的活
3. 速度慢:顺序模式下,每个 Agent 都要等前一个完成。多 Agent 并行要注意任务独立性
4. 调试困难:出问题时很难定位是哪个 Agent 的锅
总结
CrewAI 的精髓在于角色感。它不是简单地"开3个 GPT",而是给每个 AI 一个清晰的身份、目标和人设。就像拍电影一样——好导演不一定自己会演戏,但他知道该选谁来演什么角色。
"下午2点那三个 GPT 窗口,后来被 CrewAI 收编了。研究员搜索、作家写作、审稿人审核,各司其职,井然有序。唯一的问题是——token 账单让我差点心肌梗塞。但这事儿,咱不说也罢。"