feat(memory): 实现灵活搜索模式并重构记忆格式化系统

- 新增灵活匹配模式(flexible_mode),支持2/4项匹配即可的记忆检索策略
- 删除冗余的memory_formatter模块,简化记忆系统架构
- 增强枚举值解析机制,支持字符串、整数和枚举实例的自动转换
- 优化元数据索引搜索逻辑,分离严格模式和灵活模式的实现路径
- 改进向量存储的搜索回退机制,当元数据筛选无结果时自动回退到全量搜索
- 统一记忆类型映射管理,避免重复的格式化函数定义

这些变更提升了记忆检索的准确性和灵活性,同时简化了代码结构,提高了系统可维护性。
This commit is contained in:
Windpicker-owo
2025-10-02 11:27:06 +08:00
parent 82bb2df369
commit 1f2d7d9ee5
6 changed files with 508 additions and 463 deletions

View File

@@ -18,6 +18,7 @@ from src.individuality.individuality import get_individuality
from src.llm_models.utils_model import LLMRequest
from src.chat.message_receive.message import UserInfo, Seg, MessageRecv, MessageSending
from src.chat.message_receive.chat_stream import ChatStream
from src.chat.utils.memory_mappings import get_memory_type_chinese_label
from src.chat.message_receive.uni_message_sender import HeartFCSender
from src.chat.utils.timer_calculator import Timer
from src.chat.utils.utils import get_chat_type_and_target_info
@@ -621,20 +622,6 @@ class DefaultReplyer:
running_memories = []
instant_memory = ""
def _format_confidence_label(value: Optional[float]) -> str:
if value is None:
return "未知"
mapping = {4: "已验证", 3: "", 2: "中等", 1: "较低"}
rounded = int(value)
return mapping.get(rounded, f"{value:.2f}")
def _format_importance_label(value: Optional[float]) -> str:
if value is None:
return "未知"
mapping = {4: "关键", 3: "", 2: "一般", 1: "较低"}
rounded = int(value)
return mapping.get(rounded, f"{value:.2f}")
# 构建记忆字符串,使用方括号格式
memory_str = ""
has_any_memory = False
@@ -662,16 +649,8 @@ class DefaultReplyer:
logger.debug(f"[记忆构建] 空记忆详情: {running_memory}")
continue
# 映射记忆类型到中文标签
type_mapping = {
"personal_fact": "个人事实",
"preference": "偏好",
"event": "事件",
"opinion": "观点",
"relationship": "个人事实",
"unknown": "未知"
}
chinese_type = type_mapping.get(memory_type, "未知")
# 使用全局记忆类型映射表
chinese_type = get_memory_type_chinese_label(memory_type)
# 提取纯净内容(如果包含旧格式的元数据)
clean_content = content