Agent 框架取舍——图、角色与 Actor 编排


文档摘要

Agent 框架取舍——图、角色与 Actor 编排 本节摘要:每个框架都卖同一个 demo(研究 agent 生成报告),也都藏同一个 bug(状态 schema 和编排层打架)。选框架的关键不是「谁最好」,而是让框架的核心抽象匹配你问题的形状——其余的都是你要写两遍的胶水。本节画出 2026 年四大框架(LangGraph、CrewAI、AutoGen、Agno)的取舍地图:它们各自的核心抽象(状态图/角色团队/对话/单体 Agent)、最适合与最不适合的场景、状态与分支问题的不同答案。读完本节,你能根据问题的形状选出抽象匹配的框架,而不是被 demo 牵着走。 对应原课程:Phase 11 · Lesson 17 · (原英文 )。

Agent 框架取舍——图、角色与 Actor 编排

本节摘要:每个框架都卖同一个 demo(研究 agent 生成报告),也都藏同一个 bug(状态 schema 和编排层打架)。选框架的关键不是「谁最好」,而是让框架的核心抽象匹配你问题的形状——其余的都是你要写两遍的胶水。本节画出 2026 年四大框架(LangGraph、CrewAI、AutoGen、Agno)的取舍地图:它们各自的核心抽象(状态图/角色团队/对话/单体 Agent)、最适合与最不适合的场景、状态与分支问题的不同答案。读完本节,你能根据问题的形状选出抽象匹配的框架,而不是被 demo 牵着走。

