模块知识库/Vibe-Trading 量化交易智能体平台/Vibe-Trading Agent 核心运行时/会话-目标-多智能体编排层(Session Goal Swarm 协同)/会话生命周期与执行编排(Session & Agent Loop Orchestration)/编码规范
- 所有持久化实体(Session/Message/Attempt/Principal)均提供
to_dict 与 from_dict 成对方法,使用 asdict 配合枚举 .value 实现 JSON 可序列化的双向转换。
- 对外部输入进行防御性处理:读取 JSONL/JSON 时捕获
json.JSONDecodeError、TypeError、ValueError 并记录警告后跳过坏记录,保证列表操作不被单条损坏数据中断。
- 事件发布统一通过
EventBus.emit(session_id, event_type, data) 构造 SSEEvent 并发布,终端状态通过 _TERMINAL_EVENTS 映射表映射到 attempt.completed/cancelled/failed 等标准事件名。
- 长耗时或阻塞操作(工具注册、AgentLoop.run)通过
loop.run_in_executor(_AGENT_EXECUTOR, ...) 放入专用线程池执行,避免阻塞事件循环。
- 跨组件共享资源采用模块级单例 + 双重检查锁定模式(如
get_shared_index()),确保多路径访问同一 SQLite 连接。
- 会话并发控制采用“抢占式”模式:
send_message 在写库前用 _inflight_lock 抢占 session 槽位,失败或异常时在 finally 中释放,避免死锁占用。