模块以 FastAPI 路由层(routes.py)为入口,对外提供 /agents.json 静态清单和 /v1/query SSE 流;路由通过 api_server.require_auth 依赖注入鉴权,并缓存按 session_service id 索引的 OpenBBQueryAdapter 实例。

核心适配层 adapter.py 实现单请求一会话策略:每个 /v1/query 调用创建临时会话、回放历史消息(跳过 tool 角色,将其内容折叠进上下文前缀)、注入工作区上下文后通过 SessionService.send_message 触发 AgentLoop,再订阅事件总线消费至 attempt.* 终止事件,并在 finally 中清理事件缓冲区。

两个可插拔协作者解耦了具体细节:context_injector.WorkspaceContextInjector 负责从 QueryRequest.context/widgets/workspace_state 抽取数据、工具结果与仪表板元信息,拼接成带字符预算(8000 字符硬上限)的自然语言前缀;event_mapper.SSEEventMapper 将 Vibe-Trading 内部事件(text_delta/tool_call/tool_result/compact/stream_reset 等)映射为 openbb_ai.helpers.message_chunk/reasoning_step SSE 对象,静默事件集合 _SILENT_EVENTS 用于过滤遥测噪声。

models.py 仅定义 Pydantic 的 AgentManifest 用于清单序列化;__init__.py 暴露 try_register_openbb_routes,在可选 extra 缺失时安全降级,保证核心 API 不因可选集成故障而崩溃。依赖方向单向:routes → adapter → (session_service, context_injector, event_mapper) → openbb_ai helpers,不反向引用 Vibe-Trading 核心组件。