过程知识住在哪里?——Agent 编排的第四把交椅:编译进 8B 权重

既有的 Agent 工程决策地图有六个决策点,但都没回答一个问题:一条业务流程该住在哪里?代码里(LangGraph/CrewAI,29 万 star)、前沿模型的 system prompt 里(Anthropic Building Effective Agents 推荐)、外部技能库里(Voyager 风格)——都是把 procedure 摆在模型外面。arXiv 2605.22502 补上第四把椅子:用 Claude Sonnet 4.5 遍历流程图生成 3000–6000 条合成对话,对 Qwen3-8B 做全量微调(LoRA 明确失败),把流程编译进权重变成 subterranean agent。三个实测领域:旅游预订 14 节点、Zoom 支持 14 节点、保险理赔 55 节点 6 决策枢纽。结果:单次会话比 in-context 便宜 128–462×,比 LangGraph 便宜 77–249×;质量达 in-context 前沿的 87–98%;保险和旅游任务失败率反而比 LangGraph orchestrator 更低(9% vs 17%、5.5% vs 24%);重新编译 30–50 分钟就是一次 CI/CD。这篇把它接进 Agent 决策地图的第七个位置,解释为什么 8B 能打赢 Claude 4.5 + LangGraph,以及这条路为什么不是在反苦涩教训,反而是苦涩教训吃掉 orchestrator。

我在《Agent 时代的工程学:六个决策点》里列过一张地图,六个决策点覆盖了控制流、行动接口、上下文、单体/多体、评测、能力提升。但那张表有一个位置空着没填:一条业务流程本身,该住在哪里?代码里、system prompt 里、技能库里,还是别的什么地方?2026 年 5 月澳大利亚墨尔本大学 Dennis 团队的《Compiling Agentic Workflows into LLM Weights》(arXiv 2605.22502)补上第四把椅子——把流程编译进 8B 小模型的权重里——并给出一组让 LangGraph 阵营需要认真回应的数字。这篇把这把椅子摆进决策地图,顺便解释为什么它不是对苦涩教训的反叛。

先摆前三把椅子:过程知识已经有过三个家

在这篇论文之前,Agent 工程师默认过程知识只有三个可能的落脚点。

椅子一:代码里的外部 orchestrator。 LangGraph、CrewAI、Google ADK、OpenAI Agents SDK、Semantic Kernel、Strands、LlamaIndex 全都属于这一派,合计 29 万 GitHub star。做法是:在 LLM 上方架一个 orchestrator,每一轮由代码决定「现在应该跳到哪个节点、注入哪段 prompt、解析什么输出」。LangGraph 单库就有约 3 万 star,占了这派的第一梯队。

椅子二:前沿模型的 system prompt(in-context orchestration)。 Anthropic 在《Building Effective Agents》里给出的反直觉建议——「很多场景根本不需要 agent 框架」——本质上就是这条路:把整张流程图序列化成文本,塞进 Claude/GPT 的 system prompt,让前沿模型自己 self-orchestrate。Dennis 团队自己去年的一篇文章(Dennis et al., 2026a)已经证明:对纯 procedural 任务,这条路在质量上碾压 orchestrator(4.53 vs 4.17 五分制评分)。但代价是三条硬约束:每一次会话都得用前沿模型、上下文窗口被 procedure 占掉一大截、专有流程被泄露给第三方 API 提供商。

椅子三:外部技能库(skills / procedural memory)。 Voyager(arXiv 2305.16291)开创的思路——把学会的行为沉淀成可检索、可组合的可执行代码技能,Claude Skills / Agent Skills 是今天的产品形态(我在《Skills 与 MCP 研究前沿》追过这条线)。这条路和椅子一有点像,都是「procedure 存在模型外面」,区别只是存储介质从代码变成了可检索的知识片段。

三把椅子的共同点是:procedure 永远在推理时被外部送进模型——不管送进来的是 orchestrator 的 prompt 片段,还是完整的 system prompt,还是从技能库检索出来的知识条目,模型自己不知道流程长什么样。

第四把椅子:编译进权重的 Subterranean Agent

Dennis 团队的第四把椅子叫 subterranean agent——地表下的 agent。名字来自一张图:外部 orchestrator 是「地表编排」(用户←orchestrator←LLM),subterranean 版本把 orchestrator 藏到训练管线里去(用户直接对 LLM 讲话,orchestrator 只在训练时露面)。

