mirror of https://github.com/Mai-with-u/MaiBot.git
默认关闭绰号系统,prompt注入
parent
561f0c81f8
commit
14b63958e4
|
|
@ -1,8 +1,7 @@
|
|||
# GroupNickname/config.py
|
||||
import threading
|
||||
|
||||
# 功能总开关
|
||||
ENABLE_NICKNAME_MAPPING = True # 设置为 False 可完全禁用此功能
|
||||
ENABLE_NICKNAME_MAPPING = False # 设置为 False 可完全禁用此功能
|
||||
|
||||
# --- LLM 相关配置 (示例,你需要根据实际情况修改) ---
|
||||
# 用于绰号映射分析的 LLM 模型配置
|
||||
|
|
|
|||
|
|
@ -751,17 +751,8 @@ class HeartFChatting:
|
|||
user_name_map = {}
|
||||
if user_ids_in_history:
|
||||
platform = anchor_message.chat_stream.platform
|
||||
# 尝试批量获取 person_name
|
||||
# 假设 relationship_manager 有 get_person_names_batch(platform, user_ids)
|
||||
try:
|
||||
# 注意:你需要实现 get_person_names_batch 方法
|
||||
# names_data = await relationship_manager.get_person_names_batch(platform, list(user_ids_in_history))
|
||||
# 这里暂时用单次获取代替,如果你的 relationship_manager 没有批量方法
|
||||
names_data = {}
|
||||
for user_id in user_ids_in_history:
|
||||
name = await relationship_manager.get_person_name(platform, user_id)
|
||||
if name:
|
||||
names_data[user_id] = name
|
||||
names_data = await relationship_manager.get_person_names_batch(platform, list(user_ids_in_history))
|
||||
|
||||
except AttributeError:
|
||||
logger.warning("relationship_manager does not have get_person_names_batch method. Falling back to single lookups.")
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ from ..moods.moods import MoodManager
|
|||
from ..memory_system.Hippocampus import HippocampusManager
|
||||
from ..schedule.schedule_generator import bot_schedule
|
||||
from ..knowledge.knowledge_lib import qa_manager
|
||||
from src.plugins.group_nickname.config import ENABLE_NICKNAME_MAPPING
|
||||
from src.plugins.group_nickname.nickname_utils import select_nicknames_for_prompt, format_nickname_prompt_injection
|
||||
from src.plugins.person_info.relationship_manager import relationship_manager
|
||||
|
||||
logger = get_logger("prompt")
|
||||
|
||||
|
|
@ -222,6 +225,44 @@ class PromptBuilder:
|
|||
|
||||
logger.debug("开始构建prompt")
|
||||
|
||||
# --- [修改] 注入绰号信息 ---
|
||||
nickname_injection_str = ""
|
||||
if ENABLE_NICKNAME_MAPPING and chat_stream.group_info:
|
||||
try:
|
||||
group_id = str(chat_stream.group_info.group_id)
|
||||
# 提取上下文中的用户 ID (需要 message_list_before_now 变量在此可用)
|
||||
# 假设 message_list_before_now 在此函数作用域内可用
|
||||
user_ids_in_context = set()
|
||||
# !!! 注意: 确保 message_list_before_now 在这里是可访问的 !!!
|
||||
# 如果不是,你需要从 chat_stream 或其他地方重新获取或传递它
|
||||
# 假设 message_list_before_now 存在
|
||||
if 'message_list_before_now' in locals() or 'message_list_before_now' in globals():
|
||||
for msg in message_list_before_now:
|
||||
sender_id = msg.get('sender_id')
|
||||
if sender_id:
|
||||
user_ids_in_context.add(str(sender_id))
|
||||
else:
|
||||
logger.warning("Variable 'message_list_before_now' not found for nickname injection in focus prompt.")
|
||||
|
||||
|
||||
if user_ids_in_context:
|
||||
platform = chat_stream.platform
|
||||
# --- 调用批量获取群组绰号的方法 ---
|
||||
all_nicknames_data = await relationship_manager.get_users_group_nicknames(
|
||||
platform, list(user_ids_in_context), group_id
|
||||
)
|
||||
# --- 结束调用 ---
|
||||
|
||||
if all_nicknames_data:
|
||||
selected_nicknames = select_nicknames_for_prompt(all_nicknames_data)
|
||||
nickname_injection_str = format_nickname_prompt_injection(selected_nicknames)
|
||||
if nickname_injection_str:
|
||||
logger.debug(f"Injecting nickname info into focus prompt:\n{nickname_injection_str}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error getting or formatting nickname info for focus prompt: {e}", exc_info=True)
|
||||
# --- [结束修改] ---
|
||||
|
||||
prompt = await global_prompt_manager.format_prompt(
|
||||
"heart_flow_prompt",
|
||||
info_from_tools=structured_info_prompt,
|
||||
|
|
|
|||
Loading…
Reference in New Issue