AI 博客

LangGraph、CrewAI、Claude Managed Agents 与 OpenAI Agents SDK:编排层的四种架构

四款编排框架都能搭起同一个工作流,功能清单也几乎一致。真正决定谁能扛住生产环境的那一点却看不见:你的智能体状态究竟存在哪里。

作者 智能体 AI 维基 49 分钟读完

用这四个框架分别搭建同一个三步工作流——检索、起草、审核——代码看上去几乎一模一样:声明几个 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。这些框架更新很快,请对照最新文档核实。

Orchestration feature matrix Heatmap comparing LangGraph, CrewAI, Claude Managed Agents, and OpenAI Agents SDK across six axes: State durability, Control-flow, Multi-agent, Streaming, Human-in-loop, and Hosting. Strength indicated by fill color from light (weak) to dark orange-red (strong). Orchestration feature matrix State durability Control- flow Multi- agent Streaming Human- in-loop Hosting LangGraph Checkpointed Graph Subgraphs Yes Yes Self / Platform CrewAI In-memory Roles + tasks Native crews Partial Limited Self Claude Managed Server- held Server loop Single harness Yes Steer via events Managed OpenAI Agents SDK Session Code + handoffs Handoffs Yes Guardrails Self Weak Medium Strong
每个框架最用力的方向。除了状态持久性和谁来运维运行时,其余各轴几乎处处趋同。

LangGraph — 架构详解

LangGraph architecture Nodes in a cyclic graph read and write a single explicit state object you own; a pluggable checkpointer persists that state to memory, SQLite, or Postgres for durable execution and replay. LangGraph — Compiled Graph START Node A read + write Node B route / branch Node C tool call / LLM END conditional edge (loop) Explicit State Object TypedDict / Pydantic — you own the schema nodes READ & WRITE channel reducers merge updates the one inspectable source of truth Checkpointer durable · replayable in-memory / SQLite / Postgres persists every state snapshot Human-in-the-loop / interrupt
LangGraph 在你拥有的状态对象上运行一张节点图;checkpointer 在每一步之后对该状态拍快照。

图节点与边

LangGraph 要求你把控制流画成一张图。节点是函数——调用模型、运行工具、转换数据——边决定接下来运行什么。边可以是条件的(按状态分支),也可以是循环的(回环),所以这个结构是状态机,而非线性流水线。这与智能体循环所描述的感知-决策-行动循环本质相同,只是被显式化了:循环不再是模型 harness 内部一个不透明的 while 循环,而是一张你能读、能测、能逐条边推敲的图。监督者-路由到-专家的模式,或者经典的先规划后执行切分,都自然地呈现为图的拓扑。

状态对象

每个节点都从一个由你定义的、带类型的单一状态对象中读取并写回。不存在框架在你背后偷偷控制的隐藏对话缓冲区——状态就是你所写的那个 schema,节点的返回值由你可自定义的 reducer 合并进去。这使得 LangGraph 成为这里唯一一个对"我的智能体此刻知道什么?"在每一步都有具体、可检视答案的框架。它也划清了这种短期工作状态与短期 vs 长期记忆中所讨论的持久化知识存储之间的界线:图状态是单次运行的草稿纸;长期记忆是另一处独立的存储,由某个节点读取后注入其中。

checkpointer 与持久性

状态对象是主角;而 checkpointer 才是它在生产环境中重要的原因。LangGraph 通过一个可插拔的 checkpointer 在每个节点之后对完整状态拍快照——测试用内存,单机用 SQLite,集群用 Postgres。由于每一步在下一步运行前就已提交,运行时支持持久化执行与重放:进程在运行中途崩溃,它会从最后一个成功的步骤恢复,而不是从零重启。同样的 checkpoint 边界也支撑起人工介入式中断(在某个节点暂停,等待批准,再恢复)和 token 级流式输出。持久性不是事后再装上去的附加件;它是拥有一个带 checkpoint 的状态对象后的默认结果。

CrewAI — 架构详解

CrewAI architecture A crew of role-based agents runs an ordered task list with context threaded implicitly between agents; Flows add an event-driven path with explicit state when needed. Crew independent framework — no vendor lock-in Process sequential | hierarchical (manager LLM) Researcher role-based agent goal + backstory + tools Writer role-based agent goal + backstory + tools Reviewer role-based agent goal + backstory + tools context threaded implicitly — NO external state store Tasks ordered list · expected_output · assigned agent crew.kickoff() → final output Flows event-driven, explicit state @start / @listen decorators opt-in stateful path opt-in Memory short-term · long-term · entity optional — not default pluggable storage backends Tools LangChain-compatible + CrewAI native
CrewAI 把基于角色的智能体组合成一支 crew;Flows 在其上加一层显式的、事件驱动的状态。

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 architecture The client submits a goal and streams results via SSE; Anthropic's server runs the agent loop and holds all session state — a single managed harness, not a multi-agent framework. CLIENT Submit goal POST /v1/agents/sessions Steer via events human-in-the-loop / cancel Poll / Stream (SSE) event stream — non-blocking Single harness NOT multi-agent-first one loop · env can self-host Anthropic Server Agent Loop plan → act → observe managed by Anthropic Claude model calls State lives here sessions on Anthropic infra resumable · history tool outputs + context client holds NO state Tool Execution bash · web · file · custom sandboxed environment Event / Result Stream SSE events → client poll / stream tool_use · text · done · error submit · steer stream (SSE)
客户端提交目标并流式接收 events;Anthropic 的服务器运行循环并持有 Session 状态。

