Event Bus and Agent Runtime Event Contracts
概述
这个模块是系统的事件总线基础设施和代理运行时事件契约。它提供了一个灵活的发布-订阅系统,解耦了系统各个组件,实现了松耦合的通信,特别适用于代理运行时的事件流处理。
架构设计
graph TD
A[事件生产者] -->|发布事件| B[EventBus]
B -->|分发事件| C[事件消费者]
B --> E[事件类型]
E -->|分类| F[查询事件]
E -->|分类| G[检索事件]
E -->|分类| H[代理事件]
E -->|分类| I[流式事件]
J[EventBusAdapter] -->|适配| B
J -->|实现接口| K[types.EventBusInterface]
核心组件
- EventBus: 事件总线核心实现,管理事件的发布和订阅
- Event: 事件数据结构,包含事件ID、类型、会话ID等核心信息
- EventBusAdapter: 适配器,将EventBus适配为系统接口
- 事件数据结构: 各种类型的事件数据定义,如QueryData、RetrievalData等
设计决策
同步与异步模式
- 选择: 同时支持同步和异步两种模式
- 原因: 灵活应对不同场景需求
- 权衡:
- 同步模式保证了事件处理的顺序性,但可能阻塞主线程
- 异步模式提高了系统响应性,但需要注意资源管理和错误处理
事件数据结构设计
- 选择: 使用统一的Event结构+具体数据结构
- 原因: 保持事件系统的一致性和扩展性
- 权衡:
- 统一结构便于处理,但需要类型断言
- 具体数据结构保证了类型安全
适配器模式的使用
- 选择: 使用EventBusAdapter将EventBus适配为types.EventBusInterface
- 原因: 避免循环依赖,提高模块解耦
- 权衡:
- 增加了一层抽象,但提高了系统的灵活性
- 便于测试和替换实现
子模块说明
这个模块包含以下子模块:
与其他模块的依赖
这个模块是系统的基础设施,被多个上层模块依赖: