事件
每次运行产出一条类型化的 AgentEvent 流——它是向 UI 流式输出文本、展示工具活动、以及服务审批与用户提问的唯一通道。事件只做观察:处理事件绝不改变 agent 行为,因此你可以在其上构建任意渲染或日志层,而不必触碰 agent。
每次迭代 query() 时你已经在消费这条流:
从子代理转发的事件带 agentId;主 agent 的事件不带。
渲染文本
文本以 text_delta 块增量到达——直接写出即可获得流式 UI。当一轮的完整 assistant 消息就绪时发出 message 事件;整个运行结束时,done 携带最终的 RunResult:
交互事件:审批与用户输入
有两对事件对应运行挂起、等待你的处理器应答的时机:
approval_request→approval_resolved—— 权限闸门对某个工具调用返回ask;你的onApproval处理器回答"allow"或"deny"。见权限。input_request→input_resolved—— 模型调用了ask_user;你的onAskUser处理器返回答案字符串。
用事件在 UI 中渲染提示(例如展示哪个工具调用在等待审批);用处理器给出真正的回答。处理器 resolve 之前,运行一直阻塞。
完整事件参考
另请参阅
- 代理循环 —— 产生这些事件的五个步骤。
- 会话 —— 事件正是每个会话被持久化的内容。
- 权限 ——
approval_request/approval_resolved背后的审批流程。 - 核心策略 ——
ApprovalHandler与InputHandler接口。
手动恢复通过 checkpoint_restore 报告 { phase, sessionId, toSeq, completed, total, message? }。手动压缩和恢复与正常运行共用订阅事件流。