From 699d71b1f662e25f5c80a9d540dfebc55a1ed0d8 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Mon, 29 Sep 2025 13:36:46 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E5=9C=A8?= =?UTF-8?q?=E6=B5=B7=E9=A9=AC=E4=BD=93=E6=9C=AA=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E6=95=B4=E5=90=88=E8=AE=B0=E5=BF=86=E7=9A=84=E6=BD=9C?= =?UTF-8?q?=E5=9C=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在调用 `integrate_memory` 方法时,如果海马体 (`_hippocampus`) 或其海马旁回 (`parahippocampal_gyrus`) 尚未完全初始化,直接调用其方法会引发错误,导致程序崩溃。 此提交增加了对这些对象的存在性检查,确保只有在它们准备就绪时才执行记忆整合操作,从而提高了系统的健壮性,并为未初始化的情况添加了警告日志。 --- src/chat/memory_system/Hippocampus.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/chat/memory_system/Hippocampus.py b/src/chat/memory_system/Hippocampus.py index 4141b44e0..b46464093 100644 --- a/src/chat/memory_system/Hippocampus.py +++ b/src/chat/memory_system/Hippocampus.py @@ -1697,7 +1697,11 @@ class HippocampusManager: raise RuntimeError("HippocampusManager 尚未初始化,请先调用 initialize 方法") # 使用 operation_build_memory 方法来整合记忆 async with self._db_lock: - return await self._hippocampus.parahippocampal_gyrus.operation_build_memory() + if self._hippocampus and self._hippocampus.parahippocampal_gyrus: + return await self._hippocampus.parahippocampal_gyrus.operation_build_memory() + else: + logger.warning("海马体或海马旁回未初始化,跳过本次记忆整合。") + return None async def get_memory_from_text( self, From 35a4ca3f50be36cb3e6f08775f5b3f7ae53db91f Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:11:05 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E5=9C=A8?= =?UTF-8?q?=E6=B5=B7=E9=A9=AC=E4=BD=93=E6=9C=AA=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E8=B0=83=E7=94=A8=E4=B8=BB=E9=A2=98=E9=81=97=E5=BF=98?= =?UTF-8?q?=E7=9A=84=E6=BD=9C=E5=9C=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在调用 `operation_forget_topic` 方法前增加空值检查,以防止当海马体或其相关组件尚未完全初始化时,调用该方法导致程序崩溃。此更改增强了记忆遗忘操作的健壮性。 --- src/chat/memory_system/Hippocampus.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/chat/memory_system/Hippocampus.py b/src/chat/memory_system/Hippocampus.py index b46464093..0be48bee8 100644 --- a/src/chat/memory_system/Hippocampus.py +++ b/src/chat/memory_system/Hippocampus.py @@ -1689,7 +1689,11 @@ class HippocampusManager: if not self._initialized: raise RuntimeError("HippocampusManager 尚未初始化,请先调用 initialize 方法") async with self._db_lock: - return await self._hippocampus.parahippocampal_gyrus.operation_forget_topic(percentage) + if self._hippocampus and self._hippocampus.parahippocampal_gyrus: + return await self._hippocampus.parahippocampal_gyrus.operation_forget_topic(percentage) + else: + logger.warning("海马体或海马旁回未初始化,跳过本次记忆遗忘。") + return None async def consolidate_memory(self): """整合记忆的公共接口""" From 21b3346bc681dc269e6433f0b3c595108f2d7c20 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:11:45 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E5=9B=A0?= =?UTF-8?q?=E6=B6=88=E6=81=AFID=E9=9D=9E=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AF=BC=E8=87=B4=E7=9A=84=E6=A8=A1=E7=B3=8A?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在ChatterPlanFilter的模糊匹配逻辑中,从消息对象获取的ID(orig_mid)可能为整数或None,而非预期的字符串。 当re.sub接收到非字符串类型的参数时会引发TypeError。此更改通过在处理前显式地将ID转换为字符串,并处理其为None的情况,确保了代码的健壮性,避免了潜在的运行时崩溃。 --- src/plugins/built_in/affinity_flow_chatter/plan_filter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/built_in/affinity_flow_chatter/plan_filter.py b/src/plugins/built_in/affinity_flow_chatter/plan_filter.py index d75ffb574..d179d1e42 100644 --- a/src/plugins/built_in/affinity_flow_chatter/plan_filter.py +++ b/src/plugins/built_in/affinity_flow_chatter/plan_filter.py @@ -765,7 +765,7 @@ class ChatterPlanFilter: message_obj = item.get("message") if isinstance(message_obj, dict): orig_mid = message_obj.get("message_id") or message_obj.get("id") - orig_number = re.sub(r'[^0-9]', '', orig_mid) + orig_number = re.sub(r'[^0-9]', '', str(orig_mid)) if orig_mid else "" if orig_number == number_part: logger.debug(f"模糊匹配成功(消息对象): {candidate} -> {orig_mid}") return message_obj