客户端 / 服务端的分工

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 — 架构详解

OpenAI Agents SDK architecture A thin Runner loop drives an Agent with tools, hands off to peer agents, and applies input/output guardrails; session state is process-local and in-memory unless you persist it yourself. Runner Loop Agent instructions (prompt) model: GPT / Claude… tools list handoffs list Tools function_tool decorator web / file search custom fns hosted MCP tools Peer Agent handoff target own tools + instructions runner re-enters loop with new active agent Guardrails input check output check run in parallel raise tripwire handoff Session State process-local · in-memory by default NO built-in checkpoint or replay persist it yourself for durability Lifecycle hooks on_tool_start / on_agent_end Model adapter OpenAI models (default) Claude / Gemini via LiteLLM adapter Tracing built-in spans → dashboard agent · tool · handoff chain
你进程里一个轻量的 runner 循环:带工具的 Agent、它们之间的 handoffs、guardrails,以及一个进程本地的 Sessions 存储。

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。

横向对比

状态存在哪里与持久性

Where state lives & durability Four-column comparison of state durability: LangGraph checkpoints state you own (most durable), CrewAI keeps state in-memory with optional explicit state via Flows, Claude Managed Agents holds sessions server-side on Anthropic infrastructure, OpenAI Agents SDK uses process-local in-memory sessions with no built-in checkpoint. Where state lives & durability LangGraph Explicit checkpointed state object you own; durable, replayable CrewAI In-memory in the crew; Flows add explicit state Claude Managed Agents Server-held sessions on Anthropic infra; resumable OpenAI Agents SDK Process-local session; in-memory by default; no built-in checkpoint
主角那条轴:你的智能体状态有四个不同的家,对应四种不同的持久性故事。

这正是把四者区分开来的那条轴,也是特性清单藏起来的那条。LangGraph 交给你一个你拥有的、在每一步之后拍快照的显式状态对象,于是持久性与重放成了默认——你可以丢掉进程而不丢掉这次运行。Claude Managed Agents 从相反方向抵达同样的"永不丢线索"持久性:Session 存在 Anthropic 的服务器上,所以状态之所以持久,恰恰是因为它从来就不归你持有(也正因如此,它离开了你的数据边界)。CrewAI 把状态隐式地留在 crew 里——上下文在任务之间串联,没有内置快照——除非你采用 Flows 并显式地管理它。OpenAI Agents SDK 维护一个进程本地的 Sessions 存储,默认在内存里、没有内置 checkpoint,于是持久性完全落在你身上。两个框架让恢复免费奉送;两个把它留成你的作业。分清谁是谁,正是一个 demo 和一个你能运维的东西之间的区别。

控制流模型

Control-flow model Four-column comparison of control-flow models: LangGraph uses a graph of nodes with conditional edges, CrewAI uses role and task declaration with Flows for events, Claude Managed Agents uses a server-side autonomous loop, OpenAI Agents SDK uses plain code with handoffs. Control-flow model LangGraph Graph of nodes + conditional edges CrewAI Role + task declaration (Crews); Flows for events Claude Managed Agents Server-side autonomous loop OpenAI Agents SDK Plain code + handoffs
从最显式到最自主:一张画出来的图、声明的角色、普通代码,以及一个托管的循环。

这四者落在一条从"画出来"到"交出去"的谱系上。LangGraph 最显式:你把控制流写成一张由节点和条件边、循环边构成的图,每条分支都可见、可测。OpenAI Agents SDK 以另一种习惯用法体现显式——控制流就是你进程里的普通代码,handoffs 是唯一那个结构化的分支。CrewAI 是声明式的:你描述角色和任务,让顺序或层级化的流程去决定排序,需要确定性的分支回环时再搬出 Flows。Claude Managed Agents 最"交出去":循环在服务器上自主运行,你通过流式发送 events 来引导它,而不是去编写它的结构。循环能否干净地终止——这正是规划与终止所关心的问题——你要么把它设计进一条 LangGraph 边里,要么通过 OpenAI SDK 的追踪去观察,要么就信任托管运行时来处理。

多智能体立场

Multi-agent stance Four-column comparison of multi-agent approaches: LangGraph supports subgraphs and supervisor patterns, CrewAI is multi-agent by construction with native crews, Claude Managed Agents uses a single autonomous harness not designed for multi-agent, OpenAI Agents SDK enables multi-agent via handoffs between agents. Multi-agent stance LangGraph Subgraphs / supervisor patterns CrewAI Native crews — multi-agent by construction Claude Managed Agents Single autonomous harness — NOT multi-agent-first OpenAI Agents SDK Handoffs between agents
三种把多智能体当一等公民的立场,加一个刻意为之的单一 harness。

四者中有三个把多智能体当作一等公民;一个刻意不这么做。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 组合出来的协调形态,以及把工作委派给专家的种种权衡。

项目来源: