From a9a8406719ffc75f2766574cb935499d5aded8b8 Mon Sep 17 00:00:00 2001 From: "glin1993@outlook.com" <> Date: Thu, 4 Dec 2025 14:22:42 +0800 Subject: [PATCH 1/2] Drop scheduler messages missing user_name --- src/memos/mem_scheduler/general_scheduler.py | 60 +++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/src/memos/mem_scheduler/general_scheduler.py b/src/memos/mem_scheduler/general_scheduler.py index 46b6aba1f..71a41809c 100644 --- a/src/memos/mem_scheduler/general_scheduler.py +++ b/src/memos/mem_scheduler/general_scheduler.py @@ -168,6 +168,14 @@ def _add_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: # Process each message in the batch for msg in batch: + if not (msg.user_name or "").strip(): + logger.warning( + "[AddConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + msg.user_id, + msg.mem_cube_id, + msg.content, + ) + continue prepared_add_items, prepared_update_items_with_original = ( self.log_add_messages(msg=msg) ) @@ -212,6 +220,14 @@ def _query_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: continue try: for msg in batch: + if not (msg.user_name or "").strip(): + logger.warning( + "[QueryConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + msg.user_id, + msg.mem_cube_id, + msg.content, + ) + continue event = self.create_event_log( label="addMessage", from_memory_type=USER_INPUT_TYPE, @@ -257,6 +273,14 @@ def _answer_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: continue try: for msg in batch: + if not (msg.user_name or "").strip(): + logger.warning( + "[AnswerConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + msg.user_id, + msg.mem_cube_id, + msg.content, + ) + continue event = self.create_event_log( label="addMessage", from_memory_type=USER_INPUT_TYPE, @@ -536,6 +560,14 @@ def _add_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: # Process each message in the batch for msg in batch: + if not (msg.user_name or "").strip(): + logger.warning( + "[AddConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + msg.user_id, + msg.mem_cube_id, + msg.content, + ) + continue prepared_add_items, prepared_update_items_with_original = ( self.log_add_messages(msg=msg) ) @@ -737,7 +769,15 @@ def process_message(message: ScheduleMessageItem): return content = message.content - user_name = message.user_name + user_name = message.user_name or "" + if not user_name: + logger.warning( + "[MemRead] Dropping message with empty user_name; user_id=%s mem_cube_id=%s mem_ids=%s", + user_id, + mem_cube_id, + content, + ) + return info = message.info or {} # Parse the memory IDs from content @@ -1040,7 +1080,15 @@ def process_message(message: ScheduleMessageItem): ) return content = message.content - user_name = message.user_name + user_name = message.user_name or "" + if not user_name: + logger.warning( + "[MemReorganize] Dropping message with empty user_name; user_id=%s mem_cube_id=%s mem_ids=%s", + user_id, + mem_cube_id, + content, + ) + return # Parse the memory IDs from content mem_ids = json.loads(content) if isinstance(content, str) else content @@ -1263,6 +1311,14 @@ def _pref_add_message_consumer(self, messages: list[ScheduleMessageItem]) -> Non def process_message(message: ScheduleMessageItem): try: + if not (message.user_name or "").strip(): + logger.warning( + "[PrefAdd] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + message.user_id, + message.mem_cube_id, + message.content, + ) + return mem_cube = self.current_mem_cube if mem_cube is None: logger.warning( From 6dd0432df1473286c1317805b62ed723aa4f6f55 Mon Sep 17 00:00:00 2001 From: "glin1993@outlook.com" <> Date: Thu, 4 Dec 2025 14:31:19 +0800 Subject: [PATCH 2/2] Drop scheduler messages using default user_name --- src/memos/mem_scheduler/general_scheduler.py | 45 +++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/memos/mem_scheduler/general_scheduler.py b/src/memos/mem_scheduler/general_scheduler.py index 71a41809c..3de62178d 100644 --- a/src/memos/mem_scheduler/general_scheduler.py +++ b/src/memos/mem_scheduler/general_scheduler.py @@ -168,9 +168,12 @@ def _add_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: # Process each message in the batch for msg in batch: - if not (msg.user_name or "").strip(): + if ( + not (msg.user_name or "").strip() + or (msg.user_name or "").strip() == "memosdefault" + ): logger.warning( - "[AddConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + "[AddConsumer] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s content=%s", msg.user_id, msg.mem_cube_id, msg.content, @@ -220,9 +223,12 @@ def _query_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: continue try: for msg in batch: - if not (msg.user_name or "").strip(): + if ( + not (msg.user_name or "").strip() + or (msg.user_name or "").strip() == "memosdefault" + ): logger.warning( - "[QueryConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + "[QueryConsumer] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s content=%s", msg.user_id, msg.mem_cube_id, msg.content, @@ -273,9 +279,12 @@ def _answer_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: continue try: for msg in batch: - if not (msg.user_name or "").strip(): + if ( + not (msg.user_name or "").strip() + or (msg.user_name or "").strip() == "memosdefault" + ): logger.warning( - "[AnswerConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + "[AnswerConsumer] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s content=%s", msg.user_id, msg.mem_cube_id, msg.content, @@ -560,9 +569,12 @@ def _add_message_consumer(self, messages: list[ScheduleMessageItem]) -> None: # Process each message in the batch for msg in batch: - if not (msg.user_name or "").strip(): + if ( + not (msg.user_name or "").strip() + or (msg.user_name or "").strip() == "memosdefault" + ): logger.warning( - "[AddConsumer] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + "[AddConsumer] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s content=%s", msg.user_id, msg.mem_cube_id, msg.content, @@ -769,10 +781,10 @@ def process_message(message: ScheduleMessageItem): return content = message.content - user_name = message.user_name or "" - if not user_name: + user_name = (message.user_name or "").strip() + if not user_name or user_name == "memosdefault": logger.warning( - "[MemRead] Dropping message with empty user_name; user_id=%s mem_cube_id=%s mem_ids=%s", + "[MemRead] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s mem_ids=%s", user_id, mem_cube_id, content, @@ -1080,10 +1092,10 @@ def process_message(message: ScheduleMessageItem): ) return content = message.content - user_name = message.user_name or "" - if not user_name: + user_name = (message.user_name or "").strip() + if not user_name or user_name == "memosdefault": logger.warning( - "[MemReorganize] Dropping message with empty user_name; user_id=%s mem_cube_id=%s mem_ids=%s", + "[MemReorganize] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s mem_ids=%s", user_id, mem_cube_id, content, @@ -1311,9 +1323,10 @@ def _pref_add_message_consumer(self, messages: list[ScheduleMessageItem]) -> Non def process_message(message: ScheduleMessageItem): try: - if not (message.user_name or "").strip(): + user_name = (message.user_name or "").strip() + if not user_name or user_name == "memosdefault": logger.warning( - "[PrefAdd] Dropping message with empty user_name; user_id=%s mem_cube_id=%s content=%s", + "[PrefAdd] Dropping message with empty or default user_name; user_id=%s mem_cube_id=%s content=%s", message.user_id, message.mem_cube_id, message.content,