refactor(memory): 优化类型注解并增强代码健壮性
- 为 `MemorySystem` 类中的核心组件属性添加 `| None` 类型注解,使其更精确地反映其可能为 `None` 的初始状态。 - 在 `_collect_candidates_by_fingerprint` 方法中,为异常捕获添加 `noqa: PERF203` 以忽略特定的性能警告。 - 在 `rebuild_all_memory_vectors` 方法中,增加对 `self.unified_storage` 是否存在的检查,防止在未初始化时出现 `AttributeError`。
This commit is contained in:
committed by
Windpicker-owo
parent
cd84373828
commit
71bcb7bc11
@@ -33,9 +33,10 @@ from src.llm_models.utils_model import LLMRequest
|
|||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from src.chat.memory_system.memory_forgetting_engine import MemoryForgettingEngine
|
from src.chat.memory_system.memory_forgetting_engine import MemoryForgettingEngine
|
||||||
|
from src.chat.memory_system.vector_memory_storage_v2 import VectorMemoryStorage
|
||||||
from src.common.data_models.database_data_model import DatabaseMessages
|
from src.common.data_models.database_data_model import DatabaseMessages
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger("memory_system")
|
||||||
|
|
||||||
# 全局记忆作用域(共享记忆库)
|
# 全局记忆作用域(共享记忆库)
|
||||||
GLOBAL_MEMORY_SCOPE = "global"
|
GLOBAL_MEMORY_SCOPE = "global"
|
||||||
@@ -135,15 +136,15 @@ class MemorySystem:
|
|||||||
self.status = MemorySystemStatus.INITIALIZING
|
self.status = MemorySystemStatus.INITIALIZING
|
||||||
|
|
||||||
# 核心组件(简化版)
|
# 核心组件(简化版)
|
||||||
self.memory_builder: MemoryBuilder = None
|
self.memory_builder: MemoryBuilder | None = None
|
||||||
self.fusion_engine: MemoryFusionEngine = None
|
self.fusion_engine: MemoryFusionEngine | None = None
|
||||||
self.unified_storage = None # 统一存储系统
|
self.unified_storage: VectorMemoryStorage | None = None # 统一存储系统
|
||||||
self.query_planner: MemoryQueryPlanner = None
|
self.query_planner: MemoryQueryPlanner | None = None
|
||||||
self.forgetting_engine: MemoryForgettingEngine | None = None
|
self.forgetting_engine: MemoryForgettingEngine | None = None
|
||||||
|
|
||||||
# LLM模型
|
# LLM模型
|
||||||
self.value_assessment_model: LLMRequest = None
|
self.value_assessment_model: LLMRequest | None = None
|
||||||
self.memory_extraction_model: LLMRequest = None
|
self.memory_extraction_model: LLMRequest | None = None
|
||||||
|
|
||||||
# 统计信息
|
# 统计信息
|
||||||
self.total_memories = 0
|
self.total_memories = 0
|
||||||
@@ -478,7 +479,7 @@ class MemorySystem:
|
|||||||
existing_id = self._memory_fingerprints.get(fingerprint_key)
|
existing_id = self._memory_fingerprints.get(fingerprint_key)
|
||||||
if existing_id and existing_id not in new_memory_ids:
|
if existing_id and existing_id not in new_memory_ids:
|
||||||
candidate_ids.add(existing_id)
|
candidate_ids.add(existing_id)
|
||||||
except Exception as exc:
|
except Exception as exc: # noqa: PERF203
|
||||||
logger.debug("构建记忆指纹失败,跳过候选收集: %s", exc)
|
logger.debug("构建记忆指纹失败,跳过候选收集: %s", exc)
|
||||||
|
|
||||||
# 基于主体索引的候选(使用统一存储)
|
# 基于主体索引的候选(使用统一存储)
|
||||||
@@ -842,7 +843,7 @@ class MemorySystem:
|
|||||||
for i, (mem, score, details) in enumerate(scored_memories[:3], 1):
|
for i, (mem, score, details) in enumerate(scored_memories[:3], 1):
|
||||||
try:
|
try:
|
||||||
summary = mem.content[:60] if hasattr(mem, "content") and mem.content else ""
|
summary = mem.content[:60] if hasattr(mem, "content") and mem.content else ""
|
||||||
except:
|
except Exception:
|
||||||
summary = ""
|
summary = ""
|
||||||
logger.info(
|
logger.info(
|
||||||
f" #{i} | final={details['final']:.3f} "
|
f" #{i} | final={details['final']:.3f} "
|
||||||
@@ -1439,8 +1440,8 @@ class MemorySystem:
|
|||||||
context_keywords = context.get("keywords") or []
|
context_keywords = context.get("keywords") or []
|
||||||
keyword_overlap = 0.0
|
keyword_overlap = 0.0
|
||||||
if context_keywords:
|
if context_keywords:
|
||||||
memory_keywords = set(k.lower() for k in memory.keywords)
|
memory_keywords = {k.lower() for k in memory.keywords}
|
||||||
keyword_overlap = len(memory_keywords & set(k.lower() for k in context_keywords)) / max(
|
keyword_overlap = len(memory_keywords & {k.lower() for k in context_keywords}) / max(
|
||||||
len(context_keywords), 1
|
len(context_keywords), 1
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1552,12 +1553,13 @@ class MemorySystem:
|
|||||||
|
|
||||||
# 收集需要重建向量的记忆
|
# 收集需要重建向量的记忆
|
||||||
memories_to_rebuild = []
|
memories_to_rebuild = []
|
||||||
for memory_id, memory in self.unified_storage.memory_cache.items():
|
if self.unified_storage:
|
||||||
# 检查记忆是否有有效的 display 文本
|
for memory in self.unified_storage.memory_cache.values():
|
||||||
if memory.display and memory.display.strip():
|
# 检查记忆是否有有效的 display 文本
|
||||||
memories_to_rebuild.append(memory)
|
if memory.display and memory.display.strip():
|
||||||
elif memory.text_content and memory.text_content.strip():
|
memories_to_rebuild.append(memory)
|
||||||
memories_to_rebuild.append(memory)
|
elif memory.text_content and memory.text_content.strip():
|
||||||
|
memories_to_rebuild.append(memory)
|
||||||
|
|
||||||
if not memories_to_rebuild:
|
if not memories_to_rebuild:
|
||||||
logger.warning("没有找到可重建向量的记忆")
|
logger.warning("没有找到可重建向量的记忆")
|
||||||
|
|||||||
Reference in New Issue
Block a user