Task 任务
Task 是交给某个 Agent 的具体作业:写清做什么、做成什么样。Crew 的 Process 决定任务是按列表顺序执行,还是由经理 Agent 分配。
必填与常用字段
max_retries 已弃用,请用 guardrail_max_retries。
顺序流程中,后一个任务默认能看到前面任务的输出;用 context 可以显式指定依赖,避免隐式串味。
JSONC 中的任务
crew.jsonc 的 tasks 数组即执行顺序(process 为 "sequential" 时):
context 只能引用已经定义过的任务名,禁止前向引用。条件任务在 JSON 里用 "type": "ConditionalTask" 加 condition(进阶,见官方 Tasks 文档)。
TaskOutput
执行后通过 task.output 读取。常用属性:raw(默认)、pydantic、json_dict(仅当配置了对应 output 模型)、agent、messages。CrewOutput.tasks_output 是全部任务的列表。
写好 expected_output 比加长 description 更有效:模型把「完成定义」当验收标准。需要固定 JSON 时用 output_pydantic,不要只在 prompt 里说「请输出 JSON」。
执行方式(与 Process 的关系)
- Sequential:按
tasks列表顺序;上一任务输出进入后续上下文。 - Hierarchical:经理分配任务;Crew 上必须设
manager_llm或manager_agent。详见 Crew 与 Process。
人机协同:任务级 human_input=True,或在 Flow 里用官方文档中的 @human_feedback(需 CrewAI ≥ 1.8.0)。不要把未在文档出现的装饰器名写进代码。