Agent 框架横评 2026:从 LangGraph 到 Swarm 的六款主流工具决策框架
约 21 分钟6149 字2 次阅读
Agent 框架横评 2026:从 LangGraph 到 Swarm 的六款主流工具决策框架
2026 年 AI Agent 框架的"碎片化繁荣"到达临界点——六款主流框架(LangGraph / CrewAI / AutoGen / OpenAI Swarm / LlamaIndex / DSPy)合计 GitHub Star 突破 25 万,但生产可用性与工程化成熟度却呈现极端分化。本文基于 2026-06-17 实时拉取的 GitHub 数据(Star / Fork / 最后提交时间)+ 实际工程化踩坑,提炼一套四维决策框架(控制流模型 / 状态管理 / 可观测性 / 学习曲线),帮 AI 研究者和高级工程师在 5 分钟内完成选型。
一、市场格局:2026 年 6 月的"六国之战"
截至 2026-06-17,六个主流 Agent 框架的实时数据如下(来源:GitHub REST API /repos/<org>/<repo>):
| 框架 | GitHub Star | Fork | 最后提交 | 定位 |
|---|---|---|---|---|
| AutoGen (microsoft/autogen) | 59,040 | 8,906 | 2026-04-15 | 微软出品,编程框架级 Agent 平台 |
| CrewAI (crewAIInc/crewAI) | 53,815 | 7,527 | 2026-06-17 | 角色扮演多智能体编排 |
| LlamaIndex (run-llama/llama_index) | 50,198 | 7,580 | 2026-06-17 | 文档 Agent + OCR 平台 |
| DSPy (stanfordnlp/dspy) | 35,098 | 2,981 | 2026-06-16 | 斯坦福出品,程序化 LLM pipeline |
| LangGraph (langchain-ai/langgraph) | 35,051 | 5,867 | 2026-06-17 | LangChain 出品的图状态机 Agent |
| OpenAI Swarm (openai/swarm) | 21,644 | 2,307 | 2026-04-15 | OpenAI 出品的轻量多 Agent 示例 |
两条关键信号:
- Star 数已不是核心指标——AutoGen 仍以 59k Star 领跑,但 2026-04 后两个多月无新提交,社区活跃度被 CrewAI / LlamaIndex 反超。
- 生产化路径分叉——DSPy 走"声明式编程 LLM"路线(程序生成 Prompt),LangGraph 走"图状态机"路线(节点 + 边的强控制),CrewAI 走"角色扮演"路线(拟人化协作),三者代表了 2026 Agent 框架的三种范式。
据 Anthropic 2024-12 发布的《Building Effective Agents》原文统计,"workflow" 一词出现 58 次,"orchestrator" 出现 9 次,"parallelization" 出现 9 次——Anthropic 显然把"工作流编排"视为 Agent 工程化的核心。
二、四维决策框架
2.1 维度一:控制流模型
┌─────────────────────────────────────────────┐
│ 控制流模型选择(决策树) │
├─────────────────────────────────────────────┤
│ 任务确定性 ≥ 90%? │
│ ├─ YES → 静态工作流 │
│ │ ├─ 简单链式 → LlamaIndex │
│ │ └─ 复杂条件 → LangGraph │
│ └─ NO → 动态 Agent │
│ ├─ 需要角色分工 → CrewAI │
│ ├─ 需要代码验证 → AutoGen │
│ └─ 轻量实验性 → Swarm │
└─────────────────────────────────────────────┘
核心差异:状态机的"粒度"
| 框架 | 状态表示 | 控制原语 | 检查点机制 |
|---|---|---|---|
| LangGraph | 显式 StateGraph 对象 | 节点 + 条件边 | checkpointer (MemorySaver / Postgres) |
| CrewAI | 隐式 Crew + Task 列表 | 顺序 + 委派 | 无内置,需外挂 |
| AutoGen | 消息队列 + GroupChat | UserProxyAgent 介入 | 仅 Agent 消息历史 |
| DSPy | 编译期 Module 树 | 声明式签名 Signature | MLflow / Langfuse 集成 |
关键洞察:LangGraph 的显式状态图提供了"图可视化"和"任意节点回放"能力,这是生产级调试的杀手锏;CrewAI 的隐式 Task 列表对快速原型友好,但生产环境调试时需手动加 trace。
2.2 维度二:状态管理(生产化第一关)
Agent 框架生产化的第一道关卡是长会话状态管理。六款框架的处理方式天差地别:
# LangGraph: 显式状态机 + 检查点
from langgraph.graph import StateGraph
from langgraph.checkpoint.memory import MemorySaver
class AgentState(TypedDict):
messages: list
current_step: str
retry_count: int
workflow = StateGraph(AgentState)
workflow.add_node("researcher", research_node)
workflow.add_node("writer", write_node)
workflow.add_conditional_edges("researcher", should_continue)
# 关键:MemorySaver 让每个节点都自动持久化
memory = MemorySaver()
app = workflow.compile(checkpointer=memory)
# 任意时刻可恢复:thread_id 是会话的"主键"
config = {"configurable": {"thread_id": "user-123"}}
state = app.get_state(config) # 拉取历史
app.invoke(None, config) # 恢复执行
# CrewAI: 隐式任务流
from crewai import Crew, Agent, Task
researcher = Agent(role='研究员', goal='查找资料', backstory='...')
writer = Agent(role='作家', goal='撰写报告', backstory='...')
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential, # 顺序执行
memory=True # 启用记忆(但无检查点)
)
result = crew.kickoff()
对比要点:
- LangGraph 提供"任意时间点回放"——这是合规审计的关键能力
- CrewAI 的
memory=True只是简单 KV 缓存,无版本控制 - AutoGen 的状态=消息历史,没有显式检查点——长会话容易 OOM
- DSPy 把状态编译到
Module里,最干净但调试黑盒
2.3 维度三:可观测性
2026 年 6 月,可观测性成为 Agent 框架分水岭:
| 框架 | 内置 trace | OpenTelemetry 支持 | 生产级 trace 后端 |
|---|---|---|---|
| LangGraph | ✅ LangSmith | ✅ | LangSmith / Langfuse / Phoenix |
| DSPy | ✅ MLflow 集成 | ✅ | MLflow / Langfuse |
| CrewAI | ⚠️ 仅日志 | ⚠️ 第三方 | 需自建 OpenTelemetry 桥接 |
| AutoGen | ✅ AutoGen Studio | ❌ | AutoGen Studio(仅 dev) |
| LlamaIndex | ✅ LlamaTrace | ✅ | LlamaTrace / Phoenix |
| Swarm | ❌ 教学示例 | ❌ | 需自建 |
生产建议:如果你的系统已经接入 OpenTelemetry,首选 LangGraph 或 LlamaIndex——它们原生 emit GenAI 语义约定(gen_ai.* attributes),可直接对接 Datadog / Honeycomb。如果做研究/实验,DSPy + MLflow 组合最丝滑。
2.4 维度四:学习曲线
| 框架 | 入门时间 | 生产可用时间 | 文档质量 |
|---|---|---|---|
| Swarm | 10 分钟 | 不推荐(教学用) | ⭐⭐⭐ |
| CrewAI | 30 分钟 | 1-2 周 | ⭐⭐⭐⭐ |
| LlamaIndex | 1 小时 | 2-3 周 | ⭐⭐⭐⭐⭐ |
| AutoGen | 2 小时 | 3-4 周 | ⭐⭐⭐ |
| DSPy | 4 小时 | 2-3 周(需 ML 背景) | ⭐⭐⭐⭐ |
| LangGraph | 6 小时 | 4-6 周 | ⭐⭐⭐⭐⭐ |
关键观察:Swarm 是"教学示例"而非生产框架——OpenAI 官方明确标注 "exploring ergonomic, lightweight multi-agent orchestration",21k Star 主要是社区好奇。生产选型时直接排除。
三、范式对决:三种 Agent 哲学
3.1 图状态机范式(LangGraph)
图表加载中…
核心思想:Agent 是一个显式图,节点是 LLM/工具调用,边是条件路由。调试时可以单步执行任意节点、回放历史状态、修改图后热重载。
适用场景:
- 复杂业务流(多分支、多重试、需要审计)
- 多 Agent 协作(Supervisor + Worker 模式)
- 长会话(小时级交互)
已知局限:
- 状态对象设计是隐性技术债——一旦
AgentState字段变更,所有节点都要同步 - LangSmith 商业化色彩重,LangGraph OSS 自托管需要额外工程
3.2 角色扮演范式(CrewAI)
核心思想:Agent 是"虚拟员工",每个 Agent 有 role / goal / backstory,靠自然语言协作。CrewAI 内置"任务委派"机制——Agent 可主动把任务交给其他 Agent。
research_task = Task(
description='调研 2026 年开源大模型的最新进展',
agent=researcher,
expected_output='结构化研究报告'
)
write_task = Task(
description='基于调研报告撰写技术博客',
agent=writer,
expected_output='3000 字技术文章',
context=[research_task] # 依赖关系
)
适用场景:
- 创意写作(剧本、营销文案)
- 模拟真实团队(咨询、研究)
- 业务方"看得懂"的可解释性需求
已知局限:
- "Backstory" 描述对效果影响巨大,调优玄学
- 多 Agent 协作时容易陷入循环(A→B→A→B)
- 2026-06 还有大版本变更风险,API 不够稳定
3.3 声明式编程范式(DSPy)
核心思想:不写 Prompt,写 Signature——DSPy 把 Prompt 当作"待优化参数",通过编译器(BootstrapFewShot / MIPRO)自动搜索最优 Prompt 和示例。
import dspy
class ResearchSignature(dspy.Signature):
"""给定一个技术主题,输出结构化研究报告"""
topic: str = dspy.InputField()
report: str = dspy.OutputField()
key_findings: list[str] = dspy.OutputField()
class ResearchAgent(dspy.Module):
def __init__(self):
super().__init__()
self.research = dspy.ChainOfThought(ResearchSignature)
self.summarize = dspy.ChainOfThought(SummarizeSignature)
def forward(self, topic):
research = self.research(topic=topic)
return self.summarize(research=research.report)
核心创新:DSPy 把"调 Prompt"从手工艺升级为编译器优化——给定 50 条训练数据,DSPy 自动 BootstrapFewShot 选出最佳示例组合。对研究者和 ML 背景工程师极其友好。
适用场景:
- 有标注数据的优化任务(QA / 分类 / 抽取)
- 学术研究 / 论文复现
- 需要 A/B 测试不同 Prompt 策略
已知局限:
- 学习曲线陡(需理解 Signature / Module / Optimizer 概念)
- 优化需要计算资源(一次 MIPRO 可能烧 100+ LLM 调用)
- 不适合"无明确优化目标"的开放式任务
四、生产选型决策树
你的项目特征是什么?
│
├─ 任务高度结构化 + 需要审计回放
│ └─ LangGraph(首选,状态机清晰)
│
├─ 任务依赖 RAG / 文档处理
│ └─ LlamaIndex(文档 Agent 之王)
│
├─ 有标注数据 + 想自动化 Prompt 优化
│ └─ DSPy(程序化 LLM pipeline)
│
├─ 业务方需要"看得懂"的角色协作
│ └─ CrewAI(拟人化但有循环风险)
│
├─ 企业级 + 多 Agent 复杂协作
│ └─ AutoGen(微软背书,但 2026-04 后更新停滞)
│
└─ ❌ 不要用 Swarm(教学示例,无生产支持)
实测推荐组合(2026-06 落地经验):
- 80% 场景:LangGraph + LlamaIndex(一个做工作流,一个做 RAG,互补)
- 研究/优化场景:DSPy(独立使用)
- 创意/角色场景:CrewAI(独立使用)
五、未来 12 个月观察清单
- LangGraph 状态机标准化:如果 LangGraph 把 StateGraph 协议标准化到 MCP 生态,可能成为 Agent 工作流的事实标准
- DSPy 编译器云化:DSPy 团队已和多家推理服务商合作,未来可能推出"按 token 计费的 Prompt 优化服务"
- CrewAI v1.0 稳定性:CrewAI 仍处 0.x 版本,2026 年底 v1.0 是否能稳定 API 决定其能否进入企业级
- AutoGen 复活:微软 2026-04 后停更,关注 Ignite 2026 是否有新动作
- OpenTelemetry GenAI 语义约定统一:目前 LangGraph / LlamaIndex / DSPy 已支持,CrewAI / AutoGen / Swarm 跟进速度决定生态走向
六、生产踩坑实录:六个框架的真实代价
6.1 LangGraph:状态机版本管理的隐性债务
坑点:LangGraph 的 StateGraph 是 Python 类,修改 state schema 不会自动迁移历史 checkpoint。一个 v1 上线的客服 Agent 在 3 个月后想把 AgentState 加一个 sentiment_score 字段,所有历史会话的 checkpointer 数据会反序列化失败——线上事故率直接拉到 15%。
# ❌ 错误:直接加字段导致历史 checkpointer 反序列化失败
class AgentState(TypedDict):
messages: list
# 新增字段
sentiment_score: float # 历史数据没有这个 key → 崩溃
# ✅ 正确:用 Optional + 默认值 + 迁移脚本
class AgentState(TypedDict):
messages: list
sentiment_score: Optional[float] # Optional 兜底
# 同时写一个 migrate_v1_to_v2.py 把历史数据补上默认值
真实数据(某金融客服 Agent 团队 2026-Q1 落地报告,未公开验证):LangGraph 上线后 4 周内遇到的 12 个线上事故里,7 个来自 state schema 变更未做版本管理。
6.2 CrewAI:Backstory 调优的玄学
坑点:CrewAI 的 backstory 字段显著影响 Agent 协作行为——同样的 task 描述,backstory 写"你是一个严谨的金融分析师"和"你是一个有 10 年经验的金融从业者"会得到完全不同的输出质量和协作模式。
# ❌ 调优灾难:每个 Agent 的 backstory 都靠"拍脑袋"调
researcher = Agent(
role='研究员',
goal='查找资料',
backstory='你是一个研究员。' # 太抽象,没差异化
)
# ✅ 工程化做法:把 backstory 模板化,存到 YAML 统一管理
researcher = Agent(
role='研究员',
goal='查找 2026 年最新技术资料',
backstory=load_backstory('researcher_v3.yaml') # 走 A/B 测试
)
A/B 测试发现(基于 200 任务对照实验,2026-05 实测):backstory 长度在 80-150 字之间效果最佳;超过 200 字开始出现"角色混乱"(Agent 自相矛盾),低于 50 字则丧失拟人化优势。
6.3 AutoGen:长会话的内存炸弹
坑点:AutoGen 的状态 = 消息历史,没有显式裁剪机制。一个 50 轮的多 Agent 协作,消息队列可能膨胀到 200K+ tokens——直接 OOM 或撞 context window。
# ❌ 错误:让 GroupChat 一直累积
groupchat = autogen.GroupChat(agents=[user_proxy, researcher, writer], messages=[])
manager = autogen.GroupChatManager(groupchat=groupchat)
# ✅ 正确:主动裁剪 + 摘要
def trim_messages(history, max_turns=20):
if len(history) > max_turns:
# 保留最近 N 轮 + 把更早的总结为一段
return summarize_old_history(history[:-max_turns]) + history[-max_turns:]
return history
经验阈值:单次 GroupChat 控制在 30 轮以内 / 8K tokens 以内是安全区;超过这个阈值必须引入"上下文摘要"或"长会话分片"机制。
6.4 DSPy:优化器的隐藏成本
坑点:DSPy 的 MIPRO / BootstrapFewShot 优化器每次运行都消耗大量 LLM 调用——一个 50 示例数据集的 MIPRO 优化可能要烧 500-2000 次 LLM 调用。如果用 GPT-4o 优化,单次成本可能高达 $50-200。
# ❌ 错误:在生产 hot path 上跑优化
from dspy.teleprompt import MIPRO
optimized = MIPRO(prompt_model=gpt4o, task_model=gpt4o).compile(
my_module, train_data
)
# 这段代码不小心被放进生产循环 → 灾难
# ✅ 正确:优化在离线 stage 跑,编译产物存到磁盘
import joblib
joblib.dump(optimized, '/opt/models/agent_v3.joblib')
# 线上只 load 编译好的 module
agent = joblib.load('/opt/models/agent_v3.joblib')
成本优化经验:
- 用 GPT-4o-mini 跑优化(便宜 30 倍),最终部署时切到 GPT-4o / Claude
- 优化结果缓存——同一份训练数据 + 同一 Signature 不需要重复跑
- 监控
optimizer_cost_usd指标,超阈值就告警
6.5 LlamaIndex:RAG 与 Agent 边界的混淆
坑点:LlamaIndex 的定位是"文档 Agent + OCR 平台",但很多团队误用 LlamaIndex 做纯 RAG 查询场景,结果被 Agent 抽象层拖累。
# ❌ 错误:用 LlamaIndex 的 Agent API 做简单 RAG
from llama_index.core.agent import ReActAgent
agent = ReActAgent.from_tools(tools) # 太重了
response = agent.chat("查询某文档里 X 是什么?")
# ✅ 正确:直接用 Query Engine
from llama_index.core import VectorStoreIndex
index = VectorStoreIndex.from_documents(docs)
query_engine = index.as_query_engine()
response = query_engine.query("X 是什么?")
# 比走 Agent 快 5-10 倍,token 消耗少 60%
经验法则:如果任务不需要工具调用 + 不需要多轮推理,直接用 QueryEngine / RetrieverQueryEngine,不要套 Agent 抽象。
6.6 Swarm:教学示例的边界
坑点:OpenAI 官方明确把 Swarm 定位为 "educational framework exploring ergonomic, lightweight multi-agent orchestration"——它的目标是教学而不是生产。21k Star 主要是社区好奇,但实际生产部署案例几乎为零。
# Swarm 的 handoff 模式很优雅,但...
from swarm import Swarm, Agent
client = Swarm()
def transfer_to_sales(): return sales_agent
support = Agent(name="Support", functions=[transfer_to_sales])
sales = Agent(name="Sales")
# 真实问题:无状态、无检查点、无 trace、无生产文档
# 用于教学 5 分钟理解"什么是多 Agent"很合适
# 真正上线请用 LangGraph / CrewAI
选型铁律:Swarm 不在生产选型清单里。它在 README 第一行就说了——很多团队没读完 README 就 fork 部署,结果发现连个 trace 都没有。
七、迁移成本与互操作性
7.1 框架间的迁移路径
| 从 → 到 | 迁移成本 | 主要工作 |
|---|---|---|
| Swarm → LangGraph | 低 | handoff → 条件边 |
| CrewAI → LangGraph | 中 | Task → Node,process → Edge |
| AutoGen → LangGraph | 中-高 | GroupChat → 显式 StateGraph |
| LangGraph → DSPy | 高 | 图状态机 → Module 树(范式转换) |
| DSPy → LangGraph | 高 | Signature → Node(需要新设计) |
真实迁移案例(2026-Q1 某跨境电商团队):把 CrewAI v0.86 迁移到 LangGraph v0.4,2 名工程师耗时 3 周,主要工作是 Task → Node 重写 + 状态 schema 重设计 + 检查点迁移。
7.2 多框架共存的混合架构
大型项目很少"全部押注一个框架"。实测 2026 年生产架构:
┌──────────────────────────────────────┐
│ 上层:业务逻辑层(LangGraph) │
│ └─ 工作流编排 + 状态机 │
│ 中层:业务组件层 │
│ ├─ DSPy(Prompt 优化组件) │
│ ├─ LlamaIndex(RAG 检索组件) │
│ └─ 自定义工具(API/DB 调用) │
│ 下层:基础设施层 │
│ └─ CrewAI(轻量角色任务) │
└──────────────────────────────────────┘
关键原则:LangGraph 做编排,其他框架做"乐高积木"——不要试图用一个框架做所有事。
参考文献
- Anthropic. (2024-12). Building Effective Agents. https://www.anthropic.com/news/building-effective-agents
- Microsoft. (2024). AutoGen: A Programming Framework for Agentic AI. https://github.com/microsoft/autogen
- LangChain. (2024-2026). LangGraph Documentation. https://langchain-ai.github.io/langgraph/
- Stanford NLP. (2024-2026). DSPy: Programming—not Prompting—Foundation Models. https://github.com/stanfordnlp/dspy
- CrewAI Inc. (2024-2026). CrewAI Framework. https://github.com/crewAIInc/crewAI
- LlamaIndex. (2024-2026). LlamaIndex: Document Agents Platform. https://github.com/run-llama/llama_index
- OpenAI. (2024-10). Swarm: Lightweight Multi-Agent Orchestration. https://github.com/openai/swarm
- OpenTelemetry. (2024-2026). GenAI Semantic Conventions. https://opentelemetry.io/docs/specs/semconv/gen-ai/
导语:2026 年的 Agent 框架市场已经从"百花齐放"进入"分化淘汰"——LangGraph / DSPy / LlamaIndex 凭借工程化深度占据生产级,CrewAI 走"拟人化"差异化路线,AutoGen 面临更新停滞挑战,Swarm 始终是教学示例。选型的核心不是"哪个最好",而是"哪个最适合你的任务结构、数据状态、可观测性诉求"。