数据管理层

📎 引用文件

本文引用的文件 - agent/src/entities/models.py - agent/src/entities/cashflow.py - agent/backtest/loaders/base.py - agent/backtest/loaders/registry.py - agent/src/memory/persistent.py - agent/src/memory/lifecycle.py - agent/src/session/models.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件为 Vibe-Trading 的数据管理层提供综合数据模型文档,覆盖实体关系、字段定义与数据类型、主键/外键、索引与约束、数据验证规则与业务规则、数据库模式图与示例数据、数据访问模式、缓存策略与性能考量、数据生命周期与归档规则、数据迁移与版本管理、数据安全与隐私以及访问控制。重点说明数据模型设计、缓存系统架构和数据管道处理。

项目结构

数据管理层由以下子域组成: - 资产参考与现金流模型:描述非K线资产(基金、债券、证券)及现金流序列、汇率表等。 - 市场数据加载器:统一的市场数据协议、校验、重试与本地缓存。 - 会话与主体:会话、消息、执行尝试与认证主体模型。 - 持久化记忆:跨会话的本地文件型记忆存储、检索、质量衰减与垃圾回收。

graph TB subgraph "资产与现金流" M["实体与工具<br/>models.py"] CF["现金流与汇率<br/>cashflow.py"] end subgraph "市场数据" LB["加载器基础<br/>loaders/base.py"] LR["加载器注册与回退<br/>loaders/registry.py"] end subgraph "会话与主体" SM["会话/消息/尝试<br/>session/models.py"] end subgraph "持久化记忆" PM["持久化记忆<br/>memory/persistent.py"] ML["生命周期/GC<br/>memory/lifecycle.py"] end M --> CF LR --> LB SM --> PM PM --> ML

图表来源 - agent/src/entities/models.py:1-397 - agent/src/entities/cashflow.py:1-769 - agent/backtest/loaders/base.py:1-645 - agent/backtest/loaders/registry.py:1-249 - agent/src/session/models.py:1-342 - agent/src/memory/persistent.py:1-637 - agent/src/memory/lifecycle.py:1-421

章节来源 - agent/src/entities/models.py:1-397 - agent/src/entities/cashflow.py:1-769 - agent/backtest/loaders/base.py:1-645 - agent/backtest/loaders/registry.py:1-249 - agent/src/session/models.py:1-342 - agent/src/memory/persistent.py:1-637 - agent/src/memory/lifecycle.py:1-421

核心组件

章节来源 - agent/src/entities/models.py:1-397 - agent/src/entities/cashflow.py:1-769 - agent/backtest/loaders/base.py:1-645 - agent/src/session/models.py:1-342 - agent/src/memory/persistent.py:1-637 - agent/src/memory/lifecycle.py:1-421

架构总览

数据流从外部数据源经加载器获取OHLCV,经过校验与本地缓存后进入回测引擎;同时,非K线资产通过实体与现金流模型表达,支持多币种折算与汇总。会话层记录用户交互与执行尝试,持久化记忆用于跨会话知识沉淀与检索。

sequenceDiagram participant U as "调用方" participant R as "加载器注册表<br/>registry.py" participant L as "加载器实现<br/>base.py" participant C as "本地缓存<br/>base.py" participant E as "回测/分析" U->>R : resolve_loader(市场) R-->>U : 可用加载器实例 U->>L : fetch(codes, start, end, interval, fields) L->>C : loader_cache_get(...) alt 命中缓存 C-->>L : DataFrame else 未命中 L->>L : 校验OHLC/重试预算 L-->>C : loader_cache_put(...) end L-->>U : {symbol : DataFrame} U->>E : 传入DataFrame进行计算

图表来源 - agent/backtest/loaders/registry.py:158-193 - agent/backtest/loaders/base.py:343-439 - agent/backtest/loaders/base.py:50-119

详细组件分析

实体与工具模型(非K线资产)

