持久化存储

📎 引用文件

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

目录

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

简介

本文件为 Vibe-Trading 的持久化存储系统提供完整技术文档,覆盖数据存储格式、索引构建策略与查询优化机制;会话数据的持久化方案、版本管理与数据迁移策略;搜索索引的构建与维护(全文检索与语义链接);存储配置选项、备份恢复流程与性能优化方法;以及数据一致性与故障恢复机制。

项目结构

持久化相关代码主要分布在 memory 与 session 两个子系统: - memory:跨会话记忆持久化、层级路由、压缩归档、全文检索索引、语义链接等。 - session:会话、消息、执行尝试的文件系统持久化与生命周期编排。 - config:统一的环境变量配置模型,包含记忆系统的功能开关与默认值。 - migrate:将历史状态从旧位置迁移到运行时根目录的一次性迁移工具。

graph TB subgraph "记忆持久化" PM["PersistentMemory<br/>文件+索引"] HIER["MemoryHierarchy<br/>层级路由"] COMP["CompressionPipeline<br/>三级压缩"] FTS["MemorySearchIndex<br/>SQLite FTS5"] LINKS["SemanticLinker<br/>BM25 语义链接"] end subgraph "会话持久化" STORE["SessionStore<br/>JSON/JSONL"] SERVICE["SessionService<br/>生命周期编排"] MODELS["Session/Message/Attempt<br/>数据模型"] end CFG["EnvConfig<br/>配置中心"] MIG["migrate_legacy_state<br/>一次性迁移"] PM --> HIER PM --> FTS PM --> LINKS PM --> COMP SERVICE --> STORE SERVICE --> MODELS SERVICE --> PM PM --> CFG STORE --> CFG MIG --> STORE

图表来源 - 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/session/store.py:16-259 - agent/src/session/service.py:53-605 - agent/src/session/models.py:140-342 - agent/src/config/env_schema.py:461-563 - agent/src/config/migrate.py:114-153

章节来源 - agent/src/memory/persistent.py:196-637 - agent/src/session/store.py:16-259 - agent/src/config/env_schema.py:461-563

核心组件

章节来源 - agent/src/memory/persistent.py:196-637 - agent/src/memory/search_index.py:113-481 - agent/src/memory/compression.py:160-353 - agent/src/memory/hierarchy.py:34-436 - agent/src/session/store.py:16-259 - agent/src/session/service.py:53-605 - agent/src/config/env_schema.py:461-563 - agent/src/config/migrate.py:114-153

架构总览

持久化系统由“记忆”和“会话”两条主线组成,二者通过服务层协作: - 用户发送消息后,SessionService 负责持久化消息、创建执行尝试、更新会话,并在后台执行 AgentLoop。 - AgentLoop 在执行过程中可读写 PersistentMemory,触发索引更新、语义链接发现与压缩归档。 - 全文检索通过 MemorySearchIndex 提供 O(log n) 查询能力,失败时回退到内存分词扫描。 - 层级路由与压缩在开启时提升组织性与存储效率。 - 配置由 EnvConfig 统一管理,记忆系统可按预设或独立开关启用不同特性。

sequenceDiagram participant U as "调用方" participant S as "SessionService" participant ST as "SessionStore" participant SI as "SearchIndex(会话)" participant A as "AgentLoop" participant PM as "PersistentMemory" participant FT as "FTS5 索引" U->>S : send_message(session_id, content) S->>ST : append_message(Message) S->>SI : index_message(session_id, role, content) S->>S : create_attempt() S->>ST : update_session() S->>A : run(user_message, history) A->>PM : add/find_relevant(...) PM->>FT : index_entry / search(...) A-->>S : result(status, metrics, run_dir) S->>ST : append_message(Assistant reply) S->>SI : index_message(session_id, assistant, reply.content) S-->>U : {message_id, attempt_id}

图表来源 - agent/src/session/service.py:158-345 - agent/src/session/store.py:151-193 - agent/src/memory/persistent.py:462-578 - agent/src/memory/search_index.py:207-355

详细组件分析

记忆持久化(PersistentMemory)

