问题
"调研 10 个竞品"、"审查这 50 个文件"、"给 200 个客户各写一封个性化邮件"——广度优先的任务让单 Agent 串行做:慢、上下文爆炸、质量前紧后松。
核心模式
扇出聚合(Fan-out/Fan-in):任务切片并行分发,结果聚合归并——MapReduce 思想在 Agent 上的应用。
# 扇出:切片并行,每个 worker 独立上下文
chunks = partition(items, size=5)
partials = await parallel([
worker.process(chunk, instructions=SHARED_SPEC)
for chunk in chunks
])
# 聚合:去重、排序、综合
merged = dedupe(partials, key=semantic_hash)
report = aggregator.synthesize(merged, format=OUTPUT_SCHEMA)
两个成败点:切片的独立性(worker 之间不共享状态,各自闭环)和聚合的显式性(归并逻辑是代码/专用 prompt,不是把结果一扔了之)。
实战要点
- 每个 worker 的产出必须结构化(统一 schema),否则聚合阶段就是灾难
- 并发要控:20 个 worker 同时打满模型 API 的速率限制,流控退避必不可少
- 部分失败可降级:50 个文件审了 48 个,报告里如实标注覆盖范围,别让 2 个失败拖死 48 个成功
- 这是 Deep Research 类系统的骨架模式:广撒网检索(扇出)→ 来源综合(聚合)