上周刷到一篇文章,开头引了 X 上的一个问题:“Are we still talking loops, or did we shift to graphs yet?”(我们还在聊 Loop 吗,还是已经进入 Graph 时代了?)
说实话,我第一反应是:又来造词。但我花了一个周末,把公众号上的讨论、LangGraph 的架构文档、几篇英文技术博客,以及港大那篇 GraphAgent 论文都翻了一遍之后,结论变了:这轮讨论的含金量比我想象的高得多。它不只是“流程图画法”的争论,背后是图论、BSP 并行计算模型、状态机工程,甚至知识图谱与大模型融合的一整条技术线。
这篇文章是我的阅读笔记,尽量把技术细节讲透。
一、Loop 的死穴:它只有“下一步”,没有“全局”
早期 Agent 的逻辑就是一个循环:你给目标,模型想一步,调个工具,看结果,没完成就再来一轮。查资料、调 API、写小段代码,这么跑完全没问题。
任务一复杂就不行了。让 Agent“分析销售数据,找出影响转化率的因素,出一份报告”,至少六步:采数、清洗、探索分析、建模、写报告、质检。跑起来全是岔路:
●探索分析发现数据分布不对,是退回重洗,还是硬着头皮建模?
●建模建到一半发现关键字段缺失,重新采数,还是换个替代指标?
●报告图表格式错了,局部修,还是整份重做?
「AI产品经理之路」那篇文章里有句话说得准:Loop 关心的是“下一步模型该做什么”,Graph 关心的是“整个任务该怎么流转”。前者没有全局状态的概念,Agent 不知道自己走到任务的哪个阶段,自然谈不上主动回退、并行和跳转。
但我想补充一层:Loop 的问题不只是“不知道在哪”,还有三个工程上的硬伤。第一,状态隐式地堆在上下文里,越滚越长,成本和噪声一起涨;第二,没法并行——数据分析里“建模”和“可视化”明明可以同时进行,Loop 只能串行排队;第三,没法精确恢复,跑到第五步崩了,要么从头再来,要么靠日志人肉还原。
这三个硬伤,恰好就是 Graph 架构逐个解决的东西。不过在拆 LangGraph 之前,值得先花一分钟把图论的地基打上。
二、先补一课图论:节点、边,以及为什么“有环”这么重要
图(Graph)在数学里就两样东西:节点(Node)和边(Edge)。节点表示一个计算步骤,边表示状态怎么流转。听起来简单,但图的性质差别,直接决定了系统能力的上限。
传统的流程编排大多是有向无环图(DAG):A 到 B 到 C,一条路走到底,绝不回头。Airflow、早期的 LangChain Chain 都是这个思路。DAG 的好处是可预测、好调度,坏处是表达不了“根据结果回到上一步重试”这种逻辑——而 Agent 的核心行为恰恰是“看结果再决定下一步”,天然需要环。
LangGraph 的关键一步,就是显式支持有环图:边可以指回上游节点,形成受控的循环。这让迭代精炼、自动重试、多轮推理这些模式成了图的原生能力,而不是在 DAG 外面硬套 while。从图论角度看,Agent 系统的进化可以概括成一句话:从链(Chain),到有向无环图(DAG),再到带环、带条件路由、带共享状态的状态机图(State Graph)。表达力每上一层,能描述的系统行为就复杂一个量级。
图 1:Loop 与 Graph 架构对比——前者只会原地转圈,后者能分支、并行、回退
三、LangGraph 内核:它其实是一台 BSP 状态机
大多数人用 LangGraph,停留在 add_node、add_edge、compile 这一层。但真正决定它行为的,是底层的执行模型。我翻了几篇拆解源码的英文博客,最有意思的发现是:LangGraph 的运行时 PregelLoop,实现的是 Google 当年为图计算提出的 BSP(Bulk Synchronous Parallel,整体同步并行)模型。
3.1 State 不是变量,是 Channel
在 LangGraph 里,你定义的 State schema(通常是 TypedDict)里的每个字段,底层都是一个 channel(通道)。节点不直接改共享内存,而是向通道发布更新。通道分三种行为:
●LastValue(默认):保留最新值,适合覆盖式更新;
●BinaryOperatorAggregate:用二元操作符合并更新,比如 Annotated[list[str], operator.add] 表示“追加而不是覆盖”——这是并行安全的关键,同一超步里多个节点写同一个字段,运行时按确定性规则聚合,不会丢更新、不会有竞态;
●Topic:类似 pub/sub 的瞬时事件通道。
一个最小可用的 State 定义长这样:
from typing import TypedDict, Annotated
import operator
class AgentState(TypedDict):
messages: Annotated[list[str], operator.add] # 追加式通道:并行安全 summary: str # 默认通道:覆盖式更新 retry\_count: int注意 Annotated[list[str], operator.add] 这一行——它定义的不只是类型,而是“这个字段的更新怎么合并”。这是整个状态设计的题眼。
这个设计的前端类比很直观:Node 是处理函数,Edge 是路由规则,State 是 Redux store,reducer 决定状态怎么合并。「前端Q」那篇文章用的就是这个类比,基本准确。
3.2 PregelLoop:一个超步(superstep)的三个相位
LangGraph 的执行不是一个连续的 while 循环,而是一个个离散的“超步”。每个超步分三个相位:
Plan(规划):运行时检查各通道的版本号。如果某个节点订阅的通道在上一步被更新了,这个节点就被激活;如果上一步结束在条件边上,路由函数决定下一步激活谁。注意,调度是数据驱动的,不是写死的顺序。
Execute(执行):所有被激活的节点并行跑。这里有两个关键机制——读隔离和写缓冲。每个节点读到的是超步开始时的状态快照,哪怕并行节点 A 已经产出了更新,节点 B 看到的还是旧快照;节点的输出先写进缓冲区,不立即生效。
Update + Barrier(更新与栅栏):所有活跃节点跑完后,运行时收集缓冲的写入,应用 reducer 合并(比如 old_messages + new_A + new_B),递增通道版本号,然后把完整状态序列化进 checkpoint 存储。做完这一切,栅栏才放开,下一个超步开始。
图 2:BSP 超步的三个相位——规划调度、隔离执行、栅栏合并后落盘
3.3 Checkpoint 不是存档,是逻辑时钟
很多人把 Checkpointer 理解成“游戏存档”,这个理解浅了。从机制上看,checkpoint 存的是 channel_values(用户数据)加版本号,本质上是一个逻辑时钟:它让“回到过去某个超步、改一个输入、继续往下走”成为合法操作。
这直接撑起三个生产场景,都是业界真实用法:
●复现线上 bug。客户说“昨天导出的 JSON 少了三条”,从 checkpointer 捞出那个线程的历史,定位到导出节点跑完时的状态,发现过滤条件是时区写错了。整个排查不到十分钟。
●What-if 分支实验。“Reviewer Agent 换成便宜一档的模型,结果会差多少?”从昨天某个 checkpoint 出发,改一行模型名继续跑,不用重跑前面一小时的活。
●人工审批。状态与执行解耦,意味着你可以“冻结世界”,让人工改完状态(比如修正转账金额)再恢复执行,系统就当世界一直是一致的。
四、生产环境的五个坑,都是真金白银买的
概念讲完,说点疼的。我找到一篇业界实战文章,记录了五个把 LangGraph 推上线时真实踩过的坑,每个都值得展开。
坑一:State 设计成巨型 dict。MVP 阶段图快,所有数据塞同一层,三个月后 40 个字段,没人说清哪个节点会改哪个。正解是用嵌套 TypedDict 分区,把字段归成 pipeline_meta、coder_output、test_results 这类子对象,责任边界一目了然。
坑二:把 LLM 调用塞进条件边函数。想让 LLM 判断“该走哪条分支”,结果 edge 函数变成一次模型调用。这是灾难——路由函数应该是纯 Python、确定性、可单元测试的。LLM 的判断该放回节点内部,写成 state 字段,edge 只读那个字段。
坑三:拿 MemorySaver 上生产。教程示例几乎全用内存版 checkpointer,新人抄过来就部署,进程一重启所有线程状态全丢。有团队被产品经理报障“客户点了 approve 系统却不记得”,查了半天才发现是 checkpointer 问题。生产环境老老实实用 PostgresSaver,最好写成 lint 规则挡住 MemorySaver 进主分支。
坑四:不设递归上限,烧钱死循环。条件边写错一个条件,重试就永远停不下来。默认跑满 25 步才抛 GraphRecursionError,但 25 次顶级模型调用已经烧掉好几美元。正解是在路由函数里显式检查 retry_count,超上限强制走人工审核或 END,别指望 recursion_limit 兜底。
坑五:reducer 的隐形成本。reducer 每次节点跳转都要跑一遍。如果你的 list 已经几千个元素,operator.add 等于每次全量复制。日誌型数据用 reducer 累加是常见性能陷阱——正解是把累积数据写外部存储(Postgres、S3),state 里只放引用指针。
还有一个选型细节:TypedDict 和 Pydantic 怎么选。实测经验是先 TypedDict 起步(近乎零成本),只给“接收外部输入的节点”(比如 webhook 入口)换 Pydantic 做运行时校验。一上来全用 Pydantic,每次节点跳转多吃 5-15 毫秒,多节点图累积起来很可观。
五、三个高级模式:动态扇出、子图、人在回路
5.1 Map-Reduce:运行时才知道要并行几路
普通并行是编译时画死的。但真实任务经常是“规划阶段才知道要拆几个子任务”。LangGraph 用 Send API 解决这个问题:规划节点返回一组 Send 对象,运行时在下一个超步动态 fan-out 出 N 个 worker 并行执行,所有 worker 的结果通过 operator.add 这类 reducer 聚合到列表字段,全部完成后 fan-in 到汇总节点。写调研报告时“按章节并行起草再合并”就是这个模式。
5.2 子图:图可以嵌套图
一张编译好的子图可以作为节点挂进父图。父图暂停,子图按自己的超步推进,跑完把状态交还父图。这让复杂系统可以分形组合——每个子团队维护自己的图,对外只暴露一个节点接口,避免了“巨型单图”的维护地狱。
5.3 HITL:interrupt 是把“暂停”变成一等公民
前面说过 checkpoint 让冻结世界成为可能,interrupt 机制就是它的用户接口:节点执行到 interrupt(“Approve transfer of 1000?”) 时整个图挂起、状态落盘,等人工输入 approve 或 reject 后从挂起点精确恢复。转账、发文、删库这类高危操作前设一道这样的闸,成本几乎为零。
5.4 横向对比:和 CrewAI、AutoGen 比呢
很多人会问:多智能体框架不止 LangGraph 一个,差别在哪?几篇英文拆解给的判断挺一致。
CrewAI 走的是“角色扮演团队”的高层抽象,定义角色、目标、任务就能跑,上手最快,适合快速验证想法。但代价是粒度——你很难精确控制状态流转,想实现严格的回滚和重放基本没戏。
AutoGen 以“对话”为中心,多个 Agent 靠消息互相对话来推进任务。这个范式很符合直觉,但状态散落在各个 Agent 的对话历史里,没有一个集中的、可检查的全局状态。想做全局撤销、时间旅行调试,会发现状态根本捞不出来。
LangGraph 的选择是把状态集中化、显式化,再把执行语义(超步、栅栏、reducer)钉死。学习曲线确实更陡,但换来的是可观察、可恢复、可调试、可优化——这四点恰恰是生产环境和玩具 Demo 的分水岭。一篇综述文章里的说法我很认同:当你的工作流需要显式分支、并行路径和人工审批闸时,图状态机是目前最顺手的抽象。
图 3:多智能体 Supervisor 协作结构——调度、分工、人工审批、反馈回流
六、论文视角:GraphAgent 把“图”又往深推了一层
如果说 LangGraph 解决的是“Agent 流程怎么组织”,学术界最近在解的是另一个问题:Agent 怎么理解和利用数据里的图结构。
港大 HKUDS 实验室的 GraphAgent(arXiv:2412.17029,已被 EMNLP 2025 接收,开源在 GitHub)是这条线的代表作。它的出发点很实在:真实世界的数据同时以结构化和非结构化形式存在——既有显式的图连接(社交关系、用户行为),也有语义实体之间隐式的相互依赖(通常靠知识图谱表达)。
GraphAgent 由三个协作的 Agent 组成:
●Graph Generator Agent:从原始数据构建知识图谱,把复杂的语义依赖显式化;
●Task Planning Agent:理解多样化的用户查询,通过自主规划把查询拆解成可执行的任务序列;
●Task Execution Agent:执行规划好的任务,自动完成工具匹配和调用。
三个 Agent 无缝协作,把大语言模型和图语言模型(Graph Language Model)结合起来,同时覆盖预测类任务(如节点分类)和生成类任务(如文本生成),论文在多个数据集的两类任务上都验证了有效性。
这篇论文有几个细节值得单独说。第一,它处理的是“双重依赖”问题:显式依赖好办,图数据库里本来就存着;难的是隐式依赖——两段文本在语义上相关,但没有任何现成的边把它们连起来,Graph Generator Agent 要做的就是把这种语义相关性蒸馏成图谱结构。第二,Task Planning Agent 用的是“自主规划”而不是静态模板:同一个“帮我分析这个用户的社交关系”的查询,系统会自己决定先建图、再跑节点分类、最后生成自然语言解释,任务序列是运行时生成的。第三,它把两类模型做了分工:语言模型负责理解意图和生成文本,图语言模型负责在图结构上推理,中间的接口是任务规划层。这种“各干各的强项”的拆法,和工程侧多智能体的 Supervisor 模式在思想上是一致的。
把它放进更大的学术脉络里看更有意思:Think-on-Graph 让 LLM 在知识图谱上做“深思式”推理,GraphGPT 用图指令微调让 LLM 直接理解图结构,2025 年初还有专门的 Graph RAG 综述系统梳理“图增强检索生成”这条线。我的判断是:工程侧的 Agent Graph(流程编排)和学术侧的 Graph + LLM(知识组织)正在合流——未来的 Agent 既运行在图上,也思考着图。
当然也要说句公道话:这条线目前还在早期。GraphAgent 的实验集中在学术基准数据集上,图谱构建的质量高度依赖底层模型的能力,放到企业里真实的脏数据上表现如何,还需要更多验证。学术展示的效果和生产环境的稳定性之间,隔着的正是前面几节讲的那些工程细节。
七、放回地图:五层工程里,Graph 管的是“组织”
最后把视角拉高。「Pipeline」有篇文章借用了 X 上的一个框架,把 AI 应用拆成五层工程,这是我见过的把 Graph 的位置讲得最清楚的地图:
| 层次 | 核心问题 | 典型工程内容 |
| Prompt Engineering | 模型这一轮该怎么回答? | 角色、指令、示例、输出格式 |
| Context Engineering | 模型该知道什么? | 检索、重排、记忆、上下文裁剪 |
| Harness Engineering | 模型能做什么,如何安全地做? | 工具、权限、重试、校验、观测 |
| Loop Engineering | 工作如何自动推进,何时停止? | 触发器、状态、预算、停止条件 |
| Graph Engineering | 多个角色如何协作? | 节点、边、路由、并行、审批、共享状态 |
一句话:Prompt 管模型怎么回答,Context 管模型知道什么,Harness 管模型能干什么,Loop 管活怎么往下干,Graph 管一帮 Agent 怎么搭伙干活。五层是叠加关系,不是替代关系——单次分类任务不需要 Graph,简单内部工具也不必硬拆多 Agent。
八、巨头的 Graph,比工程图纸更大
工程之外,商业侧的“Agent Graph”是另一个量级的故事。2026 年 3 月 10 日,Meta 收购了 AI Agent 社交网络 Moltbook(一个“AI Agent 版 Reddit”),团队并入 Meta 超级智能实验室。「AI智能新动态」的解读是:Facebook 当年靠 Friend Graph 连接了几十亿人,Meta 现在想织一张连接数以亿计 AI agents 的网。等 AI 开始替人购物、预订、做决策,谁握着这张网,谁就握着未来的商业入口。OpenAI 二月挖走 OpenClaw 创始人,腾讯出了 QClaw,这条赛道已经开卷。
九、落地建议:够用就好,但底线要守住
综合所有材料,我的实践建议浓缩成几条:
先定任务和验收标准,再谈架构。单个 Agent 加工具加验证器能搞定的,别拆多 Agent。正确顺序是:Prompt → Context → Harness → Loop → 确实需要多角色协作时才上 Graph。
上了 Graph 就守住三条底线:路由函数保持纯 Python 确定性;生产环境 checkpointer 用持久化存储;重试次数在路由里显式封顶。
State 设计提前想清楚:嵌套分区、累积数据放外部存储只留指针、reducer 只给真正需要合并语义的字段。
高危操作一律过 interrupt 人工闸。
写在最后
绕了一圈,Agent 这几年其实就干了一件事:一层层往外补。Prompt 补回答质量,Context 补信息,Harness 补安全执行,Loop 补持续推进,Graph 补稳定运行与协作。
LangGraph 把 2010 年 Google 为图计算发明的 BSP 模型搬进 Agent 运行时这件事,让我挺感慨的:Agent 架构的下一站,答案可能就藏在分布式系统和图计算十几年前的论文里。新技术的问题,往往是老技术的答案。
至于那张连接亿万 Agent 的网最后织成什么样,老实说,我也很好奇。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~