From f5b5c009bf90fd775b53d2ced7f1bc65c8298243 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Thu, 18 Dec 2025 21:01:23 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BD=BF=E7=94=A8chat=5Fmanager?= =?UTF-8?q?=E8=80=8C=E4=B8=8D=E6=98=AF=E8=AE=A1=E7=AE=97cha=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/expression_similarity_analysis.py | 11 +++-------- src/bw_learner/expression_selector.py | 12 ++++-------- src/chat/replyer/private_generator.py | 12 +++--------- 3 files changed, 10 insertions(+), 25 deletions(-) diff --git a/scripts/expression_similarity_analysis.py b/scripts/expression_similarity_analysis.py index a63cdb9a..aa1b149e 100644 --- a/scripts/expression_similarity_analysis.py +++ b/scripts/expression_similarity_analysis.py @@ -22,7 +22,7 @@ sys.path.insert(0, project_root) # Import after setting up path (required for project imports) from src.common.database.database_model import Expression, ChatStreams # noqa: E402 from src.config.config import global_config # noqa: E402 -import hashlib # noqa: E402 +from src.chat.message_receive.chat_stream import get_chat_manager # noqa: E402 class TeeOutput: @@ -57,7 +57,7 @@ class TeeOutput: def _parse_stream_config_to_chat_id(stream_config_str: str) -> str | None: """ - 解析'platform:id:type'为chat_id(与ExpressionSelector中的逻辑一致) + 解析'platform:id:type'为chat_id,直接复用 ChatManager 的逻辑 """ try: parts = stream_config_str.split(":") @@ -67,12 +67,7 @@ def _parse_stream_config_to_chat_id(stream_config_str: str) -> str | None: id_str = parts[1] stream_type = parts[2] is_group = stream_type == "group" - if is_group: - components = [platform, str(id_str)] - else: - components = [platform, str(id_str), "private"] - key = "_".join(components) - return hashlib.md5(key.encode()).hexdigest() + return get_chat_manager().get_stream_id(platform, str(id_str), is_group=is_group) except Exception: return None diff --git a/src/bw_learner/expression_selector.py b/src/bw_learner/expression_selector.py index 1beaba14..4140d102 100644 --- a/src/bw_learner/expression_selector.py +++ b/src/bw_learner/expression_selector.py @@ -1,6 +1,5 @@ import json import time -import hashlib from typing import List, Dict, Optional, Any, Tuple from json_repair import repair_json @@ -11,6 +10,7 @@ from src.common.logger import get_logger from src.common.database.database_model import Expression from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.bw_learner.learner_utils import weighted_sample +from src.chat.message_receive.chat_stream import get_chat_manager logger = get_logger("expression_selector") @@ -67,7 +67,7 @@ class ExpressionSelector: @staticmethod def _parse_stream_config_to_chat_id(stream_config_str: str) -> Optional[str]: - """解析'platform:id:type'为chat_id(与get_stream_id一致)""" + """解析'platform:id:type'为chat_id,直接使用 ChatManager 提供的接口""" try: parts = stream_config_str.split(":") if len(parts) != 3: @@ -76,12 +76,8 @@ class ExpressionSelector: id_str = parts[1] stream_type = parts[2] is_group = stream_type == "group" - if is_group: - components = [platform, str(id_str)] - else: - components = [platform, str(id_str), "private"] - key = "_".join(components) - return hashlib.md5(key.encode()).hexdigest() + # 统一通过 chat_manager 生成 stream_id,避免各处自行实现哈希逻辑 + return get_chat_manager().get_stream_id(platform, str(id_str), is_group=is_group) except Exception: return None diff --git a/src/chat/replyer/private_generator.py b/src/chat/replyer/private_generator.py index a5cb0e13..70fc30e8 100644 --- a/src/chat/replyer/private_generator.py +++ b/src/chat/replyer/private_generator.py @@ -554,16 +554,10 @@ class PrivateReplyer: # 判断是否为群聊 is_group = stream_type == "group" - # 使用与 ChatStream.get_stream_id 相同的逻辑生成 chat_id - import hashlib - - if is_group: - components = [platform, str(id_str)] - else: - components = [platform, str(id_str), "private"] - key = "_".join(components) - chat_id = hashlib.md5(key.encode()).hexdigest() + # 使用 ChatManager 提供的接口生成 chat_id,避免在此重复实现逻辑 + from src.chat.message_receive.chat_stream import get_chat_manager + chat_id = get_chat_manager().get_stream_id(platform, str(id_str), is_group=is_group) return chat_id, prompt_content except (ValueError, IndexError):