feat: 采用三层内存系统实现统一内存管理器
- 添加了UnifiedMemoryManager,以整合感知层、短期记忆层和长期记忆层。 - 实现了初始化、消息添加和内存搜索功能。 - 引入了记忆从短期存储到长期存储的自动转移机制。 - 开发了用于结构化内存表示的内存格式化工具。 - 增强日志记录功能,以便在内存操作过程中更好地进行追踪。
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
记忆系统管理单例
|
||||
|
||||
提供全局访问的 MemoryManager 实例
|
||||
提供全局访问的 MemoryManager 和 UnifiedMemoryManager 实例
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -13,10 +13,18 @@ from src.memory_graph.manager import MemoryManager
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
# 全局 MemoryManager 实例
|
||||
# 全局 MemoryManager 实例(旧的单层记忆系统,已弃用)
|
||||
_memory_manager: MemoryManager | None = None
|
||||
_initialized: bool = False
|
||||
|
||||
# 全局 UnifiedMemoryManager 实例(新的三层记忆系统)
|
||||
_unified_memory_manager = None
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# 旧的单层记忆系统 API(已弃用,保留用于向后兼容)
|
||||
# ============================================================================
|
||||
|
||||
|
||||
async def initialize_memory_manager(
|
||||
data_dir: Path | str | None = None,
|
||||
@@ -104,3 +112,97 @@ async def shutdown_memory_manager():
|
||||
def is_initialized() -> bool:
|
||||
"""检查 MemoryManager 是否已初始化"""
|
||||
return _initialized and _memory_manager is not None
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# 新的三层记忆系统 API(推荐使用)
|
||||
# ============================================================================
|
||||
|
||||
|
||||
async def initialize_unified_memory_manager():
|
||||
"""
|
||||
初始化统一记忆管理器(三层记忆系统)
|
||||
|
||||
从全局配置读取参数
|
||||
|
||||
Returns:
|
||||
初始化后的管理器实例,未启用返回 None
|
||||
"""
|
||||
global _unified_memory_manager
|
||||
|
||||
if _unified_memory_manager is not None:
|
||||
logger.warning("统一记忆管理器已经初始化")
|
||||
return _unified_memory_manager
|
||||
|
||||
try:
|
||||
from src.config.config import global_config
|
||||
from src.memory_graph.unified_manager import UnifiedMemoryManager
|
||||
|
||||
# 检查是否启用三层记忆系统
|
||||
if not hasattr(global_config, "three_tier_memory") or not getattr(
|
||||
global_config.three_tier_memory, "enable", False
|
||||
):
|
||||
logger.warning("三层记忆系统未启用,跳过初始化")
|
||||
return None
|
||||
|
||||
config = global_config.three_tier_memory
|
||||
|
||||
# 创建管理器实例
|
||||
_unified_memory_manager = UnifiedMemoryManager(
|
||||
data_dir=Path(getattr(config, "data_dir", "data/memory_graph/three_tier")),
|
||||
# 感知记忆配置
|
||||
perceptual_max_blocks=getattr(config, "perceptual_max_blocks", 50),
|
||||
perceptual_block_size=getattr(config, "perceptual_block_size", 5),
|
||||
perceptual_activation_threshold=getattr(config, "perceptual_activation_threshold", 3),
|
||||
perceptual_recall_top_k=getattr(config, "perceptual_recall_top_k", 5),
|
||||
perceptual_recall_threshold=getattr(config, "perceptual_recall_threshold", 0.55),
|
||||
# 短期记忆配置
|
||||
short_term_max_memories=getattr(config, "short_term_max_memories", 30),
|
||||
short_term_transfer_threshold=getattr(config, "short_term_transfer_threshold", 0.6),
|
||||
# 长期记忆配置
|
||||
long_term_batch_size=getattr(config, "long_term_batch_size", 10),
|
||||
long_term_search_top_k=getattr(config, "long_term_search_top_k", 5),
|
||||
long_term_decay_factor=getattr(config, "long_term_decay_factor", 0.95),
|
||||
# 智能检索配置
|
||||
judge_confidence_threshold=getattr(config, "judge_confidence_threshold", 0.7),
|
||||
)
|
||||
|
||||
# 初始化
|
||||
await _unified_memory_manager.initialize()
|
||||
|
||||
logger.info("✅ 统一记忆管理器单例已初始化")
|
||||
return _unified_memory_manager
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"初始化统一记忆管理器失败: {e}", exc_info=True)
|
||||
raise
|
||||
|
||||
|
||||
def get_unified_memory_manager():
|
||||
"""
|
||||
获取统一记忆管理器实例(三层记忆系统)
|
||||
|
||||
Returns:
|
||||
管理器实例,未初始化返回 None
|
||||
"""
|
||||
if _unified_memory_manager is None:
|
||||
logger.warning("统一记忆管理器尚未初始化,请先调用 initialize_unified_memory_manager()")
|
||||
return _unified_memory_manager
|
||||
|
||||
|
||||
async def shutdown_unified_memory_manager() -> None:
|
||||
"""关闭统一记忆管理器"""
|
||||
global _unified_memory_manager
|
||||
|
||||
if _unified_memory_manager is None:
|
||||
logger.warning("统一记忆管理器未初始化,无需关闭")
|
||||
return
|
||||
|
||||
try:
|
||||
await _unified_memory_manager.shutdown()
|
||||
_unified_memory_manager = None
|
||||
logger.info("✅ 统一记忆管理器已关闭")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"关闭统一记忆管理器失败: {e}", exc_info=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user