← 返回学习中心 · Agent 工程OiOi Academy
AGENT 理论 · 10

循环与图:从辨析到只审批最后一步

@Sumanth_077 先讲清 loop vs graph 的关系,@Mahaximus_ 给三位一体入门,@hanakoxbt 给"只审批最后一步"的实战方法论。

来源 @Sumanth_077 / @Mahaximus_ / @hanakoxbt 发布 2026-08 视频 原文内嵌视频 1 个
⚖

开篇: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 出来把这场争论讲清楚,核心论断只有一句:

记住:A loop is not the opposite of a graph. A loop is one node in a graph.
循环不是图的对立面,循环是图里面的一个节点。不是"毕业"关系,而是"单人做全流程 vs 团队分工"的关系。

什么时候上 graph?三条:工作可并行分轨;不同 agent 需要不同上下文 / 记忆 / 权限;需要显式可审计的控制流。作者还泼了一盆冷水——"换皮"质疑:LangGraph 2024 年 1 月就发布了,AutoGen、ADK 紧随其后;loop 坏了,换上 graph 也修不好;prompt→context→harness→loop→graph 这条命名链,多半是同一份工作从不同距离的描述。

原文配图:@Sumanth_077 的 loop vs graph 辨析题图
原文配图:@Sumanth_077 的 loop vs graph 辨析题图
原文视频:loop 与 graph 的关系演示

实践建议(@Sumanth_077):从一个 loop 开始,推到它崩溃,让崩溃点告诉你下一个该拆出哪个节点。loop 最清晰的实例是 Linear 的 Loops(bug 分诊、文档更新的定时自主工作流);作者还维护了一个可运行的实操仓库 Hands-On-AI-Engineering(含 loops、graphs 实现)。

高中生类比
loop 是"一个人从头干到尾,还自己检查";graph 是"一条流水线,每个人只干一段"。争论"循环已死"就像争论"工人已死"——工人没死,他只是住进了工厂的一个工位。
🧩

三位一体:Agent、Loop、Graph

以下来自 @Mahaximus_ 的三位一体入门(本系列最完整的入门总纲):

Agent目标而非指令。三要素:可自主调用的工具(搜索 / 文件 / 代码 / API)、跨任务记忆、运行到任务完成才停的循环。 Loop五步:PLAN → EXECUTE → CHECK → ITERATE → STOP。三个决定成败的点:真实的验证(可能失败的测试 / 阈值 / 严格 rubric)、迭代时找最弱环节修、停止条件(完成或硬性上限,如 8 次后停并报告)。 Graphnode = 一个工作单元(一个 agent、一个任务、明确输入输出);edge = 真实依赖(后者确实需要前者的产出)。
原文配图:@Mahaximus_ 的三位一体题图
原文配图:@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 的三板斧永远是:真实的验证、修最弱环节、硬性停止条件。
✅

Loop 实战:check 是全部

以下来自 @hanakoxbt 的实战方法论("把人从盯梢中解放、只审批最后一步"):

Loop 的本质四件套:produce、check、correct、repeat until green。check 是全部——没有能在你不在场时让工作失败的东西,你就没有 loop,只有一个 scheduler(定时器)。

先写检查条件,而且要写成程序可判定的:

GREEN(真检查)测试套件 exit 0;每个断言带源码行;diff 只碰计划内文件。 NOT A CHECK(假检查)"看起来不错";模型说自信;没报错——"没报错"不等于正确。
原文配图:@hanakoxbt 的 loop 四件套图解
原文配图:@hanakoxbt 的 loop 四件套图解

Loop 的天花板:loop 只能让一个工作单元变好,不能决定有哪些单元、什么顺序、哪些本可并行——这是 graph 的活。

高中生类比
check 就像工厂的质检机:没有质检机的流水线,只是"定时把东西往前推"的传送带。质检机必须能在你睡觉时自动喊停、自动打回,否则你还是得站在旁边盯着。
🕸

Graph 实战:四种节点与两条回边

Graph 的四种节点(@hanakoxbt):

  • splitter(分流器):拆分维度决定一切——按 blast radius(爆炸半径)切,而非按文件夹切;
  • worker:独立上下文,避免"四个审计员写同一份报告";
  • code node:合并 / 去重 / 排序是确定性代码,不走模型;
  • gate(闸门):见下一节。

Loop 住在节点里,graph 住在节点之间。"and then" 不是边——对 pipeline 的每条箭头做测试:下一步真读上一步输出吗?说不出跨越的变量名就没有边。

两条回边(本课最独有的理论):

correction edge(短回边)gate 驳回 → 单个单元修复当前 run。 learning edge(长回边)把 accepted 的结果提炼成约束,送回 splitter,修复以后所有 run。

几乎人人都只建了第一条——修好了这一次,下一次还犯。

回退的是单元,不是批次:UNIT / VERDICT / REASON / EVIDENCE / SCOPE 四要素;SCOPE 防止"修一片顺手改四文件";一个单元最多修 3 次,3 次不过说明 plan 有问题。

记住:correction 修这一次,learning 修每一次。只建短回边的人,是在给未来挖坑。
🚦

闸门与人的位置:只审批最后一步

闸门按 blast radius 开,而非按 confidence 开——这是 @hanakoxbt 最反直觉的主张:

  • 可逆且收敛:先开;
  • 可逆但面广:确定性检查 + 干净轨迹;
  • 难逆(迁移、删库、动钱):这条 lane 永不开——不是阈值设高,而是永远不自动过。

证据读取顺序:确定性结果 > 本次轨迹 > 该节点历史回滚率 > 模型自评(最后)。

人只放在一个点:后果最大、不可逆性最高的那一步(如 approve merge),不做中间步骤 review——人在 graph 中间会成为最慢的节点。这就是"只审批最后一步"的完整含义。

原文配图:@hanakoxbt 的闸门与审批图解
原文配图:@hanakoxbt 的闸门与审批图解
高中生类比
闸门像机场安检分级:随身小包走自助通道(可逆先开),托运行李过 X 光机(面广加检查),而运钞车那条道永远不对外开放。你(人)只站在最关键的那道门后,不用每道门都站岗。
记住:人在中间 = 最慢节点。把人放在后果最大的那一步,其他交给闸门。

作者有完整课程 agent-layers.vercel.app(五层、20 课、模板 + 配置 + 搭建顺序),可作为本课的后续进阶。

词

术语翻卡:点卡片看解释

循环 loop
loop
计划→行动→验证的自主循环:produce、check、correct、repeat until green。
图 graph
graph
把多个 loop 连起来的网:节点是工作单元,边是真实依赖。loop 是图里的一个节点。
检查条件 check
check
能在你不在场时让工作失败的东西。必须是程序可判定的,check 是 loop 的全部。
分流器 splitter
splitter
把工作拆分的节点。拆分维度按 blast radius 切,而非按文件夹切。
闸门 gate
gate
按 blast radius 开的检查点:可逆先开,难逆(删库、动钱)的 lane 永不开。
双回边
correction / learning edge
短回边修当前 run(驳回单单元重修);长回边把经验提炼成约束送回 splitter,修以后所有 run。
爆炸半径 blast radius
blast radius
一个动作搞砸时的波及范围。开闸门、切分任务都按它,而非按"有多自信"。
测

自测一下:点问题展开参考答案

循环不是图的对立面,而是图里面的一个节点。不是"毕业"关系,而是单人做全流程 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 中间会成为最慢节点。