参透 CrewAI 底层逻辑,攻克多 Agent 落地难题 本仓库是《企业级多智能体设计实战》在线视频课程的配套示例代码仓库。
$ npx -y skills add kid0317/crewai_mas_demo --agent claude-code
参透 CrewAI 底层逻辑,攻克多 Agent 落地难题
本仓库是《企业级多智能体设计实战》在线视频课程的配套示例代码仓库。
这是一门专为致力于构建生产级、高可靠 AI 应用的研发人员和架构师设计的实战课程。 如果对课程或者代码有疑问,欢迎通过我的个人微信加入微信群一起学习讨论: xiaohan_chat
✅ 无需魔法,低成本上手:全程兼容 DeepSeek、Kimi、通义千问等国内优质大模型接口
✅ 真实生产级案例:拒绝"贪吃蛇"类玩具案例,提供贴近真实生产环境的场景
✅ 架构思维优先:不是框架使用手册,而是 AI 时代的"建筑学"
✅ 工程化实践:测试评估、可观测性、容灾设计等生产级治理体系
建立 AI 应用开发的全局认知框架,理解从 Prompt 到 Multi-Agent 的底层演进逻辑。
从零开始构建生产级的多智能体系统,掌握工具集成、上下文管理、协作设计模式。
从技术实现转向生产交付,关注需求分析、测试评估、可观测性、合规治理。
crewai_mas_demo/
├── requirements.txt # Python 依赖包列表
│
├── llm/ # 自定义 LLM 实现(课程06)
│ ├── __init__.py # 模块初始化
│ ├── aliyun_llm.py # 阿里云通义千问 LLM 实现(核心组件)
│ └── test_*.py # LLM 测试用例
│
├── tools/ # 自定义工具(课程13)
│ ├── __init__.py # 模块初始化
│ ├── baidu_search.py # 百度搜索工具(课程13示例)
│ ├── intermediate_tool.py # 中间结果保存工具(课程07辅助工具)
│ ├── add_image_tool_local.py # 本地图片加载工具(课程10核心工具)
│ ├── fixed_directory_read_tool.py # 目录读取工具(课程13示例)
│ └── test_*.py # 工具测试用例
│
├── m1l2/ # 课程02、07示例代码
│ ├── m1l2_agent.py # 单 Agent 调研示例(课程07)
│ ├── m1l2_raw_agent.py # 原生 Agent 实现(课程02)
│ └── *.md # 示例输出文件
│
├── m1l3/ # 课程09示例代码
│ ├── m1l3_multi_agent.py # Multi-Agent 协作示例
│ └── *.md # 示例输出文件
│
├── m2l2/ # 课程06示例代码
│ └── m2l2_llm_openai.py # LLM 配置示例
│
├── m2l3/ # 课程07示例代码
│ └── m2l3_agent.py # Agent 直接执行任务示例
│
├── m2l4/ # 课程08示例代码
│ └── m2l4_task.py # Task 定义与结构化输出示例
│
├── m2l5/ # 课程09示例代码
│ └── m2l5_crew.py # Sequential Process 多任务执行示例
│
├── m2l6/ # 课程10示例代码
│ └── m2l6_agent.py # 多模态视觉分析示例
│
├── m2l8/ # 课程19示例代码
│ ├── m2l8_context.py # API 请求级上下文管理
│ └── m2l8_tools_call.py # 工具调用 Hook 示例
│
├── m2l9/ # 课程14示例代码
│ └── m2l9_mcp.py # MCP 服务器集成示例
│
├── m2l10/ # 课程16示例代码(代码解释器 & 无头浏览器)
│
├── m2l16/ # Skills 生态课程演示(课程16)
│ └── skills/ # Skills 清单与技能文件
│
├── m2l17/ # 课程17示例代码(项目实战2)
│
├── m2l22/ # 课程22示例代码(项目实战3,同 xiaopaw-with-memory)
│
├── m3l19/ # 课程19示例代码(上下文生命周期管理)
│
├── m3l20/ # 课程20示例代码(文件系统记忆)
│
├── m3l21/ # 课程21示例代码(搜索驱动的记忆系统)
│
├── m4l23/ # 课程23示例代码(Orchestrator 范式)
│
├── m4l25/ # 课程25示例代码(团队角色体系)
│
├── m4l26/ # 课程26示例代码(任务链与信息传递)
│ ├── m4l26_manager.py # Manager Crew(分配+验收)
│ ├── m4l26_pm.py # PM Crew(读邮件+写产品文档)
│ └── tools/mailbox_ops.py # 三态邮箱状态机
│
├── m4l27/ # 课程27示例代码(Human as 甲方)
│ ├── m4l27_sop_setup.py # 时点A:SOP 制定入口
│ ├── m4l27_run.py # 时点B:任务执行入口(3个人工确认节点)
│ ├── m4l27_manager.py # Manager 五个 Crew
│ └── tools/mailbox_ops.py # 三态邮箱状态机(含 mark_done + reset_stale)
│
├── m4l28/ # 课程28示例代码(数字员工的自我进化)
│
└── (定稿)上线素材|企业级多智能体设计实战.md # 课程大纲
💡 提示:本课程全程使用国内可访问的大模型接口,无需科学上网。
# 1. 克隆仓库
git clone <repository-url>
cd crewai_mas_demo
# 2. 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# 或 venv\Scripts\activate # Windows
# 3. 安装依赖
pip install -r requirements.txt
# 4. 配置 API Key(二选一)
# 方式一:环境变量(推荐)
export QWEN_API_KEY="your-qwen-api-key-here"
export BAIDU_API_KEY="your-baidu-api-key-here" # 可选
# 方式二:创建 .env 文件
# 在项目根目录创建 .env 文件,内容如下:
# QWEN_API_KEY=your-qwen-api-key-here
# BAIDU_API_KEY=your-baidu-api-key-here
部分示例(如课程14 MCP、课程16 Skills 生态)需要本地启动 AIO-Sandbox 容器,提供沙盒执行环境:
cd crewai_mas_demo
# 启动沙盒(推荐后台运行)
docker compose -f sandbox-docker-compose.yaml up -d
# 不再需要时关闭沙盒
docker compose -f sandbox-docker-compose.yaml down
说明:
http://localhost:8022/mcp./workspace/data 挂载为沙盒内 /workspace/data(只读,输入文件)./workspace/output 挂载为沙盒内 /workspace/output(读写,输出文件)./skills 挂载为沙盒内 /mnt/skills(只读,Skill 资源)沙盒启动后,可以通过curl命令请求tools/list,检查是否成功:
curl -X POST http://localhost:8022/mcp/ \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":1}'
理解 Agent 的核心原理和 ReAct 范式。
cd m1l2
python3 m1l2_raw_agent.py
学习要点:
对应课程:02|解构智能体:Agent 的解剖学与 ReAct 范式
学习如何定义 Agent 的"人设"。
cd m1l2
python3 m1l2_agent.py
学习要点:
输出结果:
m1l2/极客时间-最终报告.md对应课程:07|定义Agent:从"提示词工程"到"人设工程"
预期时间:约 2-5 分钟
演示 Agent.kickoff() 直接与 Agent 交互。
cd m2l3
python3 m2l3_agent.py
学习要点:
对应课程:07|定义Agent:从"提示词工程"到"人设工程"
学习"契约驱动"的任务设计。
cd m2l4
python3 m2l4_task.py
学习要点:
对应课程:08|定义Task:从"步骤控制"到"契约驱动"
学习多 Agent 协作和任务调度。
cd m1l3
python3 m1l3_multi_agent.py
学习要点:
输出结果:
m1l3/极客时间平台全面调研报告-*.md(大纲、步骤1-6、最终报告)对应课程:09|定义Process:任务调度与信息传递
预期时间:约 5-10 分钟
演示多任务的顺序执行和数据传递。
cd m2l5
python3 m2l5_crew.py
学习要点:
对应课程:09|定义Process:任务调度与信息传递
让 Agent 具备"看"的能力。
cd m2l6
python3 m2l6_agent.py
学习要点:
对应课程:10|多模态模型:让你的Agent拥有"眼睛"
学习 API 请求级上下文管理和工具调用拦截。
cd m2l8
python3 m2l8_tools_call.py
学习要点:
对应课程:19|自定义管理上下文:Step_Callback与数据流观测
学习如何通过 MCP 协议集成外部工具服务。
cd m2l9
python3 m2l9_mcp.py
学习要点:
对应课程:14|MCP协议:标准化定义工具接口
| 问题 | 解决方案 |
|---|---|
ModuleNotFoundError: No module named 'crewai' | pip install -r requirements.txt |
ValueError: API Key 未提供 | 检查环境变量:echo $QWEN_API_KEY(Linux/macOS)或 echo $env:QWEN_API_KEY(Windows) |
No module named 'llm' | 确保在示例目录下运行:cd m1l2 && python3 m1l2_agent.py |
llm/aliyun_llm.py)基于 CrewAI BaseLLM 的阿里云通义千问实现,完全兼容 CrewAI 接口,支持 Function Calling 和多地域配置。
from llm import aliyun_llm
llm = aliyun_llm.AliyunLLM(
model="qwen-plus",
api_key=os.getenv("QWEN_API_KEY"),
region="cn", # 支持 "cn", "intl", "finance"
)
tools/)课程13的示例代码展示了如何按照五步标准SOP封装自定义工具。
baidu_search.py)支持网页、视频、图片等多种资源类型,演示完整的工具封装流程。
from tools import BaiduSearchTool
agent = Agent(
role="网络调研专家",
tools=[BaiduSearchTool()],
# ...
)
功能特点:
intermediate_tool.py):中间结果保存工具,支持 Agent 的"慢思考"模式add_image_tool_local.py):本地图片加载工具,支持多模态 Agentfixed_directory_read_tool.py):目录读取工具,修复了原版本的路径处理问题理解 Agent 本质(课程02)
m1l2/m1l2_raw_agent.py,理解 ReAct 范式环境准备(课程06)
llm/aliyun_llm.py)定义 Agent(课程07)
m1l2/m1l2_agent.py 和 m2l3/m2l3_agent.py定义 Task(课程08)
m2l4/m2l4_task.py定义 Process(课程09)
m1l3/m1l3_multi_agent.py 和 m2l5/m2l5_crew.py多模态能力(课程10)
m2l6/m2l6_agent.py工具封装(课程13)
tools/baidu_search.py 的实现MCP 协议(课程14)
m2l9/m2l9_mcp.py上下文管理(课程19)
m2l8/m2l8_tools_call.py学习需求分析、测试评估、可观测性、合规治理等生产级实践。
本仓库的所有 Python 代码都包含详细的课程关联注释,遵循统一的标准:
crewai-mas-demo is a Claude Code plugin with 31 hand-picked skills, indexed on Flowy in the Agent Orchestration category. Install it with the command on its page. It includes sop_dev, sop_manager, init_project. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it