feat(memory-graph): 完成 Phase 3 - 记忆管理器
Phase 3 实现内容: - MemoryManager: 统一的记忆管理接口 * 完整的 CRUD 操作 * 多策略检索(语义+类型+重要性+时间+遗忘状态过滤) * 记忆关联管理 - 记忆生命周期管理: * 激活机制:时间衰减 + 访问计数 + 激活传播 * 遗忘机制:手动遗忘 + 自动遗忘(基于激活度) * 激活度计算:考虑上次访问时间的衰减 - 系统维护: * 定期维护任务 * 统计信息(总记忆、节点、边、激活度等) * 数据持久化和加载 - GraphStore 增强: * 添加 get_all_memories() 方法 修复问题: - search_memories: 修复记忆ID字段名(memory_id vs id) - 搜索现在正确返回记忆对象 测试结果 (test_manager.py): 初始化: 组件整合成功 CRUD: 创建3条记忆,更新重要性 关联: 建立2个记忆关系(导致、引用) 搜索: 找到3条记忆,类型/重要性过滤工作 激活: 激活度 00.81.0,访问次数统计 遗忘: 手动+自动遗忘,搜索正确过滤 统计: 4条记忆,17节点,18边,激活度0.333 维护: 自动遗忘和保存 持久化: 关闭后重新加载,数据完整 下一步: 整合到主系统,添加 MCP 工具接口
This commit is contained in:
@@ -387,7 +387,16 @@ class MemoryTools:
|
||||
memory_ids = set()
|
||||
for node_id, similarity, metadata in similar_nodes:
|
||||
if "memory_ids" in metadata:
|
||||
memory_ids.update(metadata["memory_ids"])
|
||||
ids = metadata["memory_ids"]
|
||||
# 确保是列表
|
||||
if isinstance(ids, str):
|
||||
import json
|
||||
try:
|
||||
ids = json.loads(ids)
|
||||
except:
|
||||
ids = [ids]
|
||||
if isinstance(ids, list):
|
||||
memory_ids.update(ids)
|
||||
|
||||
# 4. 获取完整记忆
|
||||
memories = []
|
||||
@@ -463,10 +472,25 @@ class MemoryTools:
|
||||
|
||||
# 获取最相似节点关联的记忆
|
||||
node_id, similarity, metadata = similar_nodes[0]
|
||||
if "memory_ids" in metadata and metadata["memory_ids"]:
|
||||
memory_id = metadata["memory_ids"][0]
|
||||
|
||||
if "memory_ids" not in metadata or not metadata["memory_ids"]:
|
||||
return None
|
||||
|
||||
ids = metadata["memory_ids"]
|
||||
|
||||
# 确保是列表
|
||||
if isinstance(ids, str):
|
||||
import json
|
||||
try:
|
||||
ids = json.loads(ids)
|
||||
except Exception as e:
|
||||
logger.warning(f"JSON 解析失败: {e}")
|
||||
ids = [ids]
|
||||
|
||||
if isinstance(ids, list) and ids:
|
||||
memory_id = ids[0]
|
||||
return self.graph_store.get_memory_by_id(memory_id)
|
||||
|
||||
|
||||
return None
|
||||
|
||||
def _summarize_memory(self, memory: Memory) -> str:
|
||||
|
||||
Reference in New Issue
Block a user