Crew ai源码拆解-​Day 2: process.py — 执行模式枚举​

发布时间:2026/6/28 6:02:08
Crew ai源码拆解-​Day 2: process.py — 执行模式枚举​ Day 2: process.py — 执行模式枚举这个文件负责什么一句话定义 Crew 执行任务的两种模式——按顺序还是有人管。只有 11 行代码但它是 Crew 决策的开关。在 CrewAI 中的位置用户选择 │ ▼ ┌─────────────────┐ │ Process (本文件) │ │ sequential │ │ hierarchical │ └────────┬────────┘ │ ┌───────────┴───────────┐ ▼ ▼ ┌───────────────┐ ┌───────────────────┐ │ sequential │ │ hierarchical │ │ │ │ │ │ 任务1→任务2 │ │ Manager Agent │ │ →任务3 │ │ ├→ 分配任务1 │ │ │ │ ├→ 分配任务2 │ │ 没有管理者 │ │ └→ 验证结果 │ └───────────────┘ └───────────────────┘Process被Crew使用。当你创建 Crew 时processProcess.sequential或processProcess.hierarchical决定了整个执行策略。核心类class Process(str, Enum):部分含义EnumPython 内置的枚举类型定义一组固定的常量str让枚举值同时是字符串可以直接当字符串用Process类名表示执行流程两个枚举值值含义类比sequential任务按列表顺序依次执行流水线工人A做完→工人B接着做hierarchical有 Manager Agent 协调分配和验证项目经理分配任务→检查结果→决定下一步核心方法这个文件没有任何方法。它只定义了两个常量。使用方式from crewai import Process # 在 Crew 中使用 Crew( agents[researcher, writer], tasks[task1, task2], processProcess.sequential # ← 在这里选择模式 )执行流程图Mermaidgraph TD A[创建 Crew] -- B{选择 Process} B --|Process.sequential| C[顺序执行] B --|Process.hierarchical| D[层级执行] C -- C1[执行任务1] C1 -- C2[执行任务2] C2 -- C3[执行任务3] C3 -- C4[返回 CrewOutput] D -- D1[创建 Manager Agent] D1 -- D2[Manager 分析任务] D2 -- D3[Manager 分配给工人 Agent] D3 -- D4[工人执行并返回结果] D4 -- D5{Manager 验证} D5 --|通过| D6[下一个任务] D5 --|不通过| D3 D6 -- D7[返回 CrewOutput]我应该重点看哪几行代码这个文件只有 11 行全部都要看。但重点是行号内容为什么重要L1from enum import Enum理解 Python 枚举的导入L4class Process(str, Enum):最关键理解strmixin 的作用L9sequential sequential顺序执行模式L10hierarchical hierarchical层级执行模式Python 知识点为什么是(str, Enum)而不是(Enum)# 如果只继承 Enum class Process(Enum): sequential sequential p Process.sequential print(p) # Process.sequential print(p sequential) # False ❌ 不相等 # 继承 str Enum class Process(str, Enum): sequential sequential p Process.sequential print(p) # sequential print(p sequential) # True ✅ 可以当字符串比较strmixin 让枚举值既是枚举又是字符串。这样在序列化存JSON、日志输出时可以直接当字符串用不需要额外转换。sequential vs hierarchical 详细对比特性sequentialhierarchical执行方式按 tasks 列表顺序执行Manager Agent 动态分配管理者无自动创建 Manager Agent任务分配1:1 固定映射task1→agent1Manager 决定谁做什么结果验证无直接进入下一个任务Manager 验证后才继续委派不支持支持 Agent 之间委派适用场景任务有明确先后顺序任务复杂需要动态决策成本低少一次 LLM 调用高Manager 需要额外 LLM 调用控制力高你决定顺序低Manager 决定顺序实际例子# sequential你明确知道先调研、再分析、再写报告 Crew( agents[researcher, analyst, writer], tasks[research_task, analysis_task, writing_task], processProcess.sequential ) # 执行research → analysis → writing # hierarchical任务复杂让 Manager 自己决定 Crew( agents[researcher, analyst, writer], tasks[complex_task], processProcess.hierarchical, manager_llmLLM(modelgpt-4o) # Manager 需要一个 LLM ) # Manager 自己决定先让谁做、做完了要不要重做TODO 注释# TODO: consensual consensual这是 CrewAI 预留的第三种模式共识模式多个 Agent 投票决定。目前还没实现。这说明 CrewAI 的设计是可扩展的——未来可以加新的执行模式。阅读后你应该理解什么[ ]Process是一个枚举类定义了两种执行模式[ ]sequential 按顺序执行没有管理者[ ]hierarchical 有 Manager Agent 协调分配和验证[ ]strmixin 让枚举值可以直接当字符串用[ ] 枚举比字符串常量更好有类型检查、有 IDE 提示、防止拼写错误[ ] 这个文件被crew.py使用决定 Crew 的执行策略5个检查问题Q1Process.sequential和Process.hierarchical的核心区别是什么提示想想流水线 vs 项目经理Q2为什么Process要继承str提示想想如果要把 Process 存到 JSON 里Q3hierarchical 模式下Manager Agent 是怎么来的提示是用户手动创建的还是 Crew 自动创建的Q4如果你的任务有明确的先后顺序先调研→再写报告应该用哪个模式提示不需要 Manager 来决定顺序Q5这个文件的 TODO 注释暗示了什么设计思想提示想想如果未来要加新模式代码需要改吗