循环与图:从辨析到只审批最后一步
@Sumanth_077 先讲清 loop vs graph 的关系,@Mahaximus_ 给三位一体入门,@hanakoxbt 给"只审批最后一步"的实战方法论。
开篇:loop 和 graph 到底是什么关系
2026 年 7 月,OpenClaw 作者 Peter Steinberger 在 X 上发问:"Are we still talking loops or did we shift to graphs yet?"(我们还在谈循环,还是已经转向图了?)AI 研究者 Hamel Husain 接梗写了《Loop Engineering Is Dead. Enter Graph Engineering》,48 小时内冒出一堆图工程课程、路线图、工具栈。
@Sumanth_077 出来把这场争论讲清楚,核心论断只有一句:
循环不是图的对立面,循环是图里面的一个节点。不是"毕业"关系,而是"单人做全流程 vs 团队分工"的关系。
什么时候上 graph?三条:工作可并行分轨;不同 agent 需要不同上下文 / 记忆 / 权限;需要显式可审计的控制流。作者还泼了一盆冷水——"换皮"质疑:LangGraph 2024 年 1 月就发布了,AutoGen、ADK 紧随其后;loop 坏了,换上 graph 也修不好;prompt→context→harness→loop→graph 这条命名链,多半是同一份工作从不同距离的描述。
实践建议(@Sumanth_077):从一个 loop 开始,推到它崩溃,让崩溃点告诉你下一个该拆出哪个节点。loop 最清晰的实例是 Linear 的 Loops(bug 分诊、文档更新的定时自主工作流);作者还维护了一个可运行的实操仓库 Hands-On-AI-Engineering(含 loops、graphs 实现)。
loop 是"一个人从头干到尾,还自己检查";graph 是"一条流水线,每个人只干一段"。争论"循环已死"就像争论"工人已死"——工人没死,他只是住进了工厂的一个工位。
三位一体:Agent、Loop、Graph
以下来自 @Mahaximus_ 的三位一体入门(本系列最完整的入门总纲):
关于 graph 的 fake edge test(五分钟自查法)和 diamond 模式,本课第 09 课《图工程实战手册》有完整实战版,这里只记结论:把每步画成框、箭头连起来,逐条问"下一步真的读了上一步的输出吗"——没有数据流动就删箭头、并行跑;diamond = fan out 并行 → 纯代码 reduce → 独立 verifier 试图证伪 → 最后 synthesize,且"做事的 agent 绝不检查自己的活,checker 必须用全新上下文"。
何时建循环:四个条件与三份 prompt
值得建 loop 的四个条件(@Mahaximus_,缺一则成本大于收益):会定期重跑、可自动评分、无需中途人工介入、终点线是事实不是感觉。
成本真相:loop 跑 10 次不是 10 次 prompt 的成本,而是 10 次越来越长的 prompt;关键指标是 keep rate(产出被采纳率),低于 50% 不如自己动手。
- research agent:每条 claim 必须有 source,矛盾要 flag;
- data analysis agent:砍掉 obvious 的发现,结尾给一句话行动建议;
- code agent:先陈述理解再写代码,修 bug 先一句话解释原因再修。
长任务遗忘目标、换会话归零、中断后无法续跑——解法都是让 Agent 自己写内存:checkpoint / compress / resume 三段 prompt 模板。
一条 prompt 搭出自检循环:GOAL + 可量化 CRITERIA + DRAFT / SCORE / GAPS / CALL,每轮修最弱项,8 分以下不许停。
Loop 实战:check 是全部
以下来自 @hanakoxbt 的实战方法论("把人从盯梢中解放、只审批最后一步"):
Loop 的本质四件套:produce、check、correct、repeat until green。check 是全部——没有能在你不在场时让工作失败的东西,你就没有 loop,只有一个 scheduler(定时器)。
先写检查条件,而且要写成程序可判定的:
Loop 的天花板:loop 只能让一个工作单元变好,不能决定有哪些单元、什么顺序、哪些本可并行——这是 graph 的活。
check 就像工厂的质检机:没有质检机的流水线,只是"定时把东西往前推"的传送带。质检机必须能在你睡觉时自动喊停、自动打回,否则你还是得站在旁边盯着。
Graph 实战:四种节点与两条回边
Graph 的四种节点(@hanakoxbt):
- splitter(分流器):拆分维度决定一切——按 blast radius(爆炸半径)切,而非按文件夹切;
- worker:独立上下文,避免"四个审计员写同一份报告";
- code node:合并 / 去重 / 排序是确定性代码,不走模型;
- gate(闸门):见下一节。
Loop 住在节点里,graph 住在节点之间。"and then" 不是边——对 pipeline 的每条箭头做测试:下一步真读上一步输出吗?说不出跨越的变量名就没有边。
两条回边(本课最独有的理论):
几乎人人都只建了第一条——修好了这一次,下一次还犯。
回退的是单元,不是批次:UNIT / VERDICT / REASON / EVIDENCE / SCOPE 四要素;SCOPE 防止"修一片顺手改四文件";一个单元最多修 3 次,3 次不过说明 plan 有问题。
闸门与人的位置:只审批最后一步
闸门按 blast radius 开,而非按 confidence 开——这是 @hanakoxbt 最反直觉的主张:
- 可逆且收敛:先开;
- 可逆但面广:确定性检查 + 干净轨迹;
- 难逆(迁移、删库、动钱):这条 lane 永不开——不是阈值设高,而是永远不自动过。
证据读取顺序:确定性结果 > 本次轨迹 > 该节点历史回滚率 > 模型自评(最后)。
人只放在一个点:后果最大、不可逆性最高的那一步(如 approve merge),不做中间步骤 review——人在 graph 中间会成为最慢的节点。这就是"只审批最后一步"的完整含义。
闸门像机场安检分级:随身小包走自助通道(可逆先开),托运行李过 X 光机(面广加检查),而运钞车那条道永远不对外开放。你(人)只站在最关键的那道门后,不用每道门都站岗。
作者有完整课程 agent-layers.vercel.app(五层、20 课、模板 + 配置 + 搭建顺序),可作为本课的后续进阶。
术语翻卡:点卡片看解释
自测一下:点问题展开参考答案
循环不是图的对立面,而是图里面的一个节点。不是"毕业"关系,而是单人做全流程 vs 团队分工的关系。loop 坏了,换上 graph 也修不好;实践建议是从一个 loop 开始,推到它崩溃,让崩溃点告诉你拆哪个节点。
会定期重跑、可自动评分、无需中途人工介入、终点线是事实不是感觉。缺一则成本大于收益。另记成本真相:loop 跑 10 次是 10 次越来越长的 prompt,keep rate 低于 50% 不如自己动手。
没有能在你不在场时让工作失败的东西,你就没有 loop,只有一个 scheduler。GREEN 必须是程序可判定的:测试套件 exit 0、断言带源码行、diff 只碰计划内文件;"看起来不错""模型说自信""没报错"都是 NOT A CHECK——没报错不等于正确。
correction edge(短):gate 驳回单单元修复当前 run;learning edge(长):把 accepted 结果提炼成约束送回 splitter,修复以后所有 run。只建短边,修好了这一次,下一次还犯同样的错。
闸门按 blast radius(爆炸半径)开,而非按 confidence:可逆且收敛先开,可逆但面广加确定性检查,难逆(迁移、删库、动钱)的 lane 永不开。人只放在后果最大、不可逆性最高的那一步(如 approve merge),不做中间 review——人在 graph 中间会成为最慢节点。