stoneskin (Mr. Sun)

Personal homepage of Mr Sun - AI Solutions Architect, Tech Lead & AWS Cloud Specialist: resume, selected projects, and teaching archive

Meta《The Thin Orchestrator》总结:让路由器少做事,Agent 反而更可靠

← 返回目录

一手来源:Meta Engineering 博客《The Thin Orchestrator: How We Made Our AI Agents More Reliable by Giving the Router Less to Do》,2026-10-19 https://engineering.fb.com/2026/10/19/ml-applications/thin-orchestrator-ai-agent-architecture/ 覆盖范围:正文全部章节已读(引言、The Problem、The Approach、What We Built、Results、Why This Works、How to Apply、What’s Next、Acknowledgements);文中架构图为图片,文本抓取未包含图内标注信息,本文所有断言只基于正文文字。 结构:前半导读(故事与判断,旧版叙事语气),后半精读(机制、数据与证据边界,重读版口径)。2026-10-27 混合定稿。

价值判断:值得精读,而且是现在读。这篇是你第 2 课(确定性编排/状态机)的教材原文,也是挂起中的验收题的直接出处——验收题问的”编排层哪些该确定性、judge 改自由裁量先坏在哪”,原文都给了可引用的原话级答案。它同时是你手里两个在建系统(muse-thinktank、opencode-fuse)的架构参照系,属于读一篇、三个地方用得上的材料。

一句话结论

Meta 把生产级 agent 系统的可靠性做出来,靠的不是让编排层更聪明,而是把它削成一个 1,300 行、零领域工作的确定性路由器:编排层只管排序与可靠性检查,全部领域推理下放到 14 个上下文隔离的专家子 agent,概率性被关进隔离舱,确定性留在骨架上。

为什么值得看

叙事主线

Meta 的推荐系统要持续接入新的 data column(数据列),一次接入横跨 3 个代码仓库、3 种编程语言、最多 6 个 pipeline 阶段,且各阶段必须保持同步。

第一版是行业惯例:造一个”什么都懂”的单一 agent,把 10+ 数据源的配置 schema、代码生成规则、管道路由逻辑、验证要求全塞进它的上下文。Demo 里能跑,上生产开始幻觉:把 A 子系统的字段命名规范套到 B 子系统、用错数据源的代码生成模式——上下文越过某个阈值,知识开始互相污染。结论:这不是 prompt 工程问题,是架构问题。

他们改的不是 prompt、也不是换更大的上下文窗口,而是把编排层的职责砍到只剩路由与检查:1,300 行的编排器,零领域工作,不推理代码、不生成配置、不碰代码库;全部领域推理下放到 14 个上下文隔离的专家子 agent。谁都看不到全图——”这是 feature,不是 bug”。

扩规模也不靠造新 agent:编排器用 workflow template(确定性状态机)定义阶段顺序,新用例只写一个新模板、换个 agent 排序。支持 Pipeline Migration 这个全新用例时,新 agent 代码为零,直接上生产。

结果:新列的配置准备从手工 3–4 天降到不到 1 小时,约 2/3 的系统变更无需人工大改即可落地。

