模式矩阵 /模式白皮书/C2
ADPS Agent 设计模式白皮书
C2 · Fan-out / Gather · 扇出聚合
Orchestrator 将独立子任务并行分发给 N 个 sub-agent,再由 Aggregator 去重、消解冲突并合并结果。
| 坐标 | 协作 Collaboration × 并行 Parallel |
| 成本 | 高(并行 Worker 调用加聚合) |
| 模式组 | 协作模式 |
| 模式简介 | Orchestrator 将独立子任务并行分发给 N 个 sub-agent,再由 Aggregator 去重、消解冲突并合并结果。 |
问题
有些任务由单 Agent 顺序执行无法满足业务窗口,例如季报披露前的大批量财务文档扫描。前提是各分片能够独立处理,并且最终结果可以可靠聚合。
扇出聚合将大任务切分为可独立执行的子任务,并行分发给 N 个 sub-agent。token 成本通常随 Worker 数量增加,wall-clock 时间则可以缩短。多个 Worker 的输出可能重叠或冲突,Aggregator 需要执行去重、概念归一和冲突消解。
坐标说明:协作 × 并行
- 纵轴 · 协作:这是把一个任务拆给多个 sub-agent 并行做再汇总,分发的实体是不同的子任务,属于多 agent 协作拓扑。区别于推理模块的并行探索——后者并行的是同一道题的多条解法(推理策略),前者并行的是切给不同 agent 的不同子任务(协作拓扑)。
- 横轴 · 并行:N 个 sub-agent 同时跑、互不知情,最后统一 gather,是经典的 map-reduce 式并行结构。不是顺序串联,也不是循环迭代。
解决方案与机制
一次扇出聚合由三段组成:
- 切分扇出:按语义独立性将大任务切成 N 份并行分发。子任务之间不能存在输出依赖;存在顺序依赖时应使用交接链。
- 隔离执行:每个 sub-agent 跑在独立 context 里完成自己的子任务,互不通信。隔离强度跟输出冲突可能性成正比——各查不同语料的研究任务用软隔离就够,多 agent 改重叠文件的写代码任务要用物理隔离(独立 Git worktree 或独立容器)。
- 聚合收回:用聚合策略把 N 路结果合并。聚合没做对,全套链路就不成立。
Aggregator 至少处理以下五项:
| 聚合环节 | 作用 |
|---|---|
| 去重 dedup | 多 worker 抓到同一事实时合并,用语义相似度找重复 |
| 冲突消解 conflict resolution | worker A 说买、worker B 说卖时怎么裁定 |
| 跨切整合 integration | 只在 worker 切片交界处才暴露的问题不能漏 |
| 排序 ranking | 多维度综合排序 |
| 溯源 attribution | 每条结论锚定到原始 source |
适用场景
- wall-clock 时间紧迫的批量任务:季报合规扫描、大规模文档审查、批量投标书评审,总时长是硬瓶颈、子任务彼此独立。
- 可按语义独立切分的研究任务:跨多个语料源的并行查证,每个 sub-agent 各查一类内容,输出几乎不冲突。
- 多 Agent 并行写代码:UI、API、数据库和测试由独立 Agent 处理,并用 worktree 隔离文件与提交,最后统一集成验证。
适用条件包括:子任务可独立执行、wall-clock 时间是主要约束,并且业务能够承担 N 倍 token 成本。
已知失效方式
- 子任务有强依赖还硬切:worker 之间需要交换中间状态、或必须按顺序看才能识别演化轨迹的任务,扇出会把顺序依赖强行拍平成并行,gather 阶段要花大量工作重新建立依赖关系。这种场景应该用交接链。
- 聚合比执行还贵:aggregation 投入不够时,扇出只是把瓶颈从时长挪到质量。如果业务没有工程精力做去重、冲突消解、跨切整合,就不该开扇出。
- 聚合瓶颈:worker 数 N 增加时,aggregator 要读完所有 worker 输出,context 撑爆、质量直线下降。N 大时 aggregator 要分层做(先分组 sub-aggregation,再最终综合),把 context 压力压到对数级。
- 切片按职能切而非按冲突切:按"职能最齐全"切(前端/后端/算法/测试各一组)会导致集成阶段天天解冲突;按"输出冲突最小化"切才对。扇出拓扑应该 mirror 业务团队真实的协作拓扑。
- 隐式 batch 削并发:应用侧发起多路调用时,provider 可能排队或 batch,实际并发低于配置值。扇出实现需要测量真实吞吐并与 provider 限制对齐。
验证指标
- Worker 完成率:返回有效 artifact 的 Worker 占比。合规审查还要列出未完成分片,不能用已完成结果掩盖漏评。
- 重复率:聚合后语义重复条目的占比。持续升高时检查分片边界、归一化和去重策略。
- 加速比:N 个 Worker 相对顺序基线带来的墙钟时间变化。偏离预期时检查限流、共享依赖和 gather 瓶颈。
- 聚合成本占比:聚合步骤在总算力和延迟中的占比。过高时可改用更严格的 artifact、分层聚合或确定性去重。
最小实现
FanoutGather.execute(goal, perspectives, strategy):
workers = decompose(goal, perspectives) # 按语义独立性切 N 份
results = 并行 gather( # 信号量控并发 + retry + backoff
execute_worker(w) for w in workers # 每个独立 context,失败不阻塞其他
)
return aggregate(goal, results, strategy) # 去重、冲突消解与综合
aggregate(results, strategy):
concatenate → 简单拼接(仅无重叠时)
vote → 多数投票
synthesize → 强模型综合,显式消解矛盾 + 去重
structured → schema 化结构合并
生产实现根据本地质量和成本选择 Worker 与 Aggregator 模型;并发与 provider 限制对齐并在观测后调整;单个 Worker 失败不阻塞其他分支,最终 artifact 必须披露 partial failure;各分支保留完整 trace。
场景化示例
设想一个季度合规扫描 Agent。单 Agent 顺序读取全部财务文档无法满足披露前窗口;并行 Worker 虽然缩短墙钟时间,却会产生重复、术语不一致和置信度不可比的问题。gather 阶段因此需要语义去重、概念归一化、证据合并和 needs-review 分类。政府或国企招投标等场景还可能要求 Worker 之间保持独立,trace 和留存期限按适用制度配置。任何 partial failure 都要在最终报告中显式列出。
相邻模式
- 并行探索(推理模块 R3):结构同源、聚合机制相通,区别在并行的实体。扇出聚合是不同子任务分给不同 Agent(协作拓扑),并行探索是同一道题的多条解法(推理策略)。
- 层级委派(C1):同为一对多,但扇出是一对多分量(多个 worker 同时干同一类活的不同部分)、浅协作(fire-and-collect),层级委派是一对多分专业、深协作(supervisor 持续监督)。Anthropic 多 agent research 同时是层级(lead 主管)加扇出(subagents 并行)。
- 对抗评审(C3):扇出的 N 个 worker 是互补关系(各看一面拼出全景),对抗评审的 reviewer 是对抗关系(独立审查决策健壮性)。
- 子代理隔离(C5):每个并行分支使用独立 context,gather 阶段只读取 reduced 结果。
工程判断
扇出聚合用更多 Worker 缩短 wall-clock 时间,同时增加去重、冲突消解和结果合并的成本。Worker 数量扩大前,需要先验证聚合器的容量与质量。
企业证据
当前没有与本模式绑定的公开评审案例。模式定义不因此视为已经获得企业验证。
案例收录要求说明业务约束、实现结构、已知失败和迁移边界。参见 贡献与评审规则。
2026-08-25 研讨会修订:写入冲突域与只读聚合
文件分开不等于资源独立。扇出前声明可能写入的文件、编号、配置、领域对象和外部环境;无法确认互斥关系时保持串行。Gatherer 没有写入职责时默认只读。
引用建议:ADPS,《C2 扇出聚合》,Agent 设计模式白皮书 v0.3,2026-07-30。
文档状态:本页为公开评审稿。模式定义与分类可供讨论和引用;场景化示例用于说明机制,不代表已经核验的企业案例。具名实践另见案例库。ADPS 欢迎业界提交带来源、测量口径和发布授权的案例。
溯源记录
- 来源记录
- ADPS 模式白皮书;先行工作与参考资料见正文
- 本页首次公开