用这四个框架分别搭建同一个三步工作流——检索、起草、审核——代码看上去几乎一模一样:声明几个 Agent,给它们配上工具,跑起来。可第一次运行跑到一半崩溃,它们就开始剧烈分化。LangGraph 从最后一个 checkpoint 重放;Anthropic 的托管运行时压根没丢过线索,因为状态从一开始就不在你的机器上;CrewAI 和 OpenAI Agents SDK 则从零重来。截至 2026 年 5 月下旬,它们的特性矩阵几乎重合。真正决定你能否在生产环境里运维它的那一点,在特性清单上根本看不见:你的智能体状态究竟存在哪里。
速览
四个框架,对同一个问题给出四种答案——编排层需要记住什么,又由谁负责不把它弄丢。下表先列基本信息;其下的矩阵则呈现各自在真正存在差异的那几条轴上最用力的方向。
| 框架 | 发布时间 / 维护方 | 主打场景 | 运行位置 |
|---|---|---|---|
| LangGraph | 2024 年,LangChain Inc. | 显式图状态机,持久化执行 | 你的基础设施(或 LangGraph Platform) |
| CrewAI | 2024 年,CrewAI Inc. | 基于角色的多智能体 Crews + Flows | 你的基础设施 |
| Claude Managed Agents | 2026 年 4 月(beta),Anthropic | 托管的服务端自主 harness | Anthropic 基础设施(Environment 可自托管) |
| OpenAI Agents SDK | 2025 年,OpenAI | 极简的代码优先 Agent + handoffs | 你的基础设施 |
快照:2026-05-28。这些框架更新很快,请对照最新文档核实。
LangGraph — 架构详解
图节点与边
LangGraph 要求你把控制流画成一张图。节点是函数——调用模型、运行工具、转换数据——边决定接下来运行什么。边可以是条件的(按状态分支),也可以是循环的(回环),所以这个结构是状态机,而非线性流水线。这与智能体循环所描述的感知-决策-行动循环本质相同,只是被显式化了:循环不再是模型 harness 内部一个不透明的 while 循环,而是一张你能读、能测、能逐条边推敲的图。监督者-路由到-专家的模式,或者经典的先规划后执行切分,都自然地呈现为图的拓扑。
状态对象
每个节点都从一个由你定义的、带类型的单一状态对象中读取并写回。不存在框架在你背后偷偷控制的隐藏对话缓冲区——状态就是你所写的那个 schema,节点的返回值由你可自定义的 reducer 合并进去。这使得 LangGraph 成为这里唯一一个对"我的智能体此刻知道什么?"在每一步都有具体、可检视答案的框架。它也划清了这种短期工作状态与短期 vs 长期记忆中所讨论的持久化知识存储之间的界线:图状态是单次运行的草稿纸;长期记忆是另一处独立的存储,由某个节点读取后注入其中。
checkpointer 与持久性
状态对象是主角;而 checkpointer 才是它在生产环境中重要的原因。LangGraph 通过一个可插拔的 checkpointer 在每个节点之后对完整状态拍快照——测试用内存,单机用 SQLite,集群用 Postgres。由于每一步在下一步运行前就已提交,运行时支持持久化执行与重放:进程在运行中途崩溃,它会从最后一个成功的步骤恢复,而不是从零重启。同样的 checkpoint 边界也支撑起人工介入式中断(在某个节点暂停,等待批准,再恢复)和 token 级流式输出。持久性不是事后再装上去的附加件;它是拥有一个带 checkpoint 的状态对象后的默认结果。
CrewAI — 架构详解
crew / agent / task 模型
CrewAI 的核心抽象是 Crew:一组各自声明了角色、目标和背景故事的智能体,协同完成一系列任务。你描述这些智能体是谁,而不是手工接出控制流——框架会把这些角色声明加上任务描述,转化为一场运行中的协作。它在构造上就是多智能体的,与监督者-工作者模式所讲的监督者-与-专家形态相同,只不过你是通过声明角色、而非画一张图来抵达它。
顺序 vs 层级化流程,以及 Flows
一支 crew 在某种流程下运行:顺序式(任务依次运行,每个输出喂给下一个)或层级化(一个 manager 智能体负责委派和审核)。要实现确定性的、事件驱动的控制——条件分支、显式状态、循环——CrewAI 增加了 Flows,一个独立的编排层,在那里状态是一等公民而非隐含存在。心智模型干净地一分为二:想要涌现式的、基于角色的协作时用 Crews,想要受控的流水线时用 Flows。许多真实系统会把一支 crew 嵌进一个 flow 里。
上下文在何处被隐式串联
在一支普通的 crew 里,状态大多是隐式的:上下文从一个任务的输出流入下一个智能体的提示词,由框架串联,而不是存放在你拥有的某个 schema 中。这对原型来说很顺手,也正因如此,它的持久性弱于 LangGraph 的 checkpointer 模型——除非你采用 Flows 并自行管理状态,否则没有内置的快照可供恢复。CrewAI 还原生支持 MCP 和 A2A,因此 crew 可以调用外部工具、并通过开放协议与其他智能体对话。有一点值得直说清楚:CrewAI 历史上确实建立在 LangChain 之上,但该项目现已独立于 LangChain——它当前的 README 将其描述为一个完全独立的框架。
Claude Managed Agents — 架构详解
客户端 / 服务端的分工
Claude Managed Agents(2026 年 4 月发布,处于 beta)把归属问题彻底反转过来。你运行一个轻量客户端;Anthropic 运行循环。该框架的概念是 Agent、Environment、Session 和 Events:你提交一个目标并流式接收这次运行,但编排发生在 Anthropic 基础设施上的服务端。这与 Claude Agent SDK 不同,后者在你的环境里运行循环——Managed Agents 是它的托管对应物,运行时是供应商的责任,而非你的。
服务端循环与工具执行
控制流是一个服务端的自主循环。一个 Session 在 Anthropic 基础设施上保存对话历史、容器状态与输出,因此运行在暂停之后能干净地恢复——线索从来不在你的机器上,也就无从丢失。你通过 Events 来观察和引导:运行通过 SSE 流式输出,你可以在运行途中发回 events 来中断或改变它的方向。Environment——工具和代码实际执行的地方——即使在循环本身保持托管的同时,也可以是你自己基础设施上的自托管沙箱,这让工具执行贴近你的数据,而无需你去运维编排器。
你放弃了什么,又得到了什么
你白白得到了持久性:没有 checkpointer 要配置,没有 Postgres 要运维,没有恢复逻辑要写。你放弃两件事。第一,这是一个单一的自主 harness,而非多智能体框架——子智能体不是它的招牌原语,所以别指望靠它拿到一等公民的 crews 或 handoffs。第二,由于 Session 状态存在 Anthropic 基础设施上,它不符合 ZDR 或 HIPAA 资格;那个让它"永不丢线索"的持久性特质,同时也意味着状态实实在在地离开了你的边界。这笔交易正是它的全部卖点:把运行时的运维权交出去,换来再也不用写恢复代码。
OpenAI Agents SDK — 架构详解
Agent + 工具
OpenAI Agents SDK 是这四者中最极简的:一个你在自己进程里运行的轻量库。一个 Agent 就是模型加指令加一组工具,一个小小的 runner 循环以普通代码的形式驱动"模型调用工具再评估"的循环。没有图 DSL,也没有角色声明要学——控制流就是你本就在写的 Python,SDK 只提供恰到好处的循环、追踪和结构来让它规矩起来。
handoffs
多智能体在这里通过 handoffs 成为一等公民:一个 Agent 把控制权转交给另一个,并连同完整上下文一起传过去。一个分诊 Agent 交接给一个专家 Agent;专家接管对话。这是这四者中最轻量的多智能体原语——比起图或托管的 crew,更接近一次函数调用——它直接对应到单智能体 vs 多智能体中的权衡:先从一个智能体起步,只在明确的专业化值得切出接缝时才拆成 handoffs。
guardrails 与 sessions(以及通过 LiteLLM 跑 Claude)
安全与人工介入来自 guardrails(可以中止运行的输入/输出校验器)和工具审批模式,并内置追踪以便观测。状态存放在一个进程本地的 Sessions 抽象中——默认在内存里,后端可插拔——而关键在于没有内置的 checkpoint 或重放:持久性是你的责任。运行中途崩溃,除非你自己持久化了 session,否则只能从头来过。一个务实的强项:捆绑的 LiteLLM adapter 能运行非 OpenAI 的模型,所以你可以用 LitellmModel(model="anthropic/claude-opus-4-7", ...) 来驱动 Claude,或者不离开 SDK 就换成 Gemini、Bedrock、Azure 或 Ollama。
横向对比
状态存在哪里与持久性
这正是把四者区分开来的那条轴,也是特性清单藏起来的那条。LangGraph 交给你一个你拥有的、在每一步之后拍快照的显式状态对象,于是持久性与重放成了默认——你可以丢掉进程而不丢掉这次运行。Claude Managed Agents 从相反方向抵达同样的"永不丢线索"持久性:Session 存在 Anthropic 的服务器上,所以状态之所以持久,恰恰是因为它从来就不归你持有(也正因如此,它离开了你的数据边界)。CrewAI 把状态隐式地留在 crew 里——上下文在任务之间串联,没有内置快照——除非你采用 Flows 并显式地管理它。OpenAI Agents SDK 维护一个进程本地的 Sessions 存储,默认在内存里、没有内置 checkpoint,于是持久性完全落在你身上。两个框架让恢复免费奉送;两个把它留成你的作业。分清谁是谁,正是一个 demo 和一个你能运维的东西之间的区别。
控制流模型
这四者落在一条从"画出来"到"交出去"的谱系上。LangGraph 最显式:你把控制流写成一张由节点和条件边、循环边构成的图,每条分支都可见、可测。OpenAI Agents SDK 以另一种习惯用法体现显式——控制流就是你进程里的普通代码,handoffs 是唯一那个结构化的分支。CrewAI 是声明式的:你描述角色和任务,让顺序或层级化的流程去决定排序,需要确定性的分支回环时再搬出 Flows。Claude Managed Agents 最"交出去":循环在服务器上自主运行,你通过流式发送 events 来引导它,而不是去编写它的结构。循环能否干净地终止——这正是规划与终止所关心的问题——你要么把它设计进一条 LangGraph 边里,要么通过 OpenAI SDK 的追踪去观察,要么就信任托管运行时来处理。
多智能体立场
四者中有三个把多智能体当作一等公民;一个刻意不这么做。CrewAI 在构造上就是多智能体——一支 crew 就是一队基于角色的智能体,这正是这个抽象的全部意义。LangGraph 通过 subgraphs 和监督者模式把它做成一等公民,将智能体作为节点组合进一张更大的图里。OpenAI Agents SDK 通过 handoffs 实现,这是三者中最轻量的控制权转交原语。Claude Managed Agents 是例外:它是一个单一的自主 harness,而非多智能体框架,所以子智能体不是招牌原语——选它是为了一个有能力的智能体,而不是一支 crew。在搬出多智能体那三者中的任何一个之前,值得先看看多智能体:何时与为何,以及紧随其后的拓扑结构,因为最便宜的多智能体系统,往往是你没有去拆的那个单智能体。
运行在哪里与谁来运维
状态问题最终坍缩成一个运维问题:如果状态存在你的基础设施上,运行时就由你运维;如果存在供应商那里,就由他们运维。四者中有三个跑在你的环境里,把持久性、扩容和可用性压在你的团队身上;Claude Managed Agents 把运行时连同数据边界一起搬到了 Anthropic。
| 框架 | 运行于 | 你来运维? |
|---|---|---|
| LangGraph | 你的基础设施(或 LangGraph Platform / LangSmith Deployment) | 是——除非你用托管的 Platform |
| CrewAI | 你的基础设施 | 是 |
| Claude Managed Agents | Anthropic 基础设施(Environment 可自托管) | 否——由 Anthropic 运维循环 |
| OpenAI Agents SDK | 你的基础设施 | 是 |
该选哪一个
| 使用场景 | 选 LangGraph,当…… | 选 CrewAI,当…… | 选 Claude Managed,当…… | 选 OpenAI Agents SDK,当…… |
|---|---|---|---|---|
| 持久化的长周期工作流 | 你想要一个带 checkpoint 的状态对象,在崩溃后从最后一步恢复,且跑在你掌控的基础设施上。 | 你能接受 Flows 管理的状态和显式持久化,或者你的运行足够短、重启代价很低。 | 你想白白得到持久性,且不介意 Session 状态存在 Anthropic 的服务器上。 | 不是天然合适——没有内置 checkpoint,所以你必须自己持久化 session。 |
| 快速搭一个基于角色的原型 | 杀鸡用牛刀——画一张图比一个原型所需的仪式感重得多。 | 你想声明几个带角色和任务的智能体,以最少的接线看它们协作。 | 对单智能体原型可行,但你并不是在为一队角色建模。 | 你想用普通代码搭出少数几个 Agent 和 handoffs,不必学新的 DSL。 |
| 不想运维基础设施 | 否——运行时由你运维(除非你采用托管的 Platform)。 | 否——CrewAI 跑在你的环境里。 | 是——Anthropic 运行循环并持有状态;你只流式接一个轻量客户端。 | 否——runner 循环就在你的进程里。 |
| 极简、代码优先 | 比你想要的更重;图抽象恰恰是极简的反面。 | 你偏好声明而非代码,所以这背离了代码优先。 | 否——循环是托管的,不是你编写的代码。 | 你想要一个轻量库,大部分就是你自己的 Python,再加上 handoffs、guardrails 和追踪。 |
| 复杂的分支控制流 | 你需要能显式编写和测试的条件边与循环边——这是 LangGraph 的主场。 | 你会在 crews 之上搬出 Flows 来做事件驱动的分支。 | 你乐于让服务端循环自行决定,并通过 events 来引导它。 | 你会把分支表达成普通代码和 handoffs,并接受复杂图会变得笨重。 |
常见问题
LangGraph 和 OpenAI Agents SDK 有什么区别?
两者都跑在你自己的基础设施里,但它们处在显式状态谱系的两端。LangGraph 给你一张由节点和边构成的显式图,运行在你拥有的、带 checkpoint 的状态对象之上,内置持久化执行与重放——运行中途崩溃,它会从最后一步恢复。OpenAI Agents SDK 是一个更轻量的库:控制流就是普通代码,多智能体通过 handoffs 实现,状态是一个进程本地的 Sessions 存储,默认在内存里、没有内置 checkpoint,所以持久性是你的责任。需要一个持久、可检视的状态机时选 LangGraph;想要极简的代码优先 Agent、并愿意自己处理持久化时选 OpenAI Agents SDK。
CrewAI 建立在 LangChain 之上吗?
不再是了。CrewAI 历史上确实建立在 LangChain 之上,但该项目现已独立——它当前的 README 将其描述为一个完全独立、不依赖 LangChain 的框架。它还原生支持 MCP 和 A2A,可通过开放协议与外部工具及其他智能体对话。
LangGraph 必须自托管吗,还是有托管版本?
你可以在任何能跑 Python 的地方自托管 LangGraph,并选择一个 checkpointer(内存、SQLite、Postgres)来匹配你的持久性需求。也有托管选项——历史上叫"LangGraph Platform",如今归入"LangSmith Deployment"旗下——它替你运行编排。确切的产品名称随时间几经变动,所以请查阅当前的 LangChain 文档确认叫法,但托管路径确实存在。
OpenAI Agents SDK 能用 Claude 或其他非 OpenAI 的模型吗?
能。该 SDK 捆绑了一个 LiteLLM adapter,所以你可以用类似 LitellmModel(model="anthropic/claude-opus-4-7", ...) 的方式运行 Claude,也能用 Gemini、Bedrock、Azure 或 Ollama。名字里的"OpenAI"指的是谁在维护这个库,而非锁定到 OpenAI 的模型。
到底什么时候该用框架,而不是一个普通的 while 循环?
对于一个调用几个工具、没有持久性或多智能体需求的单智能体来说,围绕一次模型调用的普通 while 循环其实完全够用——参见智能体循环。当你需要某个循环不会免费给你的东西时,再搬出框架:持久的 checkpoint 与重放、显式的分支控制流、一等公民的多智能体协调,或者一个你不必运维的托管运行时。框架的分量在"我以后再加持久化吧"不再是个小改动的那一刻,才真正物有所值。更宏观的权衡见智能体框架。
长周期、持久化的工作流,哪个框架最合适?
有两个选项开箱即给你持久性,方向相反。LangGraph 在每一步之后对一个你拥有的状态对象拍 checkpoint,崩溃后从最后一个成功步骤恢复——在你掌控的基础设施上持久。Claude Managed Agents 把 Session 存在 Anthropic 的服务器上,所以暂停之后能干净恢复,而无需你写任何恢复逻辑,代价是状态离开了你的边界(并且不符合 ZDR/HIPAA 资格)。CrewAI 的普通 crews 和 OpenAI Agents SDK 都把持久性留给你,所以除非你自己持久化状态,否则它们是较弱的选择。
延伸阅读
本站相关内容:
- 智能体框架——框架在裸模型调用之上添加了什么,以及这层抽象相对于一个普通循环何时物有所值。
- 智能体循环——这四者无一例外都包裹着的感知-决策-行动循环,被显式化后,你就能看清 LangGraph 画的是什么、OpenAI SDK 写的是什么、Anthropic 在服务端跑的又是什么。
- 监督者-工作者模式——CrewAI 默认内建、LangGraph 用 subgraphs 组合出来的协调形态,以及把工作委派给专家的种种权衡。
项目来源:
- LangGraph 文档——图、状态、checkpointers 与持久化执行(也见于 docs.langchain.com)。
- CrewAI 文档——Crews、Flows、流程,以及 MCP/A2A 支持(源码在 github.com/crewAIInc/crewAI)。
- Claude Managed Agents 文档——Agent、Environment、Session 与 Events 概念,以及客户端/服务端的分工。
- OpenAI Agents SDK 文档——Agent、工具、handoffs、guardrails、sessions,以及 LiteLLM adapter。