编译管线四步:

  1. 把 procedure 定义成有向图 F = (N, E, n₀, T):N 是节点(每个节点有 agent/user 角色和 prompt 模板),E 是带条件的边,n₀ 是起点,T 是终止节点(成功/放弃/升级)。
  2. 合成对话生成:用 Claude Sonnet 4.5 沿流程图采样路径,按节点模板 turn-by-turn 生成上下文相关的合成对话。每个节点看到的是「当前节点模板 + 完整对话历史」——保证生成质量足够高。
  3. 全量微调(不是 LoRA):论文明确点出「Dennis et al. 2026b 系统研究了 LoRA rank 16–128,在 procedural 任务上都够不着全量微调」。原因是过程内化要求修改模型的隐式状态跟踪行为,比风格调整更深。用 AdamW 8-bit(3B)或 DeepSpeed ZeRO-3(8B),lr 2×10⁻⁵ cosine decay。
  4. 无 orchestration 部署:推理时只给一句最小 system prompt(“You are a helpful travel booking assistant”),没有流程指令、没有节点状态、没有路由逻辑——一切都在权重里。

跑通这个管线的门槛低到让人意外:3B 版本在一张 RTX 5090 上 3.5 小时训完,8B 版本在 8×A100 上 10 分钟一个 epoch。这个门槛,是这条路值得写进决策地图的第一个理由。

三个障碍被数字化拆掉

论文的贡献不在管线(SimpleTOD、FireAct、SynTOD、WorkflowLLM、Agent Lumos 早就跑通了同类技术),而在于把三个「大家默认过不去」的障碍逐个测出数字

障碍一:质量真的够吗?

三个实测领域,参数量差 ~70 倍:

领域SubterraneanLangGraph OrchIn-Context 前沿
旅游预订 14 节点(3B)4.11 / 4.75 / 4.34 / 4.07 / 4.124.17 / 4.21 / 4.32 / 4.62 / 4.844.53 / 4.64 / 4.96 / 4.96 / 5.00
Zoom 支持 14 节点(8B)4.50 / 4.26 / 4.42 / 4.62 / 4.874.62 / 4.75 / 4.55 / 4.52 / 4.644.92 / 4.92 / 5.00 / 5.00 / 5.00
保险理赔 55 节点 6 枢纽(8B)4.47 / 4.40 / 4.51 / 4.81 / 4.924.42 / 4.45 / 4.39 / 4.38 / 4.584.78 / 4.78 / 4.82 / 4.96 / 5.00

(五个分数依次是:任务成功、信息准确、一致性、优雅处理、自然度;n=200,Claude Sonnet 4.5 作 judge,1–5 分制。)

看两个数字:8B 编译版在 Zoom 和保险两个领域,5 项指标里有 3 项打过或打平 Claude Sonnet 4.5 + LangGraph 的组合——参数量差 70 倍还能反超。跟纯 in-context 前沿的差距集中在信息准确度上(87%),这是「模型知识广度」瓶颈,不是「跟不跟得住流程」瓶颈——扩到更大基座就能补齐。

障碍二:算上自建成本,真的更便宜吗?

单次会话成本表:

领域In-ContextLG OrchSubterranean相对 In-Context 便宜
旅游 14 节点$0.133$0.077$0.0010128×
Zoom 14 节点$0.103$0.054$0.0003296×
保险 55 节点$0.327$0.174$0.0007462×

(API 侧按 Claude Sonnet 4.5 3/Minput3/M input、15/M output;自建按 Qwen3-8B 跑 A100 80GB 预留价 $2.50/hr + vLLM 批量推理。)

便宜的两倍来源:~65× 每 token 便宜(自建 vs API)+ 2–7× token 总量减少(compiled 模型的 prompt 是常数大小,in-context 每轮都要重放整张 procedure,procedure 越复杂 in-context 越吃亏)。462× 里,procedure 复杂度贡献了后半段。

一次性编译成本:数据生成 ~40+微调 40 + 微调 ~10–40,合计 5080。相对incontext盈亏平衡点在500次会话之内;跑到10000次会话时,编译成本摊到每次不到50–80。相对 in-context 的**盈亏平衡点在 500 次会话之内**;跑到 10000 次会话时,编译成本摊到每次不到 0.01。这个盈亏平衡数字是这条路能不能立起来的关键:只要一个流程一年跑得动 500 次,就够本。

障碍三:流程改了要不要重训,代价多大?

答案:30–50 分钟一次完整重编译(数据生成 15–30 分钟 + 8×H200 微调 10–15 分钟 + 抽检 5 分钟)。这不是「重训一个大模型」那种以周为单位的工程事件,是 CI/CD 里的一次构建。每天跑一次都不会成为瓶颈。

反直觉的那一击:为什么 8B 打得过 Claude 4.5 + LangGraph?

这才是全篇最扎人的部分。Dennis 团队在 §4.4 里点出 orchestration 有三条结构性代价,subterranean 版本不是「用容量赢」,是用架构规避这三条

