From 162cb8dba63d128d09ff039798ff6c4e776be868 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Sat, 25 Oct 2025 21:23:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(memory):=20=E4=BF=AE=E5=A4=8D=E8=AE=B0?= =?UTF-8?q?=E5=BF=86=E7=B3=BB=E7=BB=9F=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E7=A1=AE=E4=BF=9D=E5=8D=95=E4=BE=8B=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 先前,记忆系统的初始化流程存在问题,可能导致在不同位置获取到未初始化或多个不同的 MemorySystem 实例,引发潜在的运行时错误。 本次修改统一了应用的启动逻辑,在 main.py 中明确调用 `initialize_memory_system` 来初始化全局唯一的记忆系统实例。 此外,在记忆系统的关键生命周期节点(创建、初始化、获取)添加了详细的日志记录,以便于追踪实例ID,从而在未来能更好地诊断类似问题。 --- src/chat/memory_system/memory_system.py | 10 +++++++++- src/main.py | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/chat/memory_system/memory_system.py b/src/chat/memory_system/memory_system.py index 14235803f..adb7ff355 100644 --- a/src/chat/memory_system/memory_system.py +++ b/src/chat/memory_system/memory_system.py @@ -138,6 +138,7 @@ class MemorySystem: self.config = config or MemorySystemConfig.from_global_config() self.llm_model = llm_model self.status = MemorySystemStatus.INITIALIZING + logger.info(f"MemorySystem __init__ called, id: {id(self)}") # 核心组件(简化版) self.memory_builder: MemoryBuilder | None = None @@ -170,6 +171,7 @@ class MemorySystem: async def initialize(self): """异步初始化记忆系统""" + logger.info(f"MemorySystem initialize started, id: {id(self)}") try: # 初始化LLM模型 fallback_task = getattr(self.llm_model, "model_for_task", None) if self.llm_model else None @@ -287,7 +289,7 @@ class MemorySystem: # 统一存储已经自动加载数据,无需额外加载 self.status = MemorySystemStatus.READY - + logger.info(f"MemorySystem initialize finished, id: {id(self)}") except Exception as e: self.status = MemorySystemStatus.ERROR logger.error(f"❌ 记忆系统初始化失败: {e}", exc_info=True) @@ -1735,15 +1737,21 @@ def get_memory_system() -> MemorySystem: """获取全局记忆系统实例""" global memory_system if memory_system is None: + logger.warning("Global memory_system is None. Creating new uninitialized instance. This might be a problem.") memory_system = MemorySystem() + logger.info(f"get_memory_system() called, returning instance with id: {id(memory_system)}") return memory_system async def initialize_memory_system(llm_model: LLMRequest | None = None): """初始化全局记忆系统""" global memory_system + logger.info("initialize_memory_system() called.") if memory_system is None: + logger.info("Global memory_system is None, creating new instance for initialization.") memory_system = MemorySystem(llm_model=llm_model) + else: + logger.info(f"Global memory_system already exists (id: {id(memory_system)}). Initializing it.") await memory_system.initialize() # 根据配置启动海马体采样 diff --git a/src/main.py b/src/main.py index b4bbbb65b..a7a32b497 100644 --- a/src/main.py +++ b/src/main.py @@ -446,7 +446,9 @@ MoFox_Bot(第三方修改版) # 初始化增强记忆系统 if global_config.memory.enable_memory: - await self._safe_init("增强记忆系统", self.memory_manager.initialize)() + from src.chat.memory_system.memory_system import initialize_memory_system + await self._safe_init("增强记忆系统", initialize_memory_system)() + await self._safe_init("记忆管理器", self.memory_manager.initialize)() else: logger.info("记忆系统已禁用,跳过初始化")