MUNDERDIFFLIN / LEARN
CHAPTER 12
第 12 课 · 多 Agent 协调18 分钟阅读深入

可靠投递不是“把文本塞进另一个终端”

拆开地址解析、mailbox 持久化、在线投递、终端接管和重试,读懂路由器的 at-least-once 倾向。

本课核心问题目标忙碌、离线或刚刚重启时,一条消息应该发生什么?
学完你能
  • 画出 routeMessage 的分阶段语义。
  • 识别持久交付与即时注入的区别。
01
五段路由

解析、记录、判定、注入、确认必须分开

把路由写成一个 write 调用会丢失目标不存在、消息已记录但未唤醒、或注入后 CLI 未处理等中间状态。

快递单不等于敲门:先确认地址并入库,再决定何时派送;无人开门也不能删除包裹记录。

02
投递矩阵

在线性与忙碌度共同决定动作,不决定事实是否存在

在线且空闲可尝试立即 handoff;在线但忙碌保留 mailbox 等待;离线同样保留;目标未知则应拒绝或进入死信,而不是无声丢弃。

  • 01online + idle:记录后注入,并等待处理证据。
  • 02online + busy:记录,稍后由状态变化/轮询触发。
  • 03offline:记录但不声称 delivered。
  • 04unknown:显式错误,带 sender 可理解的原因。
03
安全注入

terminal handoff 是受状态机约束的适配器

Renderer 的 useHive 在目标可接收时把消息转成 prompt。这个边界需要避免和用户队列同时写入、重复注入或在交互式确认阶段插入文本。

ARCHITECTURE NOTE

协议层的 delivered、终端层的 written、Agent 层的 handled 是三个不同状态。

LESSON CHECKPOINT

能用自己的话回答核心问题了吗?

mailbox 记录事实,PTY 注入只是一次唤醒尝试。