对应原课程:Phase 11 · Lesson 17 · agent-framework-tradeoffs(原英文 phases/11-llm-engineering/17-agent-framework-tradeoffs/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 理解选框架的正确标准(抽象匹配问题形状,而非「谁最好」)。
  2. 列举四大框架的核心抽象(LangGraph 状态图/CrewAI 角色团队/AutoGen 对话/Agno 单体 Agent)。
  3. 针对给定问题,判断哪个框架最适合与最不适合
  4. 理解状态问题分支问题为何是生产中框架选择的主要崩点。

一、问题与直觉

你有一个需要多次 LLM 调用的任务:研究工作流(规划/搜索/总结/引用)、代码审查流水线(解析 diff/批评/打补丁/验证)、或多轮助手(订机票/写邮件/报销)。你选了一个框架。

三天后你发现框架的抽象会漏:CrewAI 给你角色,但「研究员」要把结构化计划交给「写手」时它跟你作对;AutoGen 给你 agent 间聊天,但没有一等状态,你的检查点是对话日志的 pickle;LangGraph 给你状态图,但强迫你在还不知道 agent 会干什么时就命名每个转移;Agno 给你单体 agent 抽象,你想扇出到三个并发 worker 时它就尖叫。

修复不是「选最好的框架」,而是把框架的核心抽象匹配到你问题的形状。本节画这张地图。

二、核心概念:四大框架的抽象

框架 核心抽象 最适合 最不适合
LangGraph StateGraph——类型化状态、节点、条件边、checkpointer 有显式状态与人在环中断的工作流;需要时间旅行调试的生产 agent 拓扑未知的松散角色头脑风暴
CrewAI Crew——角色(目标/背景故事)、任务、流程(顺序或层级) 角色扮演或人格驱动、有短线性/层级计划的工作流 角色轮次历史之外的有状态需求;复杂分支
AutoGen ConversableAgent 对——两个及以上 agent 轮流发言直到退出条件 多 agent 对话(师-生、提议-批评、执行-审查),思考从聊天中涌现 已知 DAG 的确定性工作流;需跨重启持久状态
Agno Agent——单个 LLM + 工具 + 记忆,可组合成团队 快速搭建的单 agent 与轻量团队;强多模态与内置存储 深度、显式分支、带自定义 reducer 的图

「抽象」到底指什么

框架的核心抽象是你在白板上画给团队看架构时画的那个东西:

  • LangGraph → 你画一张。节点是步骤,边是转移,每点状态有类型。心智模型是状态机。
  • CrewAI → 你画一张组织架构图。每角色有岗位说明,经理路由任务。心智模型是专家小团队。
  • AutoGen → 你画一个 Slack 私信。两个 agent 互发消息,需要仲裁就加第三个。心智模型是聊天。
  • Agno → 你画一个挂着工具的方块。团队就把方块并排放。心智模型是「自带电池的 agent」。

三、两大崩点:状态问题与分支问题

状态问题

状态是大多数框架在生产中崩掉的地方:

  • LangGraph:类型化状态(TypedDict/Pydantic)、每字段 reducer、一等 checkpointer(SQLite/Postgres/Redis)。恢复、中断、时间旅行免费(见第 16 节)。
  • CrewAI:状态以字符串经 context 字段在任务间流动,或经 output_pydantic 结构化。开箱无持久化 per-rew 存储,要 crew 跨重启存活得自己加。
  • AutoGen:状态是聊天历史 + 用户定义的 context。对话转录能持久;任意工作流状态不能,除非你写适配器。
  • Agno:内置存储驱动(SQLite/Postgres/Mongo/Redis/DynamoDB)经 storage= 挂在 Agent 上——会话与用户记忆自动持久。是会话存储,不是完整图 checkpointer。

分支问题

  • LangGraph:条件边是一等公民,分支任意。
  • CrewAI:流程是顺序或层级,复杂分支要绕。
  • AutoGen:分支靠「拉第三个 agent 进对话」实现,非显式图。
  • Agno:扇出到并发 worker 靠 team 抽象,但深度分支不如 LangGraph 自然。

💡 选型心法:把你的问题画在白板上。画出来的是图 → LangGraph;是组织架构图 → CrewAI;是对话 → AutoGen;是带工具的方块 → Agno。画的形状匹配的抽象,就是你的框架。

四、框架对比(综合)

维度 LangGraph CrewAI AutoGen Agno
心智模型 状态机 小团队 聊天 自带电池 agent
持久状态 一等(checkpointer) 弱(要自加) 对话转录 会话存储
分支 任意条件边 顺序/层级 隐式(拉人) team 扇出
人在环 interrupt_before 角色审批 对话回合 会话
最适合 生产工作流 角色驱动 多 agent 对话 快速单 agent

五、可复用产物

本节产出 outputs/skill-agent-framework-selection.md——框架选型决策树:你的问题画出来像什么(图/组织架构图/对话/方块)→ 对应框架;附状态与分支两个崩点的检查清单,帮你避开生产坑。

六、练习

  1. 画图匹配:把「研究→写报告→审阅→修订」这个任务分别画成图/组织架构图/对话/方块四种形状,判断哪个最自然,选对应框架。
  2. 状态崩点:用 CrewAI 实现一个需跨 3 个任务传递结构化计划的工作流,观察 context 传字符串的痛点;对比 LangGraph 的类型化状态。
  3. 分支对比:同一个「按模型输出二选一」的逻辑,在 LangGraph(条件边)和 AutoGen(拉审查者进对话)里分别实现,对比自然度。
  4. 反驳 demo:四个框架都能做出「研究 agent 生成报告」的 demo;各写一个,然后故意加一个「需人在环审批 + 跨重启恢复」的需求,看哪个框架改动最小。

本节要点回顾

  1. 选型标准:让框架核心抽象匹配问题形状,而非选「最好的」;不匹配的都是写两遍的胶水。
  2. 四大抽象:LangGraph(状态图)、CrewAI(角色团队)、AutoGen(对话)、Agno(单体 Agent + 工具)。
  3. 白板心法:问题画成图→LangGraph、组织架构图→CrewAI、聊天→AutoGen、带工具方块→Agno。
  4. 状态崩点:LangGraph 一等 checkpointer;CrewAI 弱要自加;AutoGen 只持久对话;Agno 会话存储(非图 checkpointer)。
  5. 分支崩点:LangGraph 任意条件边最自然;CrewAI 顺序/层级;AutoGen 靠拉人;Agno team 扇出。
  6. demo 陷阱:四家都能做研究 agent demo;真选型要用「人在环 + 跨重启」这类生产需求去压测。
  7. 没有银弹:每个抽象都有最适合与最不适合,匹配形状即可。

本节是「LLM 工程化」章的收尾。回到「教程总纲.md」可进入下一篇(多模态 AI),或回顾本章从提示工程到 Agent 框架的完整工程链路。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U