当你的AI应用需要回头:LangGraph如何重新定义Agent的状态管理
当你的 AI 应用需要”回头”:LangGraph 如何重新定义 Agent 的状态管理
一个客服 Agent 查到订单信息后,发现用户三周前有过一次投诉。它需要把这个上下文带回当前对话,继续处理。这个”回到上一步”的能力,LangChain 给不了你,LangGraph 可以。
LangGraph 是什么?它是 LangChain 团队在 2024 年推出的图结构 Agent 框架,GitHub 41,289 颗星。核心区别一句话:LangChain 里的流程是 A→B→C 的线性链条,LangGraph 允许 A→B→A 的循环,把状态管理做成一等公民。
它解决什么问题
大多数 LLM 应用本质上是”直道”——用户问,AI 答,结束。但现实里的 Agent 任务往往不是一条直道:
一个研究 Agent 搜索信息,评估是否充分,不充分就再搜索一次;一个代码审查 Agent 发现问题后需要等人工确认,确认通过再继续;一个多 Agent 协调系统里,Supervisor 需要把任务分发、等待结果、根据结果再次分发。这些场景的共同特征是:流程不是单向的,状态需要跨步骤保持,中途可能需要人介入。
LangGraph 为这些问题提供了结构化解法。它的三大核心能力:
状态持久化与断点续跑。通过检查点器(Checkpointer),图执行到任意节点时可以暂停,状态被序列化存储,后续可以从断点恢复。这对长流程和需要人工审批的工作流至关重要。
条件分支与动态路由。每个节点执行完后可以根据当前状态决定下一个节点是谁——这个能力叫 conditional edges,是 Agent 具备”判断力”的技术基础。
多 Agent 协调。Supervisor 模式(中心化调度)、Peer-to-Peer 模式(平等协作)、Handoff 模式(顺序接力)三种多 Agent 架构在 LangGraph 里都有标准实现路径。
真实使用门槛
不要被”41k 星”吓到,以为这是一个上手即用的产品。它的门槛是真实的:
你需要懂 LangChain 的基础概念。LangGraph 依赖 langchain-core 的模型抽象、工具绑定和消息格式。如果完全不懂 LangChain,直接上 LangGraph 会走很多弯路。官方建议:先用 LangChain 搭几个简单 Pipeline,理解 LCEL 的链式抽象,再迁移到 LangGraph。
状态schema设计有学习成本。状态用 TypedDict 定义,大多数场景用这个;需要运行时验证或复杂嵌套结构时才用 Pydantic。Reducer(状态合并规则)的选择也需要经验:add_messages 用于聊天消息,operator.add 用于追加列表,LastValue(不写 reducer)用于保留最新值,选错会导致状态合并不符合预期。
生产级部署需要配套基础设施。开发测试用 InMemorySaver 即可,进程重启后状态丢失;单实例部署用 SqliteSaver;生产环境建议 PostgresSaver,支持多副本并发。检查点数据会快速积累,需要设计 retention 策略。
适合谁,不适合谁
适合用 LangGraph 的场景:
多步研究 Agent——需要循环搜索→评估→再搜索的流程,LangGraph 的图结构天然适配。
需要人工介入的审批流——节点之间可以 interrupt() 暂停,等待人工确认后再继续,PostgresSaver 保证状态不丢失。
多 Agent 协作系统——Supervisor 调度多个专业 Agent,LangGraph 有成熟的节点路由模式。
长期记忆需求——跨会话保持上下文,不只是本轮对话内的消息历史。
不适合 LangGraph 的场景:
单次 LLM 调用或简单 RAG 流程——直接调 API 或用 LCEL,复杂度更低,维护更简单。
没有 LangChain 经验的团队——强行上手会放大调试难度,建议先有 LangChain 实战经验。
对延迟敏感的超高频调用场景——图结构的状态管理和检查点有额外开销,极致低延迟场景下需要评估是否值得。
与 LangChain 的关系:不是替代,是分工
这里有个常见误解:LangGraph 出来了,LangChain 是不是过时了?完全不是。LangChain 团队 2025 年发布的 v1.0 已经把所有高阶 Agent 抽象迁移到基于 LangGraph 实现,两者是底层与编排层的关系。
一个典型的生产架构:LangGraph 负责整体流程编排(控制流、分支、状态持久化),LangChain 的 LCEL 负责线性处理段落(如 RAG 检索+生成的直道部分)。这不是二选一,而是各用其长。
可执行的下一步
如果你确定 LangGraph 适合你的场景,入门路径是:
第一步,在本地跑通 LangGraph 官方文档里的 research agent 示例——一个会循环搜索直到找到满意答案的 Agent,这是最直观的状态管理演示。
第二步,设计你的状态 schema。先从 TypedDict 开始,只加你需要追踪的字段,不要过度设计。
第三步,根据你的部署规模选择 Checkpointer:PostgresSaver 是生产级起点,别在 InMemorySaver 上做开发环境的长期投入。
GitHub 仓库:https://github.com/langchain-ai/langgraph
官方文档:https://langgraph.com.cn/
架构决策参考(Skill):https://lobehub.com/zh/skills/existential-birds-beagle-langgraph-architecture
Benchmark 数据:https://github.com/agenticallysh/agent-framework-benchmarks
评论区
登录后可评论。