事件协议(Event Protocol) 协议

别名: 事件模型

把 Agent 运行的每一步决策序列化成结构化事件的跨章契约,共七型:text_delta / tool_call_start / tool_result / approval_request / approval_result / done / error。每条带 sessionId、工具事件按 callId 配对、data.type 自描述。见[第 15 章](/chapters/15-service-v02-events/)。

它是什么

事件协议(Event Protocol)是把 Agent 运行的每一步决策序列化成结构化事件的跨章契约。ch14 的 onEvent 是为 CLI 打印定制的 trace hook(think / act / observe / done);服务化要求同一份 core 输出被多个消费方使用(终端打印、SSE 推送、Web 渲染、未来的存储与回放),于是需要一个正式的、自描述的、可序列化的事件协议。

七种事件

共七型,每条带 sessionIdtext_delta(一段助手文本,只在停止轮流出)、tool_call_start(执行工具前发出)、tool_result(工具执行结果,失败也是数据——ok: false + errorerror 类型保留给 provider 挂了这种真正失败)、approval_request / approval_result(审批事件,ch18 才真正发出,先定义后实现——契约先于实现稳定)、done(一轮结束的哨兵,可带 usage)、error(出错)。工具事件按 callId 配对:一轮可能并行调用多个工具,客户端必须能把「每个开始」对应到「每个结果」。

自描述与传输

事件本身是 JSON 对象;上线时套一层 SSE 帧(event: 行 + data: 行 + 空行)。data 里也含 type——因为客户端既可以走浏览器 EventSource,也可以走 fetch 流、甚至 curl,协议必须自描述:无论哪种消费方式,JSON.parse(data) 之后看 data.type 就能分发(详见第 15 章)。

相关词条

出现在这些章节