事件收件箱改变了使用 MagicFrog 的心智模型。旧的范式是对话优先:你打开一个任务,坐在会话旁看着 agent 干活。新的范式是队列优先:人是全局事件队列的处理者,对话只是事件的来源之一。
你不再需要守着某段会话等 agent 开口。任何时候、任何任务里的 agent 需要人类做一个决定,就会产生一个事件,落进同一个全局收件箱。你按队列逐个处理——回应、批准、回答——每次回应都直接写回该任务的会话。队列清空,就没有剩余的事要做。
主区的双 Tab
任务的主区现在是一个 Tab 容器:
- 事件处理(默认 Tab):收件箱视图——来自你全部任务的待处理事件卡片,以紧凑处理式样堆叠呈现。
- 对话:当前所选任务的传统聊天全文。
切换 Tab 不会丢失对话状态:两个 Tab 共享当前所选任务与同一份上下文。事件 Tab 是干活的地方;对话 Tab 是阅读的地方。

图为现役自部署实例上的真实会话视图。队列中没有待处理事件时,事件页签保持禁用——图如实呈现这一空队列状态,未做任何摆拍。
全局队列
队列聚合所有任务的事件,而不只是你打开的那一个。有两个事件源:
- Agent @人类 mention:在群聊任务中,agent 的消息携带指向你账号的显式 @ 引用时,这条 mention 就成为一阶待处理事件。mention 判定在客户端投影层按账号标识匹配——服务端零改动。
- 既有 HITL 请求:permission 请求、question 提问、表单提交(
frm_)、takeover 接管,这些过去以各自独立卡面出现的人类介入提示,全部收拢进同一个队列。
队列中的卡片按时间开序排列,并携带所属任务名与发起 agent 的身份标识——你始终知道是谁在问、在哪个任务里问。在卡片上回应(快捷动作或回复输入)即写入该任务的会话,事件随之 resolved 出队,队列自动推进下一张。
四类卡面,一套骨架
既有的四类 human-in-the-loop 卡面现在渲染为统一事件卡骨架加类型分派:
- permission——批准或拒绝一个工具或动作请求。
- question——回答 agent 的直接提问。
- 表单(
frm_)——填写并提交结构化表单。 - takeover——接受或拒绝控制权的交接。
用户感知到的变化就是收拢:一个队列、一种卡片形态、一种回应方式。不存在两套并行的卡片体系,旧的独立卡面已经退役。
空态与角标
- 全部事件处理完后,客户端自动切回对话 Tab,并显示「无消息需要处理」的空态。事件 Tab 随即禁用,不可点击——不能进入一个空队列。
- 待处理数量以事件 Tab 上的红点角标呈现。数量大于 99 时封顶显示为 99+。
任务列表投影
待处理事件同样体现在任务列表上,且不触碰任务状态机:有待处理事件的任务沿用熟悉的「等待人类」小点,并带上计数;没有待处理事件的任务则视觉沉降。任务状态机(running / idle / archived)保持不变——这只是一层视觉投影。
定位完整上下文
每张卡片都有「更多」动作:跳转到对话 Tab,并把全文定位到该事件所属的任务与消息位置。当卡片本身携带的上下文不足以让你做决定时,用它。