classDiagram class Entity { +string entity_id +string name +EntityType entity_type +string domicile +string parent_id } class Instrument { +string instrument_id +string currency +string name +Entity issuer +date inception_date } class Security { +string symbol +string exchange +SecurityType security_type } class Fund { +int vintage_year +FundStructure structure +string strategy +float commitment +float management_fee_rate } class Bond { +float face_value +float coupon_rate +int coupon_frequency +date maturity_date +string day_count } Instrument <|-- Security Instrument <|-- Fund Instrument <|-- Bond Entity <.. Instrument : "引用"

图表来源 - agent/src/entities/models.py:141-397

章节来源 - agent/src/entities/models.py:38-138 - agent/src/entities/models.py:141-397

现金流与汇率模型

classDiagram class CashFlow { +date date +float amount +string kind +string currency +Mapping metadata +is_valuation() bool } class CashFlowSeries { +tuple flows +string currency +bool pre_translated +filter(kind) CashFlowSeries +between(start,end) CashFlowSeries +total(include_valuations) float } class FxRate { +string base_currency +string quote_currency +date date +float rate } class FxRateTable { +string quote_currency +get_rate(base,on_date,allow_stale,max_staleness_days) (FxRate,bool) } CashFlowSeries --> CashFlow : "包含" translate_cashflows --> FxRateTable : "使用" CashFlowSeries --> FxRateTable : "可选折算"

图表来源 - agent/src/entities/cashflow.py:121-423 - agent/src/entities/cashflow.py:443-681 - agent/src/entities/cashflow.py:684-769

章节来源 - agent/src/entities/cashflow.py:62-88 - agent/src/entities/cashflow.py:121-423 - agent/src/entities/cashflow.py:443-681 - agent/src/entities/cashflow.py:684-769

市场数据加载器与缓存

flowchart TD Start(["开始"]) --> CheckCache["检查本地缓存<br/>loader_cache_get"] CheckCache --> |命中| ReturnCached["返回缓存DataFrame"] CheckCache --> |未命中| Fetch["调用fetch()"] Fetch --> Validate["OHLC校验<br/>validate_ohlc"] Validate --> Retry{"是否需重试?"} Retry --> |是| Backoff["指数退避/预算检查"] Backoff --> Fetch Retry --> |否| PutCache["写入缓存<br/>loader_cache_put"] PutCache --> ReturnFrame["返回DataFrame"] ReturnCached --> End(["结束"]) ReturnFrame --> End

图表来源 - agent/backtest/loaders/base.py:343-439 - agent/backtest/loaders/base.py:50-119 - agent/backtest/loaders/base.py:184-236

章节来源 - agent/backtest/loaders/base.py:27-119 - agent/backtest/loaders/base.py:184-236 - agent/backtest/loaders/base.py:243-439 - agent/backtest/loaders/base.py:475-595 - agent/backtest/loaders/base.py:618-645

加载器注册与回退链

章节来源 - agent/backtest/loaders/registry.py:23-59 - agent/backtest/loaders/registry.py:62-124 - agent/backtest/loaders/registry.py:136-155 - agent/backtest/loaders/registry.py:158-249

会话、消息与执行尝试

classDiagram class Principal { +string subject +AuthMethod auth_method +string tenant +string display_name +bool attributable } class Session { +string session_id +string title +SessionStatus status +string created_at +string updated_at +string last_attempt_id +dict config +Principal owner } class Message { +string message_id +string session_id +string role +string content +string created_at +string linked_attempt_id +dict metadata +list tool_trail } class Attempt { +string attempt_id +string session_id +string parent_attempt_id +AttemptStatus status +string prompt +string run_dir +string summary +list react_trace +string created_at +string completed_at +string error +dict metrics } Session "1" -- "many" Message : "包含" Session "1" -- "many" Attempt : "包含" Principal --> Session : "拥有"

图表来源 - agent/src/session/models.py:40-118 - agent/src/session/models.py:140-342

章节来源 - agent/src/session/models.py:16-37 - agent/src/session/models.py:40-118 - agent/src/session/models.py:121-138 - agent/src/session/models.py:140-342

