fix: 记忆提取添加末尾逗号

This commit is contained in:
2025-12-06 07:53:10 +08:00
parent 1667bdc4c0
commit 42293a2b39

View File

@@ -187,8 +187,8 @@ class ShortTermMemoryManager:
"importance": 0.7, "importance": 0.7,
"attributes": {{ "attributes": {{
"time": "时间信息", "time": "时间信息",
"attribute1": "其他属性1" "attribute1": "其他属性1",
"attribute2": "其他属性2" "attribute2": "其他属性2",
... ...
}} }}
}} }}
@@ -327,7 +327,7 @@ class ShortTermMemoryManager:
# 创建决策对象 # 创建决策对象
# 将 LLM 返回的大写操作名转换为小写(适配枚举定义) # 将 LLM 返回的大写操作名转换为小写(适配枚举定义)
operation_str = data.get("operation", "CREATE_NEW").lower() operation_str = data.get("operation", "CREATE_NEW").lower()
decision = ShortTermDecision( decision = ShortTermDecision(
operation=ShortTermOperation(operation_str), operation=ShortTermOperation(operation_str),
target_memory_id=data.get("target_memory_id"), target_memory_id=data.get("target_memory_id"),
@@ -597,35 +597,35 @@ class ShortTermMemoryManager:
# 1. 正常筛选:重要性达标的记忆 # 1. 正常筛选:重要性达标的记忆
candidates = [mem for mem in self.memories if mem.importance >= self.transfer_importance_threshold] candidates = [mem for mem in self.memories if mem.importance >= self.transfer_importance_threshold]
candidate_ids = {mem.id for mem in candidates} candidate_ids = {mem.id for mem in candidates}
# 2. 检查低重要性记忆是否积压 # 2. 检查低重要性记忆是否积压
# 剩余的都是低重要性记忆 # 剩余的都是低重要性记忆
low_importance_memories = [mem for mem in self.memories if mem.id not in candidate_ids] low_importance_memories = [mem for mem in self.memories if mem.id not in candidate_ids]
# 如果低重要性记忆数量超过了上限(说明积压严重) # 如果低重要性记忆数量超过了上限(说明积压严重)
# 我们需要清理掉一部分,而不是转移它们 # 我们需要清理掉一部分,而不是转移它们
if len(low_importance_memories) > self.max_memories: if len(low_importance_memories) > self.max_memories:
# 目标保留数量(降至上限的 90% # 目标保留数量(降至上限的 90%
target_keep_count = int(self.max_memories * 0.9) target_keep_count = int(self.max_memories * 0.9)
num_to_remove = len(low_importance_memories) - target_keep_count num_to_remove = len(low_importance_memories) - target_keep_count
if num_to_remove > 0: if num_to_remove > 0:
# 按创建时间排序,删除最早的 # 按创建时间排序,删除最早的
low_importance_memories.sort(key=lambda x: x.created_at) low_importance_memories.sort(key=lambda x: x.created_at)
to_remove = low_importance_memories[:num_to_remove] to_remove = low_importance_memories[:num_to_remove]
for mem in to_remove: for mem in to_remove:
if mem in self.memories: if mem in self.memories:
self.memories.remove(mem) self.memories.remove(mem)
logger.info( logger.info(
f"短期记忆清理: 移除了 {len(to_remove)} 条低重要性记忆 " f"短期记忆清理: 移除了 {len(to_remove)} 条低重要性记忆 "
f"(保留 {len(self.memories)} 条)" f"(保留 {len(self.memories)} 条)"
) )
# 触发保存 # 触发保存
asyncio.create_task(self._save_to_disk()) asyncio.create_task(self._save_to_disk())
return candidates return candidates
async def clear_transferred_memories(self, memory_ids: list[str]) -> None: async def clear_transferred_memories(self, memory_ids: list[str]) -> None: