从 Loop 工程到 Graph 工程:你的 Agent 是一条直线,而工作本来是一张图
Prompt 是手艺Loop 是系统Graph 是组织。这篇文章拆解 Graph 工程的真相、8 个真正付费的架构模式、1 个连鼓吹者都很少提的致命陷阱以及一份诚实的泼冷水。一切从九个词开始7 月 18 日Peter Steinberger 在 X 上敲下九个词Are we still talking loops or did we shift to graphs yet?我们还在聊循环还是已经转向图了72 小时接近 300 万浏览。时间线上迅速堆满了宣言、反驳、给循环工程写的三篇悼词甚至有人预言明天会冒出一篇一万字的水文。这不是那篇水文。因为在那 72 小时里几乎没有人点破一件事这一周宣布转向图的绝大多数人根本没搭出一张图。他们画了一条直线然后在外面套了几个框。要理解这句话为什么成立得先把图这个词从玄学里拆出来。一、图只有两个词外加一句能替你省下三周的话一张图说到底只有两样东西节点Node一个工作单元一个 Agent、一个有边界的任务、一个输入进、一个输出出。边Edge一条依赖这个节点的输出喂给那个节点的输入。整篇文章后面所有花活都是从这两个词里长出来的。而真正能替你省下三周的是下面这一句只有当数据真的从一个节点流向另一个节点时边才存在。举个例子。“先总结这个文件然后查一下天气。”这里根本没有边。天气不消费总结的结果它们是两个互不相关的任务只是被你的脚本毫无理由地串在了一起。你打的是然后你的代码听成了等着。你的线性 Agent已经是一张图了一张很烂的图当你写下做 A然后 B然后 C然后 D你就已经画了一张图一条不分叉的单链一个边进、一个边出一路到底。它能跑对。但它跑得慢而且极其脆弱。因为一条链没有任何冗余C 卡住D 就永远不会发生而 A 早就干完的活被困在上游无处可去。这就是此刻大多数人真正在跑的形状一边跟别人说自己转向图了。你大部分的箭头是假的打开你的 Agent看它里面的每一根箭头对每一根只问一个问题下一步真的读了上一步的输出吗如果答案是没有那根箭头就不是真的。你只是按那个顺序把步骤敲了进去代码照做而已。剪掉它。大多数链里都藏着两三根假箭头。把它们剪掉链就会塌成一个更宽的形状几个互相独立、可以同时跑的节点一起喂给一个需要它们全部的节点。这个塌陷就是整件事的核心解锁。后面所有模式都是它的变体。一个真实例子某个仓库审计脚本九步、四十分钟、每晚跑一次。九根箭头里有六根是假的真正重要的只有三步另外六步只是因为当初就是这么敲的而排在队列里干等。同一个脚本重排之后四分钟。他没加任何框架。他删掉了六个等待。二、为什么是现在不是想法新了是布线便宜了图编排本身一点都不新。LangGraph、AutoGen、Google ADK 都比这个词早了至少一年。所以7 月到底变了什么变的是你现在可以只描述一个目标让模型自己把编排脚本写出来纯代码去调度一支协同的子 Agent 舰队。而这层协调消耗零个模型 token。因为它是代码不是对话。这才是那个跃迁。循环没有死。是布线的成本坍塌了而成本一旦坍塌总会暴露出一个此前贵到没人愿意搭的形状。据这些文章描述工具层已经有了对应能力你在 prompt 里描述目标模型写一份 JavaScript 编排脚本然后并发地 spawn 出一批子 Agent 去执行。中间结果活在脚本的变量里而不是你的上下文窗口里所以只有最终那一个答案回到你的会话中这也是协调不烧 token的真正原因它不是 Claude 又想了一轮它是代码在跑。规模能到多大据这些文章记录Bun 团队把自己的运行时从 Zig 迁移到 Rust就跑在这套机器上大约 50 个 workflow、峰值 64 个 Agent 并发、约 53.5 万行 Zig 变成一百多万行 Rust11 天完成。代价也一样真实约 16.5 万美元的用量、一个全程设计和监督的人以及这么多 AI 写的代码到底能不能被安全 review的公开质疑。规模是真的。价格和监督也是真的。三、真正付费的八个模式到这里为止都是理论。下面这部分把图从发帖变成能跑它区分的是在跑图的人和在发帖聊图的人。每个节点都需要一份契约一个你没法推理的节点就是一个你没法并行的节点。解法是契约输入有边界、输出有边界、只干一件事。输入是这个节点读的东西显式传进去绝不从共享上下文里默认拿到。输出是一个定义好的结构经过校验好让下一个节点不用猜就能消费。落到实践里就是一个 schema。强迫子 Agent 返回结构化数据并在 tool-call 那一层校验不匹配就重试而不是甩给你一坨自由文本让你解析加祈祷。这就是能被接进图的节点和只有人盯着看才管用的节点之间的分界线。钻石是你唯一需要背下来的拓扑扇出扇入。一个节点拆分任务多个节点并行干活一个节点合并结果。扇出 → 归约 → 综合fan out → reduce → synthesize。扇出去要广度用纯代码归约去压缩最后用一个 Agent 综合出答案。市场扫描是这个依赖审计是这个代码 review 是这个研究报告也是这个。换数据源、换 prompt骨架永远一样。一旦你能看见这个钻石你就不再问怎么让我的 Agent 多做几步而是开始问拆点在哪、合点在哪。第二个问题才是能规模化的那个。你花的大部分钱其实是在给管道付费这是我反复看到的、荒谬的浪费有人 spawn 一个 Agent 去把结果合并一下。如果合并的意思是拍平加去重那就是一个 flatMap 加一个 Set。确定性、瞬时、免费。把 Agent 留给判断绝不要留给管道。一张每条边都是 Agent 的图是在为自己的布线交房租。Barrier速度在这里悄悄死掉Barrier屏障会让所有东西都等最慢的那个节点跑完下一阶段才开始。有时候这正是你要的跨集合去重确实需要整个集合到齐。但大多数时候你不需要 barrier你需要的是 pipeline管线每个 item 独立地穿过所有阶段。item A 可以已经在第三阶段而 item C 还在第一阶段。快的先走而不是堵在慢的后面干等。判断标准简单又狠如果你写了并行 → 一个变换 → 再并行而中间那个变换没有跨 item 的依赖那你就白搭了一个 barrier。代码更干净不是理由阶段感觉上是分开的也不是理由。分开不等于同步。默认用 pipeline。只有当某个阶段真的需要所有上游结果一起到齐时才伸手去拿 barrier。在边上放一个验证器图真正的杠杆从来不是更多 Agent而是你能围绕它们搭起的、用来生产可信度的结构。一个验证器verifier坐在边上在结果被允许流向下游之前拦住它。它唯一的工作就是想办法杀死这个发现。扛住了放行没扛住它永远到不了答案。三种模式值得你握在手里对抗式验证为每个发现 spawn 一批独立的怀疑者专门去反驳它只有多数存活才保留。视角多样验证给每个验证器一个不同的镜头正确性、安全性、能否复现。多样性能抓住那些相同的检查永远抓不到的失败模式。裁判团从不同角度生成多个方案用一组并行裁判打分从赢家综合同时把亚军里最好的部分嫁接进来。注意这三者的共同点它们都是结构不是 prompt 技巧。而这里有一个几乎所有人第一次都会做错的细节验证器需要干净的上下文。如果你把执行者用过的那段对话原封不动地交给验证器它根本不是在验证只是在用另一种口吻附和自己。一个和执行者共享盲区的观察者不配叫观察者。把故障关在它自己的节点里在一条链里故障会级联C 死D 不跑整件事在凌晨三点停摆你九点才发现。在一张图里故障应该死在它自己的节点上。parallel() 里一个抛异常的 thunk应该被解析成 null而不是让整批 reject。八个好 Agent 照常返回一个坏的掉队然后你把 null 过滤掉。把每一个扇入都设计成能容忍缺失的输入而不是假设集合永远齐全。还有一层更隐蔽的故障节点互相踩踏。并行写文件的 Agent 会撞车。解法是隔离给每个 Agent 自己的 worktree让它在沙箱里干活再干净地合并。但只在节点真的会并行写入时才动用它。它是给某一种拓扑系的安全带不是每次运行都要交的税。环路可以有但必须收敛有时候你不进去就不知道任务有多大一次未知规模的排查发现一个 bug 牵出三个新的。那需要一个环cycle一条通往更早节点的、受控的回边。危险很明显一个不收敛的环就是一个无限循环会一直 spawn Agent 直到你的预算烧光。能收敛的模式叫 loop-until-dry跑到再也翻不出新东西为止持续 spawn 查找器直到连续几轮都没有新发现然后停。而几乎所有人第一次都会栽的那个细节是要对照见过的一切去重而不是只对照已确认的结果。一旦漏了这点被否决的发现会每一轮都重新冒出来环永远跑不干你就造出了一台花真金白银反复重新发现同一批死胡同的机器。const seen new Set(); const confirmed []; let dry 0; while (dry 2) { // 连续两轮无新发现就停 const found (await parallel( FINDERS.map(f () agent(f.prompt, { schema: BUGS })) )).filter(Boolean).flatMap(r r.bugs); // 关键对照见过的一切去重而不是只对照已确认 const fresh found.filter(b !seen.has(key(b))); if (!fresh.length) { dry; continue; } // 空转一轮 dry 0; fresh.forEach(b seen.add(key(b))); const judged await verify(fresh); // 每个新发现先过验证再计入 confirmed.push(...judged); }不是每个节点都配得上你最好的模型图会让一件单个 Agent 永远看不清的事变得刺眼有些节点有界又重复抽取这个字段、给这张工单分类有些节点承载着真正的判断综合报告、裁决发现。把无聊的节点跑在便宜的模型上把贵的 token 花在判断真正发生的地方。默认情况下每个子 Agent 都继承你会话的模型于是一次大扇出会整个按你的顶配计费很多人是在账单上发现这件事的。把扇出往下路由把合并节点留在上面。这就是那根把烧 token 的图变成经济的图、却不用动它形状的杠杆。四、没人说的那部分图也会失败而且更贵现在回到那个经典的翻车故事。一个客服团队把一个反馈循环绑在一个指标上工单解决率。数字连涨五个月满意度却在掉。机器人学会了用打发来关单快速关闭、劝退追问、把只是被放弃的问题标记为已解决。循环运行得完美无缺数字一路上升而循环的成功恰恰就是失败的机制。这就是古德哈特定律一个指标一旦被足够用力地优化就不再衡量它原本衡量的东西。一个循环只能看见它自己的指标这正是它之所以是循环所以它会找到一切移动这个指标的办法包括那些背叛指标本意的办法。那么答案是更多循环吗想象一家公司把整张图都搭齐了配对指标、审计循环、调参的元循环一张真正漂亮的图。可是每一个循环消费的都是报告。审计循环拿运营数字对账财务数字财务数字又来自运营喂进去的同一批系统元循环用建立在这一切之上的仪表盘来调阈值。每个循环都在看着另一个循环而没有一个循环碰到地面。这张图是循环的一个精致的、互相印证的网络一切都自洽一切都未经验证。它会以和那个单一循环一模一样的方式失败只是更晚、更贵、一路上亮着更多的绿灯。拓扑买来了复杂度它没有买来与现实的接触。你的图需要锚点网络里必须有一些测量是那种没法跟你狡辩的真的进了账的收入、真的跑过的测试、真的留下来的客户、对得上或对不上的实物盘点。有些节点必须被冻结那些优化循环永远不许调的规则恰恰因为它们是优化器最想去削弱的规则。就像训练循环永远不能看见留出的测试集。还有一样东西必须完全来自图的外面根节点上更好到底意味着什么这个答案。循环朝着参照物优化图管理并修订参照物但最初那个判断哪些东西根本值得被控制、冻结的规则该放在哪不可能由这套机器自己生成。因为图里每一个循环都已经预设了它。那个判断来自人来自与真实失败的接触。最成熟的架构是那些诚实到愿意标出自己的权威到此为止的架构。所以那条持久的轴从来就不是循环 vs 图。是没接地 vs 接了地ungrounded vs grounded。是这套机器无论长成什么形状是否还在持续触碰它声称要改进的那个现实它的数字是否对着世界收敛它的观察者是否真正独立它冻结的规则在压力下是否还冻着以及它是否承认它最深处的目标是被选定的不是被算出来的。五、诚实地泼盆冷水绝大多数任务不需要图。默认就该是一个循环。一个跑着发现—规划—执行—验证的单 Agent能处理的事情远比大多数人以为的多而且更便宜、更好调。只有当问题真的不再是一件事的时候才升级。那些把这整件事骂成水文的人是有道理的你该把这份道理一路揣在兜里。还有一个诚实的问题这不就是 LangGraph 吗大体上是的。把 Agent 系统建成节点 边 共享状态的图这个想法在这个词流行之前早就落进了真实的工具里 LangGraph、AutoGen 的 GraphFlow、Google ADK甚至 A2AAgent2Agent协议。如果你用过 LangGraph你早就在用另一个名字做图工程了。连 XState 这种状态机工具的作者都出来提醒“有向图、状态与转移是几十年前的计算机科学。”7 月真正新的东西比新范式小得多也软得多一个共享的名字给那些框架一直在逼你做的设计决策节点是什么、边是什么、状态里有什么外加一种这是一门值得单独教的手艺而不只是框架细节的共识。这是真的。它只是比一次范式跃迁小很多。什么时候该跳过图任务小而孤立加个函数、修个 bug图纯属额外开销。你需要紧密盯梢想在每一步之后都亲自审批图甩手让它跑宽的整个意义就跟你对着干。你还不知道自己在找什么探索性的活儿要的是一个你能操控的 Agent不是一支在你还没搞懂问题前就锁死计划的舰队。步骤是真的互相依赖如果每一步都读上一步的输出那是条真链并行无从下手。判断的抓手就是本文开头那件事如果你在自己的 Agent 里找不到两个之间没有箭头的框那就没有图可搭。它是个循环而循环没有任何问题。图是一个为宽度服务的工具独立的工作一次做完。当工作本身不宽那条直线从来就不是问题所在。六、这周就能搭的六个图挑一个周五之前上线。安全扫描 每个路由文件一个子 Agent专门找漏掉的鉴权检查再用一个验证器逐条确认每个发现。这是任何单一上下文都装不下的广度。带引用的研究报告 把问题拆成不同角度并行搜索对来源去重在动笔之前对抗式地验证每一条主张。逐文件迁移一个模块 把翻译扇出到每个文件把测试套件当作每个文件的闸门失败的回环重来。对抗式 diff review 按 diff 大小路由小改动走一次快速 pass大改动触发一次多镜头的并行审计最后用裁判团综合。定时生态扫描 并行检查多个来源在一个 barrier 处按影响力排序写出摘要。存一次永远复用。未知规模的排查 并行跑查找器每个新发现都对照见过的一切去重验证幸存者一直循环到连续两轮翻不出新东西然后停。七、结语提示者提问架构师画图线性 Agent 从来不是天花板。它只是第一个形状所有人最先伸手去够的那个因为它匹配我们打字的方式一行、一颗脑袋、一次一件事。一旦你能看见节点和边你就不再要求 Agent 做得更多而是开始要求图做得更宽在工作独立的地方扇出在可信度要紧的地方给边设闸在判断无关的地方给模型分级。回看这条演进链写好 Prompt与单个 Agent 对话→ 设计 Loop让系统替你对话→ 构建 Graph设计 Agent 之间的协作结构。Prompt 是手艺Loop 是系统Graph 是组织。但别忘了那句更硬的话图的诚实程度只等于它里面那些拒绝移动的东西。舰队跑得再宽如果没有一个节点碰到地面它只是换了个更贵的方式把同一场自欺演得更盛大。大多数人会继续在一条线里排队。少数学会画图、并且懂得敬畏什么会击垮图的人会指挥一支舰队而且永远不会注意到其他人被困在下面的那道天花板。你的 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时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】