事件系统和任务管理
服务端用 事件驱动 把 Executor 产出转为协议层 Task / Message / Artifact 更新。
1. ExecutionEventBus
Executor 发布:
| 事件类型(概念) | 含义 |
|---|---|
| 状态更新 | working、input-required、completed… |
| 消息/片段 | 流式 text、文件 part |
| Artifact | 可下载产出物 |
Handler 订阅后写 Store 并推 SSE。
2. ExecutionEventQueue
- 有序缓冲事件,支持背压。
- 多消费者(SSE、推送)可各取一份。
3. Task 生命周期
mermaid
stateDiagram-v2
[*] --> submitted
submitted --> working
working --> completed
working --> failed
working --> canceled
working --> input_required
input_required --> working与 A2A 规范 一致;SDK 校验非法跳转。
4. ResultManager
聚合流式 part → 完整 Message;合并 artifact 元数据。
5. TaskStore
抽象接口:get / save / list。
默认内存实现;生产换 DB,保证 taskId 幂等。
6. contextId / taskId
可客户端指定或 服务端自动生成;续聊同一 context 关联多 task。
7. 历史记录
框架按 task 维护 message 历史,Executor 可读不可直接改 Store(防一致性问题)。
8. 总结
扩展服务端 = 发正确事件类型 + 遵守状态机;不要绕过 Bus 直接改 HTTP 响应。