

AI应用风向标(公众号:ZhidxcomAI)
作者|毕伟豪
编辑|漠影
新瓶装旧酒?
智东西8月12日报道,最近,Agent圈又出现了一个新词:Graph Engineering。
但如果熟悉Agent,会发现这个“新词”并不陌生,Graph Engineering强调的核心概念,早已出现在LangChain团队2024年推出的LangGraph中。
那么,为什么Graph Engineering会在今天重新受到关注?
过去一年,Agent的能力边界不断扩大,社区开始讨论Loop Engineering:如何设计循环、管理状态、控制退出条件,让一个模型能够围绕目标持续执行。
但当任务愈发复杂,需要多个Agent协同完成时,新的问题出现了:如何组织这些不同的执行单元?
这正是Graph再次被需要的地方,它是一套用于描述复杂执行流程的方法,探索任务并行、节点验证、结果汇总、路径路由等任务执行的过程。
前段时间,海外博主Codez发布长文,试图总结一套从Loop演化为Graph的方法,截至发稿,这篇文章已有600多万阅读量。

智东西重新整理了这篇文章的核心内容,从任务拆分、节点设计、验证机制等方面,拆解Graph Engineering的核心方法。
一、什么时候该用Graph:四个信号,判断Loop是否已经到边界
过去几年,Agent圈不断出现新的工程术语:Prompt Engineering、Context Engineering、Loop Engineering、Graph Engineering。
它们看起来像一条升级路线,但更准确的理解是,这些不是替代关系,而是在解决不同层级的问题:Prompt处理单次调用,Context对应模型看到什么,Loop负责Agent持续执行,Graph则是让多个执行单元协同。
事实上,一个Loop本身就是最简单的Graph:节点(Node)与边(Edge)的组合,形象一些的话,就像流程图一样,节点就是一个工作步骤,是流程图中的那个方块,里面可以是某个任务,一个工具或者是Agent,而边则是连接节点的那条线,代表的是步骤之间的关系,走到哪、怎么走都由边来决定。
Graph组织Loop,而不是取代Loop,用不用Graph,要看Loop是否到达能力边界。
Graph Engineering最容易被误解的地方,是把它看成“增加更多Agent”,但Graph解决的是当一个任务包含多个执行单元时,如何安排它们之间的关系
从Codez的教程来看,是否值得引入Graph,可以观察这四个信号:
第一个信号:任务是否有可拆分的宽度。
Graph最适合处理一批彼此独立的工作。比如同时查询多个信源、审查多个文件、验证多个方案。这类任务如果串行执行,大量时间消耗在等待上;通过Graph,可以把这些节点同时展开。
反过来,如果任务本身是一条强依赖链,上一步决定下一步,那就没有必要强行拆分,这种情况下Graph增加的不是效率,是协调成本。
第二个信号:流程里是否存在“假边”。
被人为排成了顺序,并没有真正的数据依赖。比如“总结这份文件,然后查询天气”。总结结果并不会影响天气查询,这两个步骤之间其实不存在边。
Graph工程的第一步,就是找到这些无效连接,能删除的假边越多,就越说明原来的Loop还有并行空间。
第三个信号:单个Agent的上下文是否已经成为限制。
多Agent的目的,是让每个节点能够处理自己真正需要的信息。如果一个Agent能够装下全部背景,并完成任务,继续拆分任务只会增加成本。但当任务需要同时处理大量资料、多个角色视角时,把上下文拆开分配给不同节点,Graph才有意义。
第四个信号:任务是否需要额外的可靠性保障。
简单任务通常只需要生成结果,但代码迁移、研究分析、风险审查等场景,需要有人检查结果是否可靠。
Graph的优势在于,可以把验证器作为独立节点加入流程:一个节点负责生成,一个节点负责质疑,让系统从“一次生成”变成“生成+验证”的组合。
不过,所有判断最终都回到一条底线:先把一个Loop跑稳,再考虑Graph。
二、一眼看穿假边:Agent工作流为什么一半步骤在空等
第一件事,是分清两样东西:节点是一个工作单元,是一个Agent、一份边界明确的活、一个输入、一个输出。边则是一种依赖关系,这个节点的输出喂给那个节点做输入。

