10 月 23 日,CrewAI 发布 1.15.29。发布说明看着很平淡,最重要的一句混在 Features 里:「Promote AgentExecutor out of experimental status」。真正的代价写在文档的升级指南里:CrewAgentExecutor 被直接删除,没有任何开关能退回旧执行器;顺带把每个 Agent 处理大工具结果、长对话、重复调用的默认动作全改了。
我拿手头一个跑资料的 crew 升了一遍,这篇把该改的地方和会踩的坑一次说清。
CrewAI 现在是什么位置
CrewAI 走的是「角色分工」路线:Agent 有 role、goal、backstory,Task 描述要干什么,Crew 把两者编成顺序或层级流程。它和 Dify、Langflow 那种画布平台不是一类,入口是 Python 代码和 CLI,Crew Studio 是后补的商业化低代码层(之前单独写过)。只想拖流程的可以先用 Crew Studio,自己写 Python 的,下面每一条都会碰到。想看十家平台怎么分工,可以翻之前那篇横评。
截至 11 月 6 日,GitHub 上是 60,550 星、9,063 个 fork,当天还有提交。从 1.15.29 到 1.15.35 只用了 11 天,补丁发得很勤。官方口径说 65% 的 Fortune 500 在用,2026 年 2 月的调查说 12 个月跑了约 20 亿次 Agent 执行——厂商自报,听听就好,但至少说明它不是玩具。
1.15.29 删掉了什么
AgentExecutor 从 1.14.5 起就是默认执行器,这次只是摘掉实验标签;CrewAgentExecutor 则是彻底移除:
executor_class=CrewAgentExecutor,或配置文件里写字符串"CrewAgentExecutor",校验直接报CrewAgentExecutor has been removed。crewai.agents.crew_agent_executor、crewai.agents.CrewAgentExecutor、crewai.experimental.agent_executor这些 import 路径全部消失,统一改成from crewai.agents import AgentExecutor。- 官方明确说,没有设置能恢复旧执行器。
三个默认行为跟着变了
一、大工具结果落盘。 原生 tool call 返回超过模型上下文 25% 时,Agent 不再拿到全文,只收到一段预览和一个指向临时文件的引用,需要时用 read_a_deferred_tool_result 分段读。失败的调用、result_as_answer=True 的工具、ReAct 文本调用不延迟。想保留全文,给 Agent 加 use_better_compaction=False。
二、先摘要再发请求。 respect_context_window=True(默认)时,每次请求前先量大小,超窗就先摘要前面的对话,而不是等厂商返回 400。代价是精确引用可能被摘要吃掉。注意:关掉它不会保留全文,而是直接 SystemExit。
三、同参同果第 5 次就停。 同一工具、同一参数、同一结果在一次 run 里出现 5 次,抛 ToolExecutionFailedError。计数覆盖整个 task 或 kickoff,包含缓存命中;不受 tool_failure_policy 影响,max_retry_limit 也不重试,5 这个数字是写死的。
升级怎么做
先装 1.15.35(11 月 3 日):pip install -U "crewai==1.15.35"。然后 grep 两个词:executor_class、crew_agent_executor,有就删掉或改 import。接着跑一次真实 crew,重点看三类任务:靠工具吐大段 JSON 的、要逐字引用原文的、工具容易返回空结果的。前两类分别对应上面两个开关,第三类会第一次撞上「5 次停」。
另外,1.15.32 之后新项目往 JSON-first 走,agent 和 crew 的配置能落在 JSON 里由 crewai run 直接读;1.15.34 补了 --inputs 传给 Python flow 和 crewai skill search。升级别只看版本号,CLI 行为也变了。
实话
这三个默认值方向都对:省 token、防上下文爆炸、防死循环。问题是它们都静默生效——摘要不会告诉你丢了哪句原话,临时文件在 task 结束就删,等你回头查为什么答案不对,证据已经没了。我的做法是:工具返回的原始结果自己再落一份到磁盘或对象存储,别指望 CrewAI 的临时文件;对逐字引用要求高的 Agent 直接关 use_better_compaction;respect_context_window 保持默认,但把 max_tokens 和任务粒度切小,别让它走到摘要那一步。
还有一点,CrewAgentExecutor 这种删法放在 semver 里算 breaking change,却只发了 patch 号。生产环境锁版本,别写 crewai>=1.15。