编排·通信·终止
编排·通信·终止:用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作,以架构、轨迹与故障重放完成工程验收。
学习目标
- 能解释“编排·通信·终止”如何用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作
- 能区分消息信封、共享黑板、调度器、死锁、全局终止,并标出控制权、状态和副作用边界
- 能冻结输入与版本,沿以下证据定位首个分叉:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因
- 能注入“两个 Agent 基于同一旧版本覆盖共享黑板,调度器未检测循环等待而无限转发消息”,完成阻断、恢复、复位和同输入重放
来源、课程身份与适用边界
“编排·通信·终止”以Anthropic 公开全文《Building effective agents》建立工程总纲,并用Anthropic 多智能体研究系统工程复盘核对本章机制。
这不是一本名为《AI Agent 开发实战》的官方出版物,也不存在官方十四章目录。平台把公开工程文章、官方开发文档和原始论文重组为 14 个工程单元;下列 112 个节点是站内课程地图。正文、代码、图表、实验与练习均为独立教学重写,模型、API、协议或安全边界变化时必须重新验证。
本单元的八个工程坐标
- 编排·通信·终止:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 1 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 小队组好了,可它们怎么真正配合起来:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 2 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 通信:Agent 之间靠「消息」交流:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 3 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 共享状态:给所有 Agent 一块黑板:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 4 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 编排:谁先谁后、转几轮,得有人调度:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 5 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 终止:什么时候必须强制收工:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 6 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 动手玩:共享黑板 与 终止条件:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 7 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
- 动手一:共享黑板好在哪:这是“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的第 8 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
术语与运行合同
↡消息信封:包含发送者、接收者、关联标识和载荷的通信结构;在“编排·通信·终止”中按以下证据核对:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。、↡共享黑板:多个 Agent 读写的版本化协作状态;在“编排·通信·终止”中按以下证据核对:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。、↡调度器:决定任务何时运行、重试或转交的组件;在“编排·通信·终止”中按以下证据核对:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。、↡死锁:参与者互相等待且没有任务能继续的状态;在“编排·通信·终止”中按以下证据核对:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。、↡全局终止:依据整体任务、活动工作者和消息队列判断系统退出;在“编排·通信·终止”中按以下证据核对:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。。
本页不变量是:消息与共享状态都有版本、所有者和因果标识,终止条件覆盖成功、死锁、预算与人工接管。任何“成功”结论都要保存message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因;模型自评、最终措辞和单次 demo 都不能替代环境事实。
工程机制与反证实验
消息需要因果关联
仅凭文本内容无法可靠配对请求、响应和子任务。
动手验证:打乱消息到达顺序,确认 correlation_id 保持链路。
共享状态必须版本化
last-write-wins 会静默丢失并发更新,应使用乐观锁或合并策略。
动手验证:让两个 Agent 更新同一版本,确认第二次写入冲突。
调度器处理背压
工作者速度不同时,无限入队会消耗内存并扩大过期任务。
动手验证:限制队列和并发,观察高负载下的拒绝与恢复。
终止是全局属性
某个 Agent 没有新动作不代表系统完成,还要看队列、等待和验收。
动手验证:构造互相等待,确认死锁检测进入 blocked。
从架构到故障重放
1. 架构复杂度实验
在“编排·通信·终止”中切换简单基线、受控工作流和自主循环,先判断“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。
Architecture decision laboratory
编排·通信·终止
用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作
不变量:消息与共享状态都有版本、所有者和因果标识,终止条件覆盖成功、死锁、预算与人工接管
最小可运行切片
async function coordinate(task: Task) {
const state = versionedBlackboard(task);
while (budget.remaining()) {
const runnable = scheduler.next(state);
if (runnable.length === 0) return classifyQuiescence(state);
const events = await runWithLimit(runnable, 4);
state.apply(events, { rejectStaleWrites: true });
if (acceptance.passed(state)) return done(state);
}
return blocked("budget", state);
}切片只表达“用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作”的核心合同。生产实现还要补齐持久化、超时、密钥隔离、结构化日志、幂等和批量评测;如果不能重新取得message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因,代码跑通也不能证明机制正确。
练习与答案
练习
问题 1:最小证明。 怎样用正常、边界和单故障三类样本证明“消息与共享状态都有版本、所有者和因果标识,终止条件覆盖成功、死锁、预算与人工接管”?
问题 2:节点覆盖。 编排·通信·终止、小队组好了,可它们怎么真正配合起来、通信:Agent 之间靠「消息」交流、共享状态:给所有 Agent 一块黑板、编排:谁先谁后、转几轮,得有人调度、终止:什么时候必须强制收工、动手玩:共享黑板 与 终止条件、动手一:共享黑板好在哪如何从目录词变成工程证据?
问题 3:恢复验收。 怎样证明“两个 Agent 基于同一旧版本覆盖共享黑板,调度器未检测循环等待而无限转发消息”已经修复?
本章回顾
- “编排·通信·终止”解决的是用消息信封、共享黑板、调度器和全局终止检测组织多 Agent 协作。
- 核心不变量是消息与共享状态都有版本、所有者和因果标识,终止条件覆盖成功、死锁、预算与人工接管。
- 首要反例是两个 Agent 基于同一旧版本覆盖共享黑板,调度器未检测循环等待而无限转发消息。
- 最小证据包包含message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 消息信封
包含发送者、接收者、关联标识和载荷的通信结构。在“编排·通信·终止”中必须能按以下证据重新定位:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。
- 共享黑板
多个 Agent 读写的版本化协作状态。在“编排·通信·终止”中必须能按以下证据重新定位:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。
- 调度器
决定任务何时运行、重试或转交的组件。在“编排·通信·终止”中必须能按以下证据重新定位:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。
- 死锁
参与者互相等待且没有任务能继续的状态。在“编排·通信·终止”中必须能按以下证据重新定位:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。
- 全局终止
依据整体任务、活动工作者和消息队列判断系统退出。在“编排·通信·终止”中必须能按以下证据重新定位:message_id、correlation_id、状态版本、读写者、调度事件、等待图、预算与终止原因。