人们最容易犯的错是把“然后”当成边。“总结这个文件,然后告诉我天气”,这两步之间没有边,天气根本用不到那份总结,这是两个互不相干的任务节点被一段线性脚本硬凑成先后顺序。
是不是边的判断标准只有一个:下一步真的读上一步的输出吗?不读,就没有边。

很多工作流里,都藏着几条“假边”:看起来有先后关系,实际上后一步根本用不到前一步的结果。
删掉这些连接后,原本排队执行的流程就会展开成并行结构:几个独立任务同时运行,再把结果汇总给下一步。线性流程不是不能跑,但它把所有任务压在一条链上,效率低,也更容易被单点卡住:中间一个节点停住,后面的任务全都要等。

Graph Engineering做的,是重新梳理任务之间真正的依赖关系,让能同时完成的事情不要排队。
三、给节点定契约:schema让Agent输出可被连接
想让多个节点进行协作,第一步是先给每个节点定清楚边界:它接收什么输入,负责什么任务,输出什么结果。
下游节点需要什么信息,必须由上游明确传递,而不是指望Agent从一大段共享上下文里自己寻找。在workflow中,这份约束通常通过schema实现:给agent()定义JSON schema后,subagent返回的结果必须符合指定结构,格式错误时可以自动修正,而不是丢回来一段需要人工解析的自由文本。

这也是“能接进Graph的节点”和“只能给人看的回答”之间的区别。
边同样需要契约,它代表“A会给B提供什么数据”。如果边按照数据结构进行定义,节点就可以在不破坏整体流程的情况下实现替换和调整。

还有一个容易被忽略的点:不是所有步骤都需要Agent。压平、去重、过滤这类确定性操作,本质上只是数据转换,直接用代码完成即可。很多人花token让模型做这些工作,其实只是把一条本该免费的边,变成了一次昂贵的推理。
四、菱形与路由:先拆开跑,再决定往哪走
把节点和边组合起来,最常见的一种结构就是“菱形”:一个节点负责拆任务,多个节点并行执行,再由一个节点汇总结果。它的标准流程可以概括为:派发——归约——合成。

派发阶段,用parallel()同时启动多个subagent,比如让不同Agent分别检索不同信源,最后统一返回结果。

这里有两个关键点:parallel()本质上是一道屏障,会等待所有任务完成后再进入下一步;如果某个节点失败,它不会拖垮整个批次,而是返回空结果,后续通过.filter(Boolean)过滤即可。
汇入阶段,不一定需要Agent。像去重、排序、压平这类确定性操作,用普通代码处理更快、更便宜;真正需要判断的部分,再交给模型完成。

理解这个结构,就不会再纠结如何让Agent多执行几步,而会开始思考:哪些任务应该拆开,哪些结果必须合并。
但Graph不一定总是固定路径。有些任务下一步走向,取决于中间节点产生了什么结果,这时就需要路由。
例如,先让Agent判断一个工单类型,再决定交给哪个处理节点;或者根据代码diff的风险等级,选择快速评审还是完整审计。在workflow中,路由本质上就是一个if或switch:模型负责提供判断,代码负责执行选择。

这种设计把两件事分开了:节点保留Agent的灵活判断能力,边保留程序的确定性控制能力。不会因为一次模型判断,就让整个流程随机偏离预设路径。
五、验证器与隔离:失败必须困在节点里
Graph的价值,不是把更多Agent塞进流程,而是在多个执行单元之间建立确定性。
验证器节点就是其中关键的一环,它只负责质疑答案:在结果进入下一阶段之前,主动寻找错误。经过验证的结果才能继续向下流转,否则就会被拦截。
常见有三种验证方式:
对抗式验证:针对一个问题派出多个独立验证者,多数通过才保留;
多视角验证:不同验证器分别关注正确性、安全性、可复现性等维度,避免同一种检查遗漏题;
评委式验证:生成多个方案,再由多个评审打分,选出最佳结果。

