LangGraph 1.2 生产实战:能熬过崩溃的有状态 Agent 编排(2026 完整指南)
LangGraph 是长跑、有状态 AI agent 的底层编排框架。GitHub 32.6k stars,v1.2.1。真实部署指南覆盖图设计、持久化执行、human-in-loop 检查点、LangSmith 调试、以及 LangGraph 何时胜过 CrewAI / AutoGen / 纯 LangChain。
- ⭐ 32600
- Python
- TypeScript
- PostgreSQL
- Redis
- MIT
- 更新于 2026-05-21
你写过简单 LLM agent,看过它进程重启就忘光、一个 tool call 超时就丢半进度、两个事件并发就静默搞坏状态 —— 那你撞到的就是 LangGraph 要打穿的墙。
LangGraph 是 LangChain 团队出的 有状态、长跑 agent 的底层编排框架。LangChain 给你组件(“这是 LLM 包装,这是工具,自己组合”),CrewAI 给你高层角色抽象(“这是 ‘researcher’ agent,这是 ‘writer’ agent”),LangGraph 居中:基于图的状态机,你显式建模 node(函数 / agent)、edge(转移)、持久化的 state 对象。持久化执行 + human-in-loop + 状态追踪是一等公民,不是事后补的。
到 2026 年中,它有 32.6k GitHub stars,发布了 v1.2.1,是专门为"要熬过崩溃 / 重启 / 多小时长跑"的生产 agent 工作流而出现的最热门框架。
1. LangGraph 究竟是什么(不是什么) #
是:基于图的 agent 运行时,你定义 node(Python/TS 函数,常含 LLM 调用)、edge(确定性或 LLM 决定的转移)、state 对象贯穿整个工作流持久化。
不是:
- LangChain 的替代品(它是 LangChain 的补充;很多 LangGraph node 包 LangChain 组件)
- 无代码工具(developer-first,Python 或 TypeScript)
- “用自然语言描述 agent” 的高层工具 —— 那是 CrewAI 的地盘
心智模型:“agent 工作流 = 显式状态机,不是隐式对话”。你画图,LangGraph 跑它。
2. 为什么"有状态"重要(LangGraph 修的 bug) #
3 个杀死生产 agent 的失败模式,没有合适的状态管理就掉坑:
- 工作流跑一半崩溃 → agent 从零重启,重做 30 分钟工作,丢用户能看到的所有进度
- 并发 tool 调用 → 状态修改交织不可预测,agent 进入无效状态
- 多小时工作流 → 进程被云厂商空闲超时杀掉,没恢复点
LangGraph 的 Checkpointer(用 Postgres / Redis / 内存做后端)在每个 node 执行后快照状态。崩了?从最近 checkpoint 重启。要注入人类反馈?在 checkpoint 暂停,改 state,继续。要 debug?任意 checkpoint 确定性重放。
这是让你说"早该用 LangGraph"的那个 bug —— 通常在你自建方案搞了 3 周之后。
3. 快装(5 分钟) #
pip install -U langgraph langchain langchain-openai
# 或带 Postgres checkpointer:
pip install -U langgraph langgraph-checkpoint-postgres
最小有状态 agent —— 数到 5,状态 checkpointed,进程重启不丢:
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver
class State(TypedDict):
counter: int
def increment(state: State) -> State:
return {"counter": state["counter"] + 1}
def should_continue(state: State) -> str:
return "increment" if state["counter"] < 5 else END
graph = StateGraph(State)
graph.add_node("increment", increment)
graph.add_edge(START, "increment")
graph.add_conditional_edges("increment", should_continue)
app = graph.compile(checkpointer=MemorySaver())
# 用 thread_id 跑,状态持久化
config = {"configurable": {"thread_id": "demo-1"}}
result = app.invoke({"counter": 0}, config=config)
print(result) # {'counter': 5}
把 MemorySaver() 换成 PostgresSaver(connection_string),同一个图就能熬过容器重启。
4. 4 个你真会用的杀手特性 #
持久化执行(Checkpointer) #
每个 node return 值快照。进程死了?从 thread_id 和 checkpoint_id 继续。光这一点就值得任何跑 > 5 分钟的 agent 采用 LangGraph。
Human-in-the-Loop(interrupt) #
把 node 标记为可中断。工作流暂停、把 state 暴露给 UI、等人类输入、继续。是构建"AI 提议变更,人审批"工作流的唯一靠谱方式。
from langgraph.types import interrupt
def approval_gate(state):
user_decision = interrupt({"proposed_action": state["plan"]})
return {"approved": user_decision}
记忆层(add_messages) #
内置短期(thread 内)和长期(跨 thread)记忆。对话 state 用 add_messages reducer,跨 thread 语义回忆插 mem0 通过 AgentMemory MCP。
LangSmith 集成 #
每个 node 执行、每次状态转移、每次 LLM 调用都进 LangSmith trace 视图。可视化 debug “为什么 agent 走了那个分支” —— 复杂图无价。
5. 生产部署模式 #
多数团队最终定下来的 4 组件模式:
┌──────────────────────────┐
│ 你的 app / FastAPI │
│ (LangGraph SDK 或 REST)│
└─────────┬────────────────┘
│
▼
┌──────────────────────────┐
│ LangGraph Server │
│ (langgraph dev / deploy)│
└─────────┬────────────────┘
│ checkpoint 写
▼
┌──────────────────────────┐
│ PostgreSQL │ ← 状态持久化
└──────────────────────────┘
│ trace 流
▼
┌──────────────────────────┐
│ LangSmith(或自托管) │ ← 可观测性
└──────────────────────────┘
标准生产部署:容器化 LangGraph app,指向托管 Postgres 做 checkpoint,配 LangSmith 拿 trace。无状态档用 DigitalOcean App Platform 即可;正经负载抓个 HTStack 香港 VPS (8 GB 起)+ DO 托管 Postgres 拿低延迟状态写。
6. LangGraph vs LangChain vs CrewAI vs AutoGen(什么时候挑哪个) #
| 需求 | 挑 |
|---|---|
| 有状态、长跑、必须熬过重启的 agent | LangGraph |
| 快速 LLM-powered app(chatbot / RAG / 简单 agent) | LangChain 单用 |
| 角色化多 agent 团队(“researcher” + “writer” + “critic”) | CrewAI |
| 对话式群聊 agent,辩论/决策工作流 | AutoGen(注意:Microsoft 已把 AutoGen 转维护模式;新项目评估 Microsoft Agent Framework) |
| 最大控制力 + LangChain 生态 | LangGraph(两全其美) |
2026 生产团队的诚实总结:LangGraph 在持久化和控制力上赢,CrewAI 在 demo-to-first 速度上赢,AutoGen 在多 agent 对话上赢(但在转型)。任何要熬过 deploy 或崩溃的,LangGraph 是默认。
7. 真实用例(LangGraph 闪光的地方) #
客服自动化:多轮工单暂停等人工升级,跨天保持上下文,客户回复时无缝继续。
编程 agent(长跑):跨几十个文件重构代码库的 agent,每个文件后 checkpoint,崩了不丢 4 小时工作。配 自托管 AI 编程工作流 拿全 stack。
研究 / 报告生成:多步研究工作流(搜→提取→综合→写),每阶段产出持久化产物。失败从最后好的 checkpoint 继续。
带人审批的工作流自动化:AI 规划动作,系统在 interrupt 暂停,向用户展示计划,批准后才继续。
多租户 agent 产品:每个客户拿 thread_id,状态完全隔离,可以重放任何客户的 session 做 debug。
8. 坑(第 3 天会撞到的) #
- 设计过多细粒度 node —— 每个 node = 一次 checkpoint 写。50 node 图跑得慢。合并相关操作进单 node
- 忘 reducer —— 没 reducer 的状态更新是替换不是合并。新用户 bug 来源 #1
- 写操作跳过
interrupt—— 做不可逆操作(发邮件 / 扣款)的 agent 没人审批 checkpoint,早晚出事 - 第 1 天不用 LangSmith —— 用 print 调 20 node 图是 misery。出事之前接好 LangSmith
- 把 LangGraph state 当免费数据库 —— state 保持精简。大对象引用 ID,blob 存 S3 / Postgres
9. 迁移:LangChain Agent → LangGraph #
你有跑通的 LangChain AgentExecutor 或 create_react_agent 管线,迁 LangGraph 是机械的:
- 定义 state TypedDict(镜像你目前在步骤间传的东西)
- 把每个 LangChain tool/step 包装成 LangGraph node
- 加
Checkpointer(先MemorySaver,后期换 Postgres) - 加 edge 建模之前在 LangChain 代码里隐式的控制流
回报:持久化执行 + human-in-loop + 重放调试,你的 LangChain 组件多数不用动。
10. 什么时候不要用 LangGraph #
- 无状态单轮 LLM 调用 —— 杀鸡用牛刀,直接 LLM SDK
- 简单 RAG(检索 → 回答) —— LangChain
RetrievalQAchain 一行搞定 - 纯对话 chatbot —— LangChain + 消息存储更简单
- 团队零 Python 经验 —— CrewAI 的角色抽象更平易近人
TL;DR #
LangGraph = 基于图的有状态 agent 运行时,针对要熬过崩溃、支持人审 checkpoint、跑数小时的生产负载。32.6k stars,v1.2.1,MIT。和 LangChain 天然搭配(你大概率已经在用)。比 CrewAI 多控制力,比 LangChain 单用多持久化,比 AutoGen 在非多 agent 对话外都强。
开一个 DigitalOcean droplet 配 Postgres,跑第 3 节的例子,你就明白为啥跑真生产 agent 的团队最后都汇到这里。
想看 LangGraph 在更大语境?看我们的 AI Agent 工具链合集(即将上线),讲它怎么和 MCP server / AgentMemory / 代码执行沙箱配合。
💬 留言讨论