持久化存储引擎

📎 引用文件

本文引用的文件 - agent/src/memory/persistent.py - agent/src/memory/compression.py - agent/src/memory/search_index.py - agent/src/memory/hierarchy.py - agent/src/memory/semantic_links.py - agent/src/session/store.py - agent/src/config/env_schema.py - agent/src/config/accessor.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障诊断与排错
  9. 结论
  10. 附录:配置与基准

简介

本技术文档聚焦 Vibe-Trading 的“持久化存储引擎”,围绕数据存储格式、索引机制、查询优化策略、文件组织结构、元数据管理、版本控制、写入流程、并发访问控制、事务处理、压缩存储、增量更新、批量操作优化、性能基准与调优参数、迁移工具、备份恢复流程、故障诊断方法,以及与文件系统的安全交互和权限控制进行系统化说明。该引擎以本地文件系统为核心,结合 SQLite FTS5 全文检索、BM25 语义链接、分层目录路由与三级压缩流水线,提供跨会话可持久化的记忆与运行态数据管理能力。

项目结构

持久化存储相关代码主要位于 agent/src/memory(记忆系统)与 agent/src/session(会话存储),并通过 agent/src/config 统一的环境配置开关驱动功能特性。

graph TB subgraph "记忆系统" PM["PersistentMemory<br/>文件读写/索引/MEMORY.md"] HIER["MemoryHierarchy<br/>分类目录路由/.hierarchy.yaml"] COMP["CompressionPipeline<br/>Raw->Daily->Digest"] FTS["MemorySearchIndex<br/>SQLite FTS5 索引"] LINKS["SemanticLinker<br/>BM25 语义链接"] end subgraph "会话存储" SS["SessionStore<br/>sessions/{id}/session.json, messages.jsonl"] end subgraph "配置" CFG["EnvConfig / MemoryConfig<br/>VT_MEMORY_* 开关"] ACC["get_env_config() 单例"] end PM --> HIER PM --> FTS PM --> LINKS PM --> COMP SS --> CFG PM --> CFG FTS --> CFG LINKS --> CFG HIER --> CFG ACC --> CFG

图表来源 - agent/src/memory/persistent.py:196-637 - agent/src/memory/hierarchy.py:34-436 - agent/src/memory/compression.py:160-353 - agent/src/memory/search_index.py:113-481 - agent/src/memory/semantic_links.py:158-372 - agent/src/session/store.py:16-259 - agent/src/config/env_schema.py:461-563 - agent/src/config/accessor.py:1-113

章节来源 - agent/src/memory/persistent.py:196-637 - agent/src/memory/hierarchy.py:34-436 - agent/src/memory/compression.py:160-353 - agent/src/memory/search_index.py:113-481 - agent/src/memory/semantic_links.py:158-372 - agent/src/session/store.py:16-259 - agent/src/config/env_schema.py:461-563 - agent/src/config/accessor.py:1-113

核心组件

章节来源 - agent/src/memory/persistent.py:196-637 - agent/src/memory/hierarchy.py:34-436 - agent/src/memory/compression.py:160-353 - agent/src/memory/search_index.py:113-481 - agent/src/memory/semantic_links.py:158-372 - agent/src/session/store.py:16-259 - agent/src/config/env_schema.py:461-563

架构总览

持久化存储引擎采用“文件为主、索引为辅”的混合架构: - 主数据:Markdown 文件(含 frontmatter 元数据)+ JSON/JSONL 会话数据。 - 辅助索引:MEMORY.md 轻量索引 + SQLite FTS5 全文索引 + .hierarchy.yaml 分类索引 + .relations.json 语义链接。 - 压缩归档:archive/ 目录保存原始文件副本,压缩后替换为精简内容。 - 并发与一致性:flock 文件锁、WAL 模式、原子写入(tmp+rename)、fsync 落盘。 - 配置驱动:VT_MEMORY_* 开关控制层级能力启用。

sequenceDiagram participant App as "调用方" participant PM as "PersistentMemory" participant H as "MemoryHierarchy" participant FS as "文件系统" participant IDX as "MemorySearchIndex(FTS5)" participant LNK as "SemanticLinker" participant CMP as "CompressionPipeline" App->>PM : add(name, content, type) PM->>H : route_entry(type, slug.md) H-->>PM : path PM->>FS : write frontmatter + body (locked) PM->>PM : _update_index(MEMORY.md) alt 开启 FTS PM->>IDX : index_entry(id,title,desc,body) end alt 开启链接 PM->>LNK : discover_links & save_relations end opt 开启压缩 PM->>CMP : should_compress(last_accessed) CMP-->>PM : target_level? PM->>CMP : archive_original + apply_compression PM->>FS : replace with compressed content end

图表来源 - agent/src/memory/persistent.py:462-578 - agent/src/memory/hierarchy.py:70-90 - agent/src/memory/search_index.py:207-239 - agent/src/memory/semantic_links.py:179-230 - agent/src/memory/compression.py:168-334

详细组件分析

文件组织与元数据管理

章节来源 - agent/src/memory/persistent.py:122-143 - agent/src/memory/persistent.py:207-307 - agent/src/memory/hierarchy.py:200-261 - agent/src/memory/semantic_links.py:232-319

索引机制与查询优化