核心机制 / 数据

  1. 两层结构与规模(引言节、The Approach 节):编排器 1,300 行代码,路由 20+ 个 workflow 到 14 个 specialized subagent,”performs zero domain work”——不推理代码、不生成配置、不碰代码库,只做意图分类、字段收集、可靠性检查、委派。
  2. 7 步固定协议,概率性只占一步(The Approach 节):
    1. Read:读目标子 agent 的指令文件
    2. Check:查目标是否已存在(防重复)
    3. Gather:向用户收集必需字段
    4. Auto-discover:自动推断能推断的(仓库类型、已有配置)
    5. Reliability gate:检查活跃警告 / 必需 reviewer
    6. Delegate:带全上下文委派给子 agent
    7. Handle:处理结果,报错或确认成功 原文明确:第 1–5、7 步全是 deterministic,只有第 6 步涉及 LLM 推理,且发生在子 agent 的隔离上下文内。
  3. 单 agent 为什么垮,有数字(The Problem 节):另一条单 agent 路线靠工程师逐任务手写定制 system prompt 时成功率 70–80%,无人手写时掉到 10–20%。同节引 Mount Sinai 预印本:80 任务批量下多 agent 编排系统准确率 65.3%、单 agent 16.6%,token 用量最高降 65 倍——注意这是外部研究数字,不是 Meta 自家系统的测量(见”证据不支持什么”)。
  4. 扩规模靠 workflow template,不靠新 agent(What We Built 节):workflow template 是确定性状态机,定义阶段顺序以约束 LLM 的决策空间。三种现成模板——Column Onboarding:Schema → Validation → Population → Testing;Event Onboarding:Schema → Population → Validation → Testing → Event Processing;Pipeline Migration:Assessment → Planning → Population → Validation → Monitoring。支持 Pipeline Migration 这个全新用例时只写了新模板、重排已有 agent 顺序,”Zero new agent code”。
  5. 知识运行时加载 + 子 agent 结构统一(What We Built 节):维护 25+ 个 knowledge files 按领域组织,子 agent 执行时按需加载(每个通常几千 token),不内嵌进编排器;文件更新后下一次会话自动用新版,不用改编排器、不用重新部署,同一份知识文件还能服务多个平台实现。每个子 agent 结构统一:knowledge sources、pre-gathering checklist、分步 workflow、discovery patterns、troubleshooting 映射——第 15 个子 agent 与第 1 个结构相同,加专家是模板活。14 个专家各守一摊、互不可见全图:Schema agent 只懂配置注册表,Population agent 只懂 10 个数据源的代码生成,Validation agent 只懂构建与质量检查——旧版总结引原文立场概括为:这种”看不到全图”是 feature,不是 bug。

  6. 为什么有效:四条原理(Why This Works 节):① 确定性决策保持确定性——”哪个子 agent 处理”是路由决策,不是推理任务,别用 LLM 做;② 上下文隔离防污染——数据源 A 的 population agent 永远看不到 B 的模式,想幻觉也幻觉不出来;③ 失败被关在局部——子 agent 挂了,编排器重试或升级,失败不污染编排器状态、不串到其他子 agent;④ 每层独立进化——更好的模型同时提升全部 14 个子 agent,知识文件更新立即生效,新模板解锁新能力而不动 agent。反面论证同节给出:重型编排器一旦幻觉,错误扩散到全部下游;薄编排器的路由和检查不依赖 LLM 推理,几乎没有幻觉空间,创造性发生在下游隔离的领域上下文里,风险最小、失败可控。
  7. 给任何团队的 5 条应用原则(How to Apply 节):① 路由与推理分离——编排器在做领域决策就是做太多了,路由用关键词匹配、意图分类、字段收集等确定性手段,领域推理全推给隔离的子 agent;② 子 agent 结构统一——知识源、必需输入、执行步骤、错误处理四件套一致,加能力是模板活不是架构活;③ 扩规模靠工作流模板——新用例先问”能不能把已有 agent 换个顺序”,不能复用说明 agent 与用例耦合太重;④ 知识运行时加载而非构建时内嵌——更新即时生效、跨平台复用;⑤ 确定性/概率性边界画死——每个组件先定性(原文问法见”增量”节),编排器在一边、子 agent 在另一边,不要混。

信息流一图(据 The Approach、What We Built 两节转述绘制):

用户请求
   │
   ▼
┌──────────────── Thin Orchestrator(1,300 行,零领域工作)───────────────┐
│  1 Read → 2 Check → 3 Gather → 4 Auto-discover → 5 Reliability gate    │
│  (以上五步 + 第 7 步 Handle:全确定性)                                │
└──────────────────────────────┬──────────────────────────────────────────┘
                               │ 6 Delegate(唯一涉及 LLM 推理的一步)
              ┌────────────────┼────────────────┐
              ▼                ▼                ▼
        Schema agent    Population agent   Validation agent   … 共 14 个
        (隔离上下文)   (隔离上下文)     (隔离上下文)
              └────────────────┴────────────────┘
              每个按需加载 knowledge files(25+ 个,运行时加载)

增量(相对你已有的认知与项目)

对第 2 课验收题的直接供给(验收题:以 thinktank 为例,编排层哪些确定性、哪些概率性?若 judge 改为模型自由裁量,按本课原理先坏在哪层?原理/实现/trade-off 各一句):

