From 94d3d0ad0556614cc9c4ea3a69fc1f1ba1522402 Mon Sep 17 00:00:00 2001
From: 114514 <2514624910@qq.com>
Date: Wed, 14 May 2025 21:01:30 +0800
Subject: [PATCH] =?UTF-8?q?sub=20mind=E5=8A=A0=E5=85=A5=E7=BB=B0=E5=8F=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Legacy_HFC/heart_flow/sub_mind.py | 24 ++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/experimental/Legacy_HFC/heart_flow/sub_mind.py b/src/experimental/Legacy_HFC/heart_flow/sub_mind.py
index 34f94578..3c8fc80a 100644
--- a/src/experimental/Legacy_HFC/heart_flow/sub_mind.py
+++ b/src/experimental/Legacy_HFC/heart_flow/sub_mind.py
@@ -3,6 +3,7 @@ from src.chat.knowledge.knowledge_lib import qa_manager
from src.chat.models.utils_model import LLMRequest
from src.config.config import global_config
from src.chat.utils.chat_message_builder import get_raw_msg_before_timestamp_with_chat, build_readable_messages
+from src.plugins.group_nickname.nickname_manager import nickname_manager
import time
import re
import traceback
@@ -32,6 +33,10 @@ def init_prompt():
{prompt_personality}
+
+{nickname_info}
+
+
{extra_info}
{relation_prompt}
@@ -561,9 +566,25 @@ class SubMind:
# ---------- 5. 构建最终提示词 ----------
# --- Choose template based on chat type ---
- logger.debug(f"is_group_chat: {is_group_chat}")
+ nickname_injection_str = "" # 初始化为空字符串
+
if is_group_chat:
template_name = "sub_heartflow_prompt_before"
+
+ chat_stream = await chat_manager.get_stream(self.subheartflow_id)
+ if not chat_stream:
+ logger.error(f"{self.log_prefix} 无法获取 chat_stream,无法生成绰号信息。")
+ nickname_injection_str = "[获取群成员绰号信息失败]"
+ else:
+ message_list_for_nicknames = get_raw_msg_before_timestamp_with_chat(
+ chat_id=self.subheartflow_id,
+ timestamp=time.time(),
+ limit=global_config.observation_context_size,
+ )
+ nickname_injection_str = await nickname_manager.get_nickname_prompt_injection(
+ chat_stream, message_list_for_nicknames
+ )
+
prompt = (await global_prompt_manager.get_prompt_async(template_name)).format(
extra_info=self.structured_info_str,
prompt_personality=prompt_personality,
@@ -575,6 +596,7 @@ class SubMind:
hf_do_next=hf_do_next,
last_loop_prompt=last_loop_prompt,
cycle_info_block=cycle_info_block,
+ nickname_info=nickname_injection_str,
# chat_target_name is not used in group prompt
)
else: # Private chat