持久化记忆与生命周期

flowchart TD A["新增条目"] --> B["生成slug与frontmatter"] B --> C["写入文件(加锁)"] C --> D["更新索引MEMORY.md"] D --> E{"启用语义链接?"} E --> |是| F["发现并保存关系"] E --> |否| G["跳过"] F --> H{"启用FTS索引?"} G --> H H --> |是| I["索引条目"] H --> |否| J["跳过"] I --> K["完成"] J --> K

图表来源 - agent/src/memory/persistent.py:462-578

章节来源 - agent/src/memory/persistent.py:122-143 - agent/src/memory/persistent.py:196-307 - agent/src/memory/persistent.py:358-438 - agent/src/memory/persistent.py:462-578 - agent/src/memory/lifecycle.py:71-98 - agent/src/memory/lifecycle.py:112-158 - agent/src/memory/lifecycle.py:183-273

依赖关系分析

graph LR Models["entities/models.py"] --> Cashflow["entities/cashflow.py"] Registry["loaders/registry.py"] --> Base["loaders/base.py"] Session["session/models.py"] --> Memory["memory/persistent.py"] Memory --> Lifecycle["memory/lifecycle.py"]

图表来源 - agent/src/entities/models.py:1-397 - agent/src/entities/cashflow.py:1-769 - agent/backtest/loaders/registry.py:1-249 - agent/backtest/loaders/base.py:1-645 - agent/src/session/models.py:1-342 - agent/src/memory/persistent.py:1-637 - agent/src/memory/lifecycle.py:1-421

章节来源 - agent/backtest/loaders/registry.py:158-249 - agent/backtest/loaders/base.py:243-439 - agent/src/memory/persistent.py:196-307 - agent/src/memory/lifecycle.py:183-273

性能考虑

[本节为通用指导,无需特定文件来源]

故障排查指南

章节来源 - agent/backtest/loaders/registry.py:158-193 - agent/backtest/loaders/base.py:50-119 - agent/backtest/loaders/base.py:184-236 - agent/src/entities/cashflow.py:144-184 - agent/src/entities/cashflow.py:610-681 - agent/src/memory/persistent.py:41-73

结论

该数据管理层以强类型、不可变模型为核心,结合严格的校验与业务规则,保障数据一致性与可追溯性。市场数据通过统一协议与本地缓存提升鲁棒性与性能;现金流与汇率模型确保多币种处理的严谨性;会话与记忆系统支撑跨会话的知识沉淀与检索。整体设计兼顾可扩展性、安全性与可维护性。

[本节为总结,无需特定文件来源]

附录

实体关系与字段定义(摘要)

章节来源 - agent/src/entities/models.py:141-397 - agent/src/entities/cashflow.py:121-423 - agent/src/entities/cashflow.py:443-681 - agent/src/session/models.py:140-342

数据验证规则与业务规则(摘要)

章节来源 - agent/src/entities/models.py:68-138 - agent/backtest/loaders/base.py:50-119 - agent/backtest/loaders/base.py:328-340 - agent/src/entities/cashflow.py:144-184 - agent/src/entities/cashflow.py:610-681 - agent/src/memory/persistent.py:30-33 - agent/src/memory/lifecycle.py:92-98

数据访问模式与缓存策略(摘要)

章节来源 - agent/backtest/loaders/registry.py:158-193 - agent/backtest/loaders/base.py:243-439 - agent/backtest/loaders/base.py:475-595

数据生命周期、保留策略与归档规则(摘要)

章节来源 - agent/src/memory/persistent.py:75-91 - agent/src/memory/lifecycle.py:92-98 - agent/src/memory/lifecycle.py:183-273

数据迁移与版本管理(摘要)

章节来源 - agent/backtest/loaders/base.py:243-248 - agent/src/session/models.py:80-118

数据安全、隐私与访问控制(摘要)

章节来源 - agent/src/session/models.py:16-37 - agent/src/memory/persistent.py:150-165 - agent/backtest/loaders/base.py:264-281