这个坑值得记一笔。CrewAI 0.80 里把 process 设成 hierarchical 并给了 manager_llm,跑起来后 manager 只输出一段计划文本,没有把任务派给任何一个 agent,最后抛 max_iter 相关异常。

刚开始盯着「agent 的 role 描述重复,manager 无法区分职责」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。任务描述里没有可执行的动词,manager 认为已经给出答案;manager_llm 的上下文窗口太小,工具清单被截断;allow_delegation 设成 false,manager 没有派活权限。

上来先打开详细日志看 manager 的决策内容

python crew.py --verbose 2>&1 | head -60

给 manager 单独配一个能力更强的模型

python crew.py --manager-model gpt-4o --max-iter 10

接着把任务拆成带明确产物的子任务

python crew.py --task 'output a JSON list of 3 rows'

校验每个 agent 的 role 唯一

python -c "import yaml;c=yaml.safe_load(open('crew.yaml'));print([a['role'] for a in c['agents']])"

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

改完先别撤,确认这几项。运行日志里能看到 manager 逐个指派任务,每个 agent 都有输出,结果目录里有交付文件。

hierarchical 模式对 manager 的理解依赖任务文案,任务写得越具体,派活越稳定。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189