MUNDERDIFFLIN / LEARN
CHAPTER 09
第 09 课 · 进程与权限14 分钟阅读深入

发送一句 Prompt,实际是在操纵一个有状态终端

从 composer、队列和 bracketed paste 追到 PTY 写入,解释为什么消息不能总是立即发送。

本课核心问题为什么 submitToPty 不能等价于 write(prompt + Enter)?
学完你能
  • 区分直接发送、排队和 Hive 投递。
  • 理解终端焦点、paste 与 busy 状态。
01
输入链

用户文本先变成安全终端输入,再变成 CLI 行为

多行文本、控制字符和终端 paste mode 会改变输入解释。实现采用 bracketed paste,把一段 prompt 当作粘贴内容,最后再提交。

文本框交给的是一段意图;终端收到的却是一串控制序列和字节。中间必须有明确编码。

02
背压

Busy 状态把“立即发送”变成“排队等待安全窗口”

当 CLI 正在工作或终端不在安全输入点,直接写入可能污染当前交互。消息队列将意图持久化,并在状态允许时按目标 drain。

  • 01enqueue:保存消息、目标、顺序和可选上下文。
  • 02eligibility:用结构化状态判断是否可投递。
  • 03drain:一次提交一条,等待状态推进。
  • 04recovery:重载页面后队列仍可见,避免用户意图消失。
03
三种投递

直接 PTY、UI 队列与 Hive mailbox 解决不同问题

直接写 PTY 是本地用户到单会话;UI 队列处理 busy 背压;Hive mailbox 是 agent 间的持久协议事实。把三者混为一谈会造成重复、乱序或丢失。

ARCHITECTURE NOTE

判断投递机制时先问:发送者是谁、目标是否在线、是否需要持久化、允许重复吗、谁负责确认?

LESSON CHECKPOINT

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

Prompt I/O 是有背压的协议,不是无状态文本框。