并行与编排-工作者:什么时候同时做,什么时候先拆再派

并行与编排-工作者:什么时候同时做,什么时候先拆再派:区分预先可分的并行任务与由编排者动态拆解的工作者任务,通过架构、轨迹和故障重放完成验收。

学习目标

  • 能解释“并行与编排-工作者:什么时候同时做,什么时候先拆再派”如何区分预先可分的并行任务与由编排者动态拆解的工作者任务
  • 能区分sectioning、voting、orchestrator、worker、合并器,并指出控制权、数据与副作用边界
  • 能固定输入与版本,沿以下证据定位首个分叉:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本
  • 能注入“多个工作者同时写同一资源,合并器只保留最后完成者的结果”,完成阻断、恢复、复位和同输入重放

来源、课程编排与适用边界

“并行与编排-工作者:什么时候同时做,什么时候先拆再派”以Anthropic 公开全文《Building effective agents》为总纲,并用Anthropic《Building effective agents》核对本单元机制;涉及 MCP 的控制权边界再由MCP 2025-06-18 官方规范交叉检查。

这不是 Anthropic 出版的“19 章教材”。平台把公开文章、官方工具文档与协议规范重组为 19 个应用单元;下列 152 个节点是站内课程地图,不冒充原文目录。正文、代码、图表、实验和练习均为独立教学重写;产品接口、模型行为或协议版本变化时必须重新验证。

本单元的八个课程坐标

  • 并行与编排-工作者:什么时候同时做,什么时候先拆再派:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 1 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 先打个比方:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 2 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 并行:同一批活,预先分块后一起做:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 3 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 并行不只一种:分片(sectioning)和投票(voting):这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 4 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 编排-工作者:先看任务,再临场拆活:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 5 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 它们都像“多人一起干”,但差别在子任务是不是预先写死:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 6 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 动手看:该预先并行,还是让编排者临场拆活?:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 7 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 代码对照:同一任务,固定分工写法 vs 先规划再派工写法:这是“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的第 8 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。

术语与运行合同

本页不变量是:子任务边界、共享状态、合并规则和失败策略必须在执行前或规划后显式落盘。任何“成功”结论都要保存以下证据:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本,模型生成的计划或自信不能替代环境事实。

关键机制与可推翻实验

并行的前提是独立

有写依赖或共享可变状态的任务不能只因技术上可并发就同时运行。

动手验证:为子任务建立读写集合,检测冲突后再调度。

投票需要聚合合同

多跑几次不自动提高可靠性;阈值、偏差和弃权必须预先定义。

动手验证:改变票数与阈值,观察假阳性和假阴性。

编排者动态决定子任务

与固定并行的关键差别是拆分结果依赖具体输入。

动手验证:给两个规模不同的代码任务,比较生成的工作者计划。

合并不是拼接

重复、矛盾、依赖顺序和质量门禁都要由合并器处理。

动手验证:注入两个互斥补丁,确认系统阻断而不是 last-write-wins。

先预测,再操作三类证据

分步1 / 3

1. 架构与复杂度边界

在“并行与编排-工作者:什么时候同时做,什么时候先拆再派”中切换简单基线、受控工作流与自主循环,先预测“区分预先可分的并行任务与由编排者动态拆解的工作者任务”在哪个阶段需要增加控制权,再比较延迟、成本、可观测性和自主性。

Architecture decision laboratory

并行与编排-工作者:什么时候同时做,什么时候先拆再派

区分预先可分的并行任务与由编排者动态拆解的工作者任务

复杂度档位

不变量:子任务边界、共享状态、合并规则和失败策略必须在执行前或规划后显式落盘

受控工作流:只激活能够由收益证明的阶段1依赖分析2任务拆分3并发执行4结果合并5冲突验收蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:任务图、依赖边、工…
自主性46
延迟52
成本48
可观测78

最小可运行实现

const plan = await orchestrator.decompose(task);
assertAcyclic(plan.dependencies);
const results = await scheduler.run(plan, {
  maxConcurrency: 4,
  isolateWrites: true,
});
const merged = mergeWithConflicts(results);
return verifyMergedResult(merged, task.acceptance);

这段切片只暴露“区分预先可分的并行任务与由编排者动态拆解的工作者任务”的最小运行合同。交付版本还要补齐超时、密钥隔离、结构化日志、幂等和批量评测;缺少任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本时,代码能运行也不代表本章结论成立。

练习与答案

练习

问题 1:最小证明。 怎样用最少样本证明“子任务边界、共享状态、合并规则和失败策略必须在执行前或规划后显式落盘”?

问题 2:课程覆盖。 并行与编排-工作者:什么时候同时做,什么时候先拆再派、先打个比方、并行:同一批活,预先分块后一起做、并行不只一种:分片(sectioning)和投票(voting)、编排-工作者:先看任务,再临场拆活、它们都像“多人一起干”,但差别在子任务是不是预先写死、动手看:该预先并行,还是让编排者临场拆活?、代码对照:同一任务,固定分工写法 vs 先规划再派工写法如何进入可操作验证?

问题 3:恢复闭环。 怎样证明“多个工作者同时写同一资源,合并器只保留最后完成者的结果”已经修复?

本章回顾

  • “并行与编排-工作者:什么时候同时做,什么时候先拆再派”的主问题是区分预先可分的并行任务与由编排者动态拆解的工作者任务。
  • 核心不变量是子任务边界、共享状态、合并规则和失败策略必须在执行前或规划后显式落盘。
  • 首要反例是多个工作者同时写同一资源,合并器只保留最后完成者的结果。
  • 最小证据包包含任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本。

名词解释

本章出现的专业名词,用大白话再讲一遍。

sectioning

把预先已知且相互独立的子任务并行执行。在“并行与编排-工作者:什么时候同时做,什么时候先拆再派”中必须能按以下证据重新定位:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本。

voting

对同一任务运行多个候选并按规则聚合。在“并行与编排-工作者:什么时候同时做,什么时候先拆再派”中必须能按以下证据重新定位:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本。

orchestrator

根据具体输入动态拆分任务并综合结果的模型。在“并行与编排-工作者:什么时候同时做,什么时候先拆再派”中必须能按以下证据重新定位:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本。

worker

执行一个明确子任务并返回结构化结果的模型或进程。在“并行与编排-工作者:什么时候同时做,什么时候先拆再派”中必须能按以下证据重新定位:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本。

合并器

按依赖、冲突和质量规则整合多个结果的确定性组件。在“并行与编排-工作者:什么时候同时做,什么时候先拆再派”中必须能按以下证据重新定位:任务图、依赖边、工作者输入输出、完成顺序、冲突、合并决策、耗时与成本。

阅读导航

← 链式与路由:把任务拆成更稳的工作流 · 评估-优化:什么时候该先出稿,再迭代打磨 →

讨论

评论区加载中…