一句话主线:循环、拓扑、骨架回答的问题不同——节点里怎么转、谁跟谁交接、边何时合法;混成一层谈 ReAct / Swarm,失败模式也对不上。
把一句糊需求丢进裸 ReAct。它调工具、写中间结果、再润色同一段,直到 max_steps 用完。该交的产物没有。回放是一串 Thought / Action / Observation,对不上「现在盘里有什么、哪一步合法」。
这通常不是「论文技巧不够新」。三件事缠在一起了:模型在节点里怎么想下一步、多个角色怎么交接产物、整张图有没有合法终点与状态字段。工具协议与沙箱见 Agent 协议分层。本文只把这三层拆开。
三层各自管什么
拆开,是因为失败落点不同。循环选错,钱烧在空转上;拓扑选错,产物在交接处丢或被多人同时改;骨架缺席,回放对不上状态,也说不清「什么叫做完」。
- 循环(ReAct、Plan、Critic…)
- 管:这一步里,观察要不要改下一步、要不要打回、何时停。
- 探索(下一步依赖上一眼)和定稿生成(步骤已钉死)若共用同一套循环,步数会耗在「再润色一句」上。
- 拓扑(Router、Pipeline、Orchestrator…)
- 管:产物和权限怎么交——谁只转发、谁只执行、缺字段能不能退回。
- 循环只描述一个节点内部;多角色时,失败常出在交接(站间传闲聊、中心去调业务工具、死线不能回退)。循环选对,拓扑错了,仍会整条重跑。
- 骨架(阶段、合法转移、状态字段)
- 管:节点叫什么、边何时合法、状态里留哪些字段。循环嵌进节点,拓扑嵌进边。
- 没有终点边和字段约定,循环不知道「交得出什么算完」,拓扑也不知道「这一站产出交给谁」。开篇那种对不上盘的回放,就是骨架缺席。
设计顺序跟依赖一致:先定骨架(阶段与合法边),再给边选拓扑,再给节点选循环。先堆论文名,容易把整张系统当成一个大 ReAct。没有骨架的循环,不是「少画了一张图」,而是停条件和产物契约无处安放——观察越积越长,账单在涨,却说不清现在交得出什么。
循环:节点内部怎么转
选循环时,先问一件事:这一步的下一步,是否真依赖上一眼观察?
ReAct
宿主只认 Thought → 调工具 → 写回 Observation → 再想。
停条件写在宿主:max_steps、连续两轮无新工具、同一 (tool, args) 回 repeated_call、预算到顶交部分结果。Observation 要截断。工具 5xx 也写成观察,别让异常直接撕掉图。
下一步真依赖上一眼时,ReAct 合适。步骤已经钉死还继续 ReAct,步数几乎必然耗在空转上——开篇那种失败,多半落在这里。
Plan-and-Execute
先产出带 done_when 的步骤表,执行器按表走。
观察默认不改计划;步失败或前提被打脸才重规划,次数封顶。执行器不跳步。步骤还在变就硬上,会写出假计划——规划成本付了,执行仍像在猜。
ReWOO
旁路,不是「更好的 ReAct」。规划器先写带占位符的工具计划;互不依赖的调用可一批发出;Solver 只凭证据合成。规划阶段不跟每条 Observation 交织。
Xu et al., 2023 在 HotpotQA 上报告约 5× token 效率、准确率约 +4%(相对文中 ReAct 基线;只在该论文设定下成立)。依赖已知、工具相对稳时,它省轮次;一条工具结果会推翻整份计划时,假计划的代价更大。
Critic-Actor
Actor 只生成;Critic 只按表打回,不改稿。
能自动判的(schema、字数、禁词、键)宿主先跑。主观维落到具体路径,带可再跑的 verify。轮数封顶,到顶整份交给人。同一段 prompt 里「先写再自己骂」,容易自我开脱,直接 pass=true。
其它循环(按需)
- Reflection:终态之后才写教训,下一轮才注入。条目要有
tried / result / next;改这一份走 Critic,改下一次策略才走它。成功默认不写。
- ToT / LATS:扩、估、剪、回溯。估价要可比较;k=3、深 3 已经贵。估价不可比较时,树搜索烧 token,人最后仍要并列候选里投一票——这时 ToT 不是主路径。
- Imagination / 结构化入口:指令不可执行时,先收成目标、约束、交付物、可自动判的 success。宿主校验不过就打回;后面的循环只认这个对象,不认用户原话。
拓扑:谁跟谁说话
选拓扑时,先问:产物是广播、串行交接,还是中心裁断? 权限能不能越级?
Router
入口只输出枚举 (target, payload),自己不干活。payload 带已有产物指针。
Router 一旦调业务工具,拓扑和循环就糊成一团——入口既在选路,又在执行,排障时分不清是路由错了还是循环空转。
Pipeline
站间只传产物。缺字段退回,带 missing[]。
人还没锁方向就进下一站,后面每站都在补洞。死线没有合法回边:方向在第二站才清楚时,只能整条重跑。骨架上若不允许回退,Pipeline 的刚性会变成整图刚性。
Orchestrator-Worker
中心拆任务、收摘要、裁断、取消;Worker 只和中心说话。中心不调业务工具。一层够用就停。
中心去调业务工具,等于把循环塞进拓扑层:裁断者和执行者身份重合,取消与重试的边界也糊掉。
其它拓扑(按需)
- Hierarchical:多一层只为摘要和授权。没有另一时间尺度或权限边界,拆掉。
- Blackboard / Swarm:黑板要有类型、写权限、冲突规则、收敛条件。Swarm 对等发消息,结束靠投票、超时、或无人再发言。当整张骨架时,多人容易同时改同一字段;短时并行可放进某个节点的时间盒,不宜替代骨架。
- Debate:双方持立场;没参赛的裁决者只看带引用的表。命题要可证伪;口味题硬辩,表上落不下证据。