这也是为什么复杂任务里,增加Agent数量并不等于增加可靠性,是否有节点负责质疑和筛选结果非常重要。
但验证只能解决“结果是否可靠”,不能解决“运行过程中如何不互相影响”。在线性Loop中,一个节点失败可能拖垮整条链路;Graph的目标,则是让失败尽量停留在局部。比如某个任务失败,可以只返回空结果,其他节点继续完成,最后在汇入阶段处理缺失信息。

另一类风险来自并行写入,多个Agent同时修改文件,可能会互相覆盖。解决方法是隔离,例如使用git worktree,让每个Agent在独立环境中工作,完成后再合并结果。
不过,隔离不是Graph的默认机制,只在真正存在并发冲突时才开启。
六、循环、模型分层与拓扑:三个控制成本的旋钮
Graph并不是一次性执行完的流程。对于探索型任务,例如漏洞排查、代码审计等,新的发现可能不断产生新的任务,这时需要通过循环边让流程继续探索。
但循环必须有明确的退出条件。否则,一个没有收敛标准的Graph,本质上只是在不断消耗token。

实际设计时,需要设置停止规则,例如连续几轮没有发现新的有效结果就结束;同时去重需要覆盖所有历史发现,而不是只记录最终确认的结果,否则同样的问题会被反复探索。
除了循环,Graph的效率还取决于两个设计选择。第一个是模型分层。不同节点承担的任务不同,并不需要全部调用最强模型。字段提取、分类等规则明确的重复任务,可以交给成本更低的模型;报告合成、结果裁决等需要复杂判断的节点,再使用更强模型。通过单独配置模型,Graph的结构无需改变,也能降低整体成本。

第二个是拓扑选择。不同的连接方式,会直接影响任务延迟。并行执行会等待一批任务全部完成后再进入下一阶段;流水线则允许不同任务独立推进,让完成较快的任务提前进入下一环节。

并不是所有阶段都需要“对齐再出发”。只有后续步骤需要同时看到全部结果时,才值得设置同步等待;对于可以独立推进的任务,让它们继续流转通常更高效。
结语、Graph不是新概念,是Agent工程化的延伸
从工程实现看,Graph并不是突然出现的新方向。
2024年前,LangChain团队推出的LangGraph,就已经将节点、边和共享状态作为Agent编排的核心框架。如今Claude Code等工具重新强调Graph,并不是因为诞生了一套全新的架构,而是随着Agent从单任务执行走向多任务协作,开发者再次需要一种组织复杂执行流程的方法。
变化在于,过去构建Graph需要开发者手动设计节点、状态和流程,如今Claude Code等工具正在降低这一门槛。
但Graph并不是所有Agent的终点。Codez在教程中反复强调克制:只有真正存在独立任务时才需要拆分,只有需要汇总时才设置同步等待,只有存在并行冲突时才引入隔离机制。
从Prompt Engineering到Graph Engineering,Agent的发展过程,是在上一层能力之上继续向工程化深入。
对于简单任务,一个稳定的Loop依然足够;但当任务开始需要多个Agent并行、验证和协作时,Graph就成为下一阶段必须掌握的工程方法了。
“特别声明:以上作品内容(包括在内的视频、图片或音频)为凤凰网旗下自媒体平台“大风号”用户上传并发布,本平台仅提供信息存储空间服务。
Notice: The content above (including the videos, pictures and audios if any) is uploaded and posted by the user of Dafeng Hao, which is a social media platform and merely provides information storage space services.”