flowchart TD Start(["查询入口 find_relevant"]) --> CheckFTS{"FTS 可用?"} CheckFTS --> |是| DoFTS["FTS MATCH 搜索"] DoFTS --> HasRes{"有结果?"} HasRes --> |是| MapBack["映射回完整条目"] HasRes --> |否| AutoRebuild["扫描磁盘条目并重建索引"] AutoRebuild --> DoFTS2["再次 FTS 搜索"] CheckFTS --> |否| ScanFallback["token 扫描加权评分"] MapBack --> ExpandLinks{"是否启用链接扩展?"} ExpandLinks --> |是| AddLinked["加入 .relations.json 相关条目"] ExpandLinks --> |否| ReturnRes["返回结果"] DoFTS2 --> ReturnRes ScanFallback --> ReturnRes

图表来源 - agent/src/memory/search_index.py:252-302 - agent/src/memory/search_index.py:304-355 - agent/src/memory/persistent.py:358-438 - agent/src/memory/semantic_links.py:282-319

章节来源 - agent/src/memory/search_index.py:113-481 - agent/src/memory/persistent.py:358-438

压缩存储与增量更新

flowchart TD Entry(["新条目/定期任务"]) --> CheckAccess["计算距上次访问时间(天)"] CheckAccess --> Level{"当前等级"} Level --> |raw > 7天| ToDaily["压缩到 daily"] Level --> |daily > 30天| ToDigest["压缩到 digest"] Level --> |不满足| Skip["跳过"] ToDaily --> Archive["归档原始文件"] ToDigest --> Archive Archive --> Apply["应用压缩算法"] Apply --> Replace["替换文件内容为压缩版"] Replace --> End(["完成"]) Skip --> End

图表来源 - agent/src/memory/compression.py:168-193 - agent/src/memory/compression.py:194-256 - agent/src/memory/compression.py:258-334

章节来源 - agent/src/memory/compression.py:160-353

并发访问控制与事务处理

章节来源 - agent/src/memory/persistent.py:41-73 - agent/src/memory/search_index.py:137-145 - agent/src/memory/semantic_links.py:232-281 - agent/src/session/store.py:151-163

数据写入流程与批量操作

章节来源 - agent/src/memory/persistent.py:440-578 - agent/src/memory/search_index.py:304-355 - agent/src/memory/hierarchy.py:145-176

版本控制与迁移

章节来源 - agent/src/memory/semantic_links.py:303-319 - agent/src/memory/hierarchy.py:92-143 - agent/src/memory/hierarchy.py:381-436

与文件系统的安全交互与权限控制

章节来源 - agent/src/memory/persistent.py:145-166 - agent/src/memory/persistent.py:478-503 - agent/src/config/env_schema.py:282-290

依赖关系分析

classDiagram class PersistentMemory { +add(...) +find_relevant(...) +remove(...) -_update_index(...) -_rebuild_index(...) } class MemoryHierarchy { +route_entry(...) +scan_all() +recover_extensionless_entries() +migrate_flat_entry(...) } class MemorySearchIndex { +index_entry(...) +search(...) +rebuild_all(...) +remove_entry(...) } class SemanticLinker { +discover_links(...) +save_relations(...) +load_relations(...) +resolve_wikilinks(...) } class CompressionPipeline { +should_compress(...) +compress_to_daily(...) +compress_to_digest(...) +archive_original(...) +apply_compression(...) } class SessionStore { +create_session(...) +append_message(...) +list_sessions(...) } PersistentMemory --> MemoryHierarchy : "路由/扫描" PersistentMemory --> MemorySearchIndex : "索引/搜索" PersistentMemory --> SemanticLinker : "链接" PersistentMemory --> CompressionPipeline : "压缩"

图表来源 - agent/src/memory/persistent.py:196-637 - agent/src/memory/hierarchy.py:34-436 - agent/src/memory/search_index.py:113-481 - agent/src/memory/semantic_links.py:158-372 - agent/src/memory/compression.py:160-353 - agent/src/session/store.py:16-259

章节来源 - agent/src/memory/persistent.py:196-637 - agent/src/memory/hierarchy.py:34-436 - agent/src/memory/search_index.py:113-481 - agent/src/memory/semantic_links.py:158-372 - agent/src/memory/compression.py:160-353 - agent/src/session/store.py:16-259

性能考量

[本节为通用性能讨论,无需特定文件引用]

故障诊断与排错

章节来源 - agent/src/memory/search_index.py:160-173 - agent/src/memory/compression.py:306-334 - agent/src/memory/semantic_links.py:296-319 - agent/src/session/store.py:174-193 - agent/src/memory/hierarchy.py:92-143 - agent/src/memory/hierarchy.py:381-436

结论

Vibe-Trading 持久化存储引擎以文件为核心,辅以 SQLite FTS5、BM25 语义链接与分层目录路由,实现了可扩展、可压缩、可检索的记忆与运行态数据管理。通过严格的并发控制、原子写入与 fsync 保障数据一致性;通过配置开关实现功能渐进启用;通过迁移与恢复机制确保长期演进中的数据安全。在生产环境中,建议结合权限控制、备份策略与监控指标,持续优化存储性能与可靠性。

[本节为总结性内容,无需特定文件引用]

附录:配置与基准

配置开关与环境变量

章节来源 - agent/src/config/env_schema.py:461-563 - agent/src/config/accessor.py:1-113

性能基准建议

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