feat(memory): 使用异步初始化确保统一记忆管理器已准备就绪
This commit is contained in:
@@ -598,12 +598,14 @@ class DefaultReplyer:
|
||||
return ""
|
||||
|
||||
try:
|
||||
from src.memory_graph.manager_singleton import get_unified_memory_manager
|
||||
from src.memory_graph.manager_singleton import (
|
||||
ensure_unified_memory_manager_initialized,
|
||||
)
|
||||
from src.memory_graph.utils.three_tier_formatter import memory_formatter
|
||||
|
||||
unified_manager = get_unified_memory_manager()
|
||||
unified_manager = await ensure_unified_memory_manager_initialized()
|
||||
if not unified_manager:
|
||||
logger.debug("[三层记忆] 管理器未初始化")
|
||||
logger.debug("[三层记忆] 管理器初始化失败或未启用")
|
||||
return ""
|
||||
|
||||
# 目标查询改为使用最近多条消息的组合块
|
||||
|
||||
@@ -152,10 +152,12 @@ class StreamContext(BaseDataModel):
|
||||
logger.debug(f"消息直接添加到StreamContext未处理列表: stream={self.stream_id}")
|
||||
else:
|
||||
logger.debug(f"消息添加到StreamContext成功: {self.stream_id}")
|
||||
# ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ͳһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
# 同步消息到统一记忆管理器
|
||||
try:
|
||||
if global_config.memory and global_config.memory.enable:
|
||||
unified_manager: Any = _get_unified_memory_manager()
|
||||
from src.memory_graph.manager_singleton import ensure_unified_memory_manager_initialized
|
||||
|
||||
unified_manager: Any = await ensure_unified_memory_manager_initialized()
|
||||
if unified_manager:
|
||||
message_dict = {
|
||||
"message_id": str(message.message_id),
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from src.common.logger import get_logger
|
||||
@@ -19,6 +20,7 @@ _initialized: bool = False
|
||||
|
||||
# 全局 UnifiedMemoryManager 实例(新的三层记忆系统)
|
||||
_unified_memory_manager = None
|
||||
_unified_memory_init_lock: asyncio.Lock | None = None
|
||||
|
||||
|
||||
# ============================================================================
|
||||
@@ -194,6 +196,27 @@ def get_unified_memory_manager():
|
||||
return _unified_memory_manager
|
||||
|
||||
|
||||
async def ensure_unified_memory_manager_initialized():
|
||||
"""
|
||||
确保统一记忆管理器已初始化。
|
||||
|
||||
在首次访问时自动初始化,避免调用方重复判断。
|
||||
"""
|
||||
global _unified_memory_init_lock, _unified_memory_manager
|
||||
|
||||
if _unified_memory_manager is not None:
|
||||
return _unified_memory_manager
|
||||
|
||||
if _unified_memory_init_lock is None:
|
||||
_unified_memory_init_lock = asyncio.Lock()
|
||||
|
||||
async with _unified_memory_init_lock:
|
||||
if _unified_memory_manager is not None:
|
||||
return _unified_memory_manager
|
||||
|
||||
return await initialize_unified_memory_manager()
|
||||
|
||||
|
||||
async def shutdown_unified_memory_manager() -> None:
|
||||
"""关闭统一记忆管理器"""
|
||||
global _unified_memory_manager
|
||||
|
||||
@@ -219,12 +219,14 @@ class KFCContextBuilder:
|
||||
return ""
|
||||
|
||||
try:
|
||||
from src.memory_graph.manager_singleton import get_unified_memory_manager
|
||||
from src.memory_graph.manager_singleton import (
|
||||
ensure_unified_memory_manager_initialized,
|
||||
)
|
||||
from src.memory_graph.utils.three_tier_formatter import memory_formatter
|
||||
|
||||
unified_manager = get_unified_memory_manager()
|
||||
unified_manager = await ensure_unified_memory_manager_initialized()
|
||||
if not unified_manager:
|
||||
logger.warning("[KFC记忆] 管理器未初始化,跳过记忆检索")
|
||||
logger.warning("[KFC记忆] 管理器初始化失败或未启用,跳过记忆检索")
|
||||
return ""
|
||||
|
||||
# 构建查询文本(使用最近多条消息的组合块)
|
||||
|
||||
Reference in New Issue
Block a user