flowchart TD Start(["写入记忆"]) --> CheckDup{"是否重复?"} CheckDup --> |是| Block["拒绝写入"] CheckDup --> |否| Route["路由到层级目录或扁平路径"] Route --> WriteFile["写入 .md 文件(frontmatter + 正文)"] WriteFile --> UpdateIndex["更新 MEMORY.md 索引"] UpdateIndex --> Links{"是否启用语义链接?"} Links --> |是| Discover["发现并保存语义链接"] Links --> |否| SkipLinks["跳过"] Discover --> FTS{"是否启用全文索引?"} SkipLinks --> FTS FTS --> |是| IndexEntry["FTS5 索引 entry"] FTS --> |否| Done["完成"] IndexEntry --> Done

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

章节来源 - agent/src/memory/persistent.py:196-637

全文检索索引(MemorySearchIndex)

classDiagram class MemorySearchIndex { -db_path Path -conn Connection? -fts_available bool -op_lock Lock +__init__(db_path?) +index_entry(id,title,description,keywords,body) void +remove_entry(id) void +search(query,max_results) MemoryMatch[] +rebuild_all(entries_data) int -_get_conn() Connection -_init_db() void -_prepare_cjk(text) str -_clean_cjk(text) str -_sanitize_fts_query(query) str +close() void } class MemoryMatch { +entry_id str +title str +snippet str +rank float }

图表来源 - agent/src/memory/search_index.py:96-111 - agent/src/memory/search_index.py:113-481

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

层级路由(MemoryHierarchy)

章节来源 - agent/src/memory/hierarchy.py:34-436

压缩归档(CompressionPipeline)

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

会话持久化(SessionStore)

章节来源 - agent/src/session/store.py:16-259

会话服务(SessionService)

章节来源 - agent/src/session/service.py:53-605

数据模型(Session/Message/Attempt)

章节来源 - agent/src/session/models.py:140-342

配置与预设(EnvConfig)

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

版本迁移(migrate_legacy_state)

章节来源 - agent/src/config/migrate.py:114-153

依赖关系分析

graph LR PM["PersistentMemory"] --> HIER["MemoryHierarchy"] PM --> FTS["MemorySearchIndex"] PM --> LINKS["SemanticLinker"] PM --> COMP["CompressionPipeline"] SVC["SessionService"] --> ST["SessionStore"] SVC --> SI["SessionSearchIndex"] SVC --> AG["AgentLoop"] PM --> CFG["EnvConfig"] ST --> CFG

图表来源 - agent/src/memory/persistent.py:196-637 - agent/src/session/service.py:53-605 - agent/src/config/env_schema.py:461-563

性能考量

[本节为通用性能讨论,不直接分析具体文件]

故障排查指南

章节来源 - agent/src/memory/search_index.py:147-196 - agent/src/memory/persistent.py:609-637 - agent/src/memory/compression.py:258-334 - agent/src/session/store.py:164-193 - agent/src/config/migrate.py:57-102

结论

Vibe-Trading 的持久化存储系统以文件系统为核心,结合 SQLite FTS5 全文检索、层级路由与压缩归档,实现了高效、可扩展且健壮的跨会话记忆与会话数据管理。通过统一配置与一次性迁移工具,系统在易用性、可维护性与可靠性方面达到平衡。建议在生产环境开启 FTS5 与层级路由,并根据数据规模与访问模式调整压缩阈值与检索参数。

[本节为总结,不直接分析具体文件]

附录

数据存储格式

章节来源 - agent/src/memory/persistent.py:122-143 - agent/src/memory/persistent.py:513-530 - agent/src/session/store.py:19-55 - agent/src/memory/hierarchy.py:200-261 - agent/src/memory/search_index.py:147-196

索引构建策略与查询优化

章节来源 - agent/src/memory/search_index.py:207-355 - agent/src/memory/hierarchy.py:145-176 - agent/src/memory/compression.py:168-193

会话数据持久化方案、版本管理与数据迁移

章节来源 - agent/src/session/store.py:59-116 - agent/src/config/migrate.py:114-153

搜索索引的构建与维护(全文检索与语义搜索)

章节来源 - agent/src/memory/search_index.py:252-302 - agent/src/memory/persistent.py:418-438

存储配置选项

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

备份恢复流程

章节来源 - agent/src/memory/compression.py:258-334 - agent/src/memory/search_index.py:304-355

数据一致性保证与故障恢复机制

章节来源 - agent/src/memory/persistent.py:41-73 - agent/src/session/service.py:93-117 - agent/src/session/store.py:151-193 - agent/src/config/migrate.py:57-102