对 opencode-fuse 的增量:你原有认知是”路由器只决定给谁、什么档”,本文补的是失效侧的论证——升档、重试这类可靠性动作之所以必须写成确定性规则,是因为一旦让编排层在失败时”自由发挥”,失败就不再可归因。fuse 的”说不行自动升档”正是本文 reliability gate 思路的同族。

与旧认知的一处修正:容易把本文读成”多 agent 比单 agent 强”,但原文的立论更窄也更硬:垮掉的不是”单 agent”,而是”编排与推理混在一层”。单 agent 逐任务手写 prompt 能到 70–80%(The Problem 节)恰恰说明模型能力没问题,问题在边界。这条修正对你面试答辩有用——被追问”为什么不用一个更强的模型”时,答”这是架构问题不是 prompt 问题”,原文有原话支撑(The Problem 节结尾)。

证据不支持什么

术语台账

术语 白话解释
thin orchestrator 被故意削薄的编排层:只路由和检查,不做任何领域工作
cross-contamination 上下文污染:一个 agent 装太多领域知识,把 A 领域的规则误用到 B 领域
subagent 专家子 agent:上下文隔离、只懂一个领域的执行者(本文共 14 个)
workflow template 工作流模板:用确定性状态机写死的阶段顺序,换顺序即支持新用例,不用造新 agent
reliability gate 可靠性门禁:委派前确定性执行的检查(活跃警告、必需 reviewer 等)
knowledge files 知识文件:子 agent 运行时按需加载的领域知识(25+ 个,更新即时生效)
deterministic / probabilistic boundary 确定性/概率性边界:每个组件先定性——路由决策归确定性,推理任务归概率性
compositional thesis 组合命题:扩规模 = 加模板和知识文件,而不是重造 agent(作者的扩展性主张)

细读指引


按长期要求:职业启示

(长期要求清单:学习类材料附职业启示节。以下每条均挂原文出处,不作无据发挥。)

  1. 面试谈资:一个能撑住三层追问的架构话题。 “deterministic/probabilistic boundary”是 AI Solutions Architect 面试里区分”会调框架”与”懂架构”的问题,本文把三层都给全了:原理层是 Why This Works 节的四条(确定性保持确定性、隔离防污染、失败局部化、各层独立进化),实现层是 The Approach 节的 7 步协议加 What We Built 节的 workflow template,trade-off 层是编排层拿灵活性换可靠性——阶段顺序必须能事先写成模板,开放式任务是否适用原文未证(见”证据不支持什么”)。开场白可用旧版的一句概括:”harness 层越克制,模型层越自由;可靠性来自边界,不来自更聪明的 prompt。”
  2. “为什么不用一个更强的模型”的标准答法。 The Problem 节给了生产证据:单 agent 靠工程师逐任务手写定制 prompt 也能做到 70–80% 成功率,无人手写就掉到 10–20%——瓶颈在架构不在模型,同节结尾的定性是”这不是 prompt 工程问题,是架构问题”。面试被追问”换下一代模型不就行了”,这组数字加这句定性就是完整回答。
  3. thinktank 的设计判断有大厂背书:聚合层要确定性外壳。 How to Apply 节结尾的失效论证——编排层一开始幻觉,就会 routes to the wrong agent、gathers the wrong fields、skips reliability checks,错误扩散到全部下游——直接支持 thinktank 现有的 fail-closed、聚合格式校验、熔断规则先于模型意见这套设计。这是能拿自己的在建系统出来讲的 trade-off 案例,比背别人的架构图有说服力。
  4. opencode-fuse 的设计判断:路由与升档必须是确定性规则。 How to Apply 节原则一与原则三:路由用确定性手段、扩规模靠模板不靠新 agent;fuse 的三档路由加”说不行自动升档”与此同源。被问”为什么不用 LLM 做路由”时,答案落在 Why This Works 节第 3 条:失败可归因——子 agent 的失败能被关在局部、定位到具体环节,编排层一旦自由发挥,失败就无处定位。
  5. 第 2 课验收的底气,也包括知道原文的边界在哪。 验收题三问中,”边界划在哪”与”judge 自由裁量先坏在哪层”原文有现成原话可引(见”增量”节);但”带实质判断的 judge 如何保持确定性外壳”原文答不了,要用 thinktank 实践自补。面试同理:能指出一篇大厂博客的框架在哪里不够用、再用自己的系统补上那一问,是 Architect 级别的信号,不是背诵者的信号。