From a9c29aaf8d419e926a3814d466c9194fe44d8915 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 25 Nov 2025 02:24:55 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=9B=BE=E7=89=87=E4=B8=BA?= =?UTF-8?q?=E8=A2=AB=E6=AD=A3=E5=B8=B8=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jargon/jargon_miner.py | 53 ++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/src/jargon/jargon_miner.py b/src/jargon/jargon_miner.py index 2a7020cc..498a4bee 100644 --- a/src/jargon/jargon_miner.py +++ b/src/jargon/jargon_miner.py @@ -13,6 +13,7 @@ from src.config.config import model_config, global_config from src.chat.message_receive.chat_stream import get_chat_manager from src.plugin_system.apis import llm_api from src.chat.utils.chat_message_builder import ( + build_readable_messages, build_readable_messages_with_id, get_raw_msg_by_timestamp_with_chat_inclusive, get_raw_msg_before_timestamp_with_chat, @@ -45,48 +46,38 @@ def _contains_bot_self_name(content: str) -> bool: return any(name in target for name in candidates if target) -def _format_context_message(msg: Any, seq_index: int) -> str: - """ - 将单条消息格式化为带序号的上下文行 - """ - if msg is None: - return "" - - text = (getattr(msg, "display_message", None) or getattr(msg, "processed_plain_text", None) or "").strip() - if not text: - return "" - - user_info = getattr(msg, "user_info", None) - nickname = "" - if user_info: - nickname = getattr(user_info, "user_nickname", "") or getattr(user_info, "user_id", "") - - if not nickname: - nickname = getattr(msg, "user_nickname", "") or getattr(msg, "user_id", "") or "某人" - - return f"{nickname}: {text}" - - def _build_context_paragraph(messages: List[Any], center_index: int) -> Optional[str]: """ - 构建包含中心消息上下文的段落(前3条+后3条) + 构建包含中心消息上下文的段落(前3条+后3条),使用标准的 readable builder 输出 """ if not messages or center_index < 0 or center_index >= len(messages): return None context_start = max(0, center_index - 3) context_end = min(len(messages), center_index + 1 + 3) + context_messages = messages[context_start:context_end] - context_lines: List[str] = [] - for idx in range(context_start, context_end): - formatted_line = _format_context_message(messages[idx], idx + 1) - if formatted_line: - context_lines.append(formatted_line) - - if not context_lines: + if not context_messages: return None - paragraph = "\n".join(context_lines).strip() + try: + paragraph = build_readable_messages( + messages=context_messages, + replace_bot_name=True, + timestamp_mode="relative", + read_mark=0.0, + truncate=False, + show_actions=False, + show_pic=True, + message_id_list=None, + remove_emoji_stickers=False, + pic_single=True, + ) + except Exception as e: + logger.warning(f"构建上下文段落失败: {e}") + return None + + paragraph = paragraph.strip() return paragraph or None