diff --git a/src/memos/mem_feedback/feedback.py b/src/memos/mem_feedback/feedback.py index a5ab28a89..8df04333c 100644 --- a/src/memos/mem_feedback/feedback.py +++ b/src/memos/mem_feedback/feedback.py @@ -1,4 +1,5 @@ import concurrent.futures +import copy import difflib import json import re @@ -331,7 +332,7 @@ def semantics_feedback( current_memories = [ item for item in current_memories if self._info_comparison(item, info, include_keys) ] - + operations = [] if not current_memories: operations = [{"operation": "ADD"}] logger.warning( @@ -371,6 +372,21 @@ def semantics_feedback( operations = self.standard_operations(all_operations, current_memories) + add_texts = [] + final_operations = [] + for item in operations: + if item["operation"].lower() == "add" and "text" in item and item["text"]: + if item["text"] in add_texts: + continue + final_operations.append(item) + add_texts.append(item["text"]) + elif item["operation"].lower() == "update": + final_operations.append(item) + logger.info( + f"[Feedback Core: deduplicate add] {len(operations)} -> {len(final_operations)} memories" + ) + operations = copy.deepcopy(final_operations) + logger.info(f"[Feedback Core Operations]: {operations!s}") if not operations: @@ -621,6 +637,7 @@ def correct_item(data): dehallu_res = [correct_item(item) for item in operations] dehalluded_operations = [item for item in dehallu_res if item] + logger.info(f"[Feedback Core: dehalluded_operations] {dehalluded_operations}") # c add objects add_texts = []