代价一:碎片化推理。 LangGraph 每个节点只看当前节点上下文,模型没有机会对整条流程做整体推理。Subterranean 版本的权重里已经把整张图内化了,每一句回答都是在整条 procedure 的语境下生成的。

代价二:routing 是新增的失败模式。 决策枢纽处,LangGraph 用一个 LLM 分类器选下一条边——这是 orchestrated 架构独有的失败模式,非 orchestrated 架构根本不存在这个环节。数字非常直接:

领域Subterranean 失败率LangGraph 失败率
旅游5.5%24.0%
Zoom11.0%9.0%
保险 55 节点9.0%17.0%

(失败=judge 给 task success ≤ 3。)旅游任务 24% 的失败率里,主要成分就是决策枢纽处 routing 走错——subterranean 版本「按构造消灭了这类错误」。

代价三:模板注入压制自然度。 LangGraph 每个节点的 prompt 模板会把「一次问多个问题」硬塞给模型;subterranean 版本从合成数据里学到「每轮问一个问题」的 interview 风格(64% 的轮次恰好一个问题)。因此在自然度指标上,8B 编译版能反超 Claude 4.5 + LangGraph(Zoom: 4.87 vs 4.64;保险: 4.92 vs 4.58,均 p < 0.001)。

这三条加起来的含义很硬:LangGraph 不只是”额外的运行时开销”,它在结构上限制了主模型的能力上限。你用 Claude 4.5 跑 LangGraph,得到的不是 Claude 4.5 的完整能力,是被 orchestration 结构性削弱后的 Claude 4.5。

决策传导链:这个决策会传到哪里?

把「procedure 住在哪里」当决策点,往下看它传导到哪些产品决定:

成本上限: 决定了单次会话价格能压到几分钱还是几毛钱——差两个数量级。SaaS 类产品毛利率的地板。

上下文窗口预算: 在 in-context 路线下,procedure 越大就越挤压对话历史;在 subterranean 路线下,procedure 常数大小占位,对话历史可以吃满窗口。procedure 一旦超过 100 节点,in-context 路线的窗口崩溃就快到了。

保密性边界: in-context 路线下,专有 procedure 每次会话都要发给第三方 API;subterranean 路线下 procedure 只在训练时接触外部 API,运行时完全本地权重。企业合规、金融、医疗类客户会直接把这一条作为门槛。

更新节奏: 外部 orchestrator 改流程 = 改代码 = 分钟级;subterranean 改流程 = 重编译 30–50 分钟 = 小时级。这个差距在日更尺度上不是障碍,在分钟级 hotfix 尺度上是。

调试链路: 外部 orchestrator 里流程走到哪一步、为什么走错,看代码日志就能定位;subterranean 里流程完全在权重中,调试要靠 eval 集回归——这条要用评测门禁那套办法接住,才不至于失控。

失败模式转换: routing 错误(orchestrator 独有)消失,但幻觉、越权、编造字段(LLM 通病)依然在——甚至可能因为「模型自己 self-orchestrate」而更难约束。你换的是一组失败模式,不是消除失败。

收敛度:还没收敛,但技术障碍已经被数字化拆掉

按我在决策地图里定的判据——「有论文把原理讲清楚 + 有不止一家生产系统落成默认组件」——这个决策点只完成了前半段

  • 论文侧:SimpleTOD (2020)、FireAct (2023)、SynTOD (2024)、WorkflowLLM (2024)、Agent Lumos (2024)、Dennis 2026——技术管线走通六年了。Dennis 2026 这篇把最后三个「大家默认不行」的障碍(质量、成本、灵活性)逐条测出数字。
  • 产品侧:这派整体 GitHub star ~3000(Agent Lumos 独占大头),vs orchestration 派 29 万 star——差了 100 倍社区规模。生产环境里几乎没人这么干,我目前也没看到明面上的商业化项目在跑 subterranean。

判断:这是决策地图里的 explore 区,但赌哪个方向已经比较清楚——高频程序性任务(客服、结算、单一垂类工单处理)是第一波会落地的地方,因为盈亏平衡只需要 500 次会话,一个中等规模客服流程一周就跑到了。低频、探索型、开放式任务(编程助手、研究 agent)还是 in-context 或 orchestrator 的地盘,不适合编译。

接线:这把椅子怎么和已有节点挂上钩?

  • 《Agent 时代的工程学:六个决策点》的补丁:原地图决策点六是「靠外挂还是靠训练」,训练路径整体标 ❌ 未收敛。这篇论文把训练路径里的流程内化这一支从「未收敛」推进到「技术障碍已经拆掉,产品端待启动」,可以在原表加第七行。
  • 《Loop 还是 Graph?》的解答:Loop 派信模型、Graph 派信代码,这篇给出第三条路——训练时按 Graph 设计(严谨的流程图),运行时看起来像 Loop(模型 self-orchestrate)。原地图上「谁决定下一步」的争论在这里被消融:设计权由人拿,执行权由模型自己拿。
  • 《主模型在思考,谁在打下手?》的极端化:那篇讲了小模型接管主模型推理循环里的 8 个岗位(路由员、安检员、精简师…)。subterranean 是同一逻辑的极端形式——整条 procedure 都由小模型自己吃掉,主模型直接不出场。SLM 岗位地图里最激进的那格,就是编译版。
  • 《训练小模型的三条路》的补第四条:原三条是蒸馏、量化、专家混合。第四条:procedural compilation——不是通用能力压缩,是把一段业务流程当成需要压进小模型的知识。用大模型(Claude 4.5)合成数据这一步,和蒸馏共享底层机制。
  • 评测门禁体系的强依赖:subterranean 的调试成本高(权重级黑盒),配套必须先把 eval 门禁建起来——否则重编译一次没法确认没退化,这条路根本走不通。

苦涩教训是站在哪一边?

看上去这条路有很强的「手工设计流程图」味道——像是在跟苦涩教训对着干。但换一个视角就翻过来了:

在这条路里,flowchart 只是数据生成脚手架,训练完之后就扔了。运行时权重里学到的是”如何自然地跟用户走完这类流程”——是能力,不是规则。手工痕迹在训练时被溶解成学到的表示。

真正被苦涩教训吃掉的是 orchestrator。 LangGraph 每个节点上人写的 prompt 模板、决策枢纽处的路由分类器、状态转移逻辑——这些才是”人工设计的巧劲”。这篇论文的实验数据(LangGraph 在旅游任务上 24% 失败率、graceful handling 反被 8B 打过)恰恰印证:这些手工巧劲在为通用能力让路

同样的模式在别处已经反复上演:Cursor 曾经手工 patch 编辑,被通用模型收回;Reasoning-to-program 的三次外包里,外部脚手架不断被内化进模型。subterranean 是同一部剧的下一幕,只是这次被溶解的不是 tokenization 或 patch 逻辑,是整条业务流程

苦涩教训不反对”用大模型合成数据教小模型”——那是苦涩教训的经典执行路径(大模型足够强 → 合成足够好的数据 → 小模型足够便宜 → 端到端便宜地把任务办成)。它只反对”用人手工写死一条推理路径”。这篇论文的做法是前者,不是后者。

一个诚实的提醒

我没有亲手复现这个管线(RTX 5090 我没有,但 A100 云上 3 小时也就 10)。表里所有数字都可查——Dennis2026的表16,附录BWilcoxon检验、附录D的三个流程图定义。检验一张地图的唯一办法是拿它走一遍路:下一步我打算挑一个只有510个节点的小流程(比如把「日报解析分类归档」的固定流程用Qwen38B编译一版),跑200次对比incontextClaudeSonnet4.5,看盈亏平衡真的落在哪里。这个实验成本不到10)。表里所有数字都可查——Dennis 2026 的表 1–6,附录 B 的 Wilcoxon 检验、附录 D 的三个流程图定义。检验一张地图的唯一办法是拿它走一遍路:**下一步我打算挑一个只有 5–10 个节点的小流程**(比如把「日报解析→分类→归档」的固定流程用 Qwen3-8B 编译一版),跑 200 次对比 in-context Claude Sonnet 4.5,看盈亏平衡真的落在哪里。这个实验成本不到 20,不做实验永远不知道纸面上的 462× 在自己场景里能兑现多少。

实操版本已经铺好:见陪读篇 《手把手把 5 节点流程编译进 0.5B 权重——Subterranean Agent 实操陪读篇》——把规模缩到 Qwen2.5-0.5B + 一张消费级显卡(或 M-series Mac)能跑的版本,含 5 节点日报归档流程、Claude API 合成数据脚本、SFTTrainer 全量微调代码、对照 Claude in-context 的评测脚本,以及一份 12 项自检清单。约 $2 API 花费,本地训练免费。

参考来源

核心论文

同技术流派的前置工作

  • SimpleTOD (Hosseini-Asl et al., 2020)
  • FireAct (Chen et al., 2023)
  • SynTOD (Samarinas et al., 2024)
  • WorkflowLLM (Fan et al., 2024)
  • Agent Lumos (Yin et al., 2024)

被论文测量的对照面

  • LangGraph(29 万 star 中最大单库,~3 万 star)
  • CrewAI、Google ADK、OpenAI Agents SDK、Semantic Kernel、Strands、LlamaIndex(论文列举的 orchestration 派整体)
  • Anthropic: Building Effective Agents(in-context 路线的工程共识)

接线到已有节点