From d62e9f0a87bcb4f7e78be1369e62efb895319af6 Mon Sep 17 00:00:00 2001 From: Bakadax Date: Fri, 2 May 2025 06:26:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=20planner=20=E7=9A=84=20prompt=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=B0=E5=8F=B7=E6=B3=A8=E5=85=A5=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20config=20=E9=BB=98=E8=AE=A4=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/config.py | 2 +- src/plugins/heartFC_chat/heartFC_chat.py | 12 ++++++++++++ src/plugins/heartFC_chat/heartflow_prompt_builder.py | 3 +++ template/bot_config_template.toml | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/config/config.py b/src/config/config.py index 88898050..0dbc931a 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -279,7 +279,7 @@ class BotConfig: MAX_NICKNAMES_IN_PROMPT: int = 10 # Prompt 中最多注入的绰号数量 NICKNAME_PROBABILITY_SMOOTHING: int = 1 # 绰号加权随机选择的平滑因子 NICKNAME_QUEUE_MAX_SIZE: int = 100 # 绰号处理队列最大容量 - NICKNAME_PROCESS_SLEEP_INTERVAL: float = 0.5 # 绰号处理进程休眠间隔(秒) + NICKNAME_PROCESS_SLEEP_INTERVAL: float = 5 # 绰号处理进程休眠间隔(秒) # 模型配置 llm_reasoning: dict[str, str] = field(default_factory=lambda: {}) diff --git a/src/plugins/heartFC_chat/heartFC_chat.py b/src/plugins/heartFC_chat/heartFC_chat.py index dcc92ebe..faf34896 100644 --- a/src/plugins/heartFC_chat/heartFC_chat.py +++ b/src/plugins/heartFC_chat/heartFC_chat.py @@ -29,6 +29,8 @@ from src.plugins.moods.moods import MoodManager from src.heart_flow.utils_chat import get_chat_type_and_target_info from rich.traceback import install from src.plugins.group_nickname.nickname_utils import trigger_nickname_analysis_if_needed +from src.plugins.utils.chat_message_builder import get_raw_msg_before_timestamp_with_chat +from src.plugins.group_nickname.nickname_utils import get_nickname_injection_for_prompt install(show_locals=True, extra_lines=3) @@ -865,6 +867,15 @@ class HeartFChatting: f"{self.log_prefix}[Planner] 临时移除的动作: {actions_to_remove_temporarily}, 当前可用: {list(current_available_actions.keys())}" ) + # 需要获取用于上下文的历史消息 + message_list_before_now = get_raw_msg_before_timestamp_with_chat( + chat_id=self.stream_id, + timestamp=time.time(), # 使用当前时间作为参考点 + limit=global_config.observation_context_size, # 使用与 prompt 构建一致的 limit + ) + # 调用工具函数获取格式化后的绰号字符串 + nickname_injection_str = await get_nickname_injection_for_prompt(self.chat_stream, message_list_before_now) + print(nickname_injection_str) # --- 构建提示词 (调用修改后的 PromptBuilder 方法) --- prompt = await prompt_builder.build_planner_prompt( is_group_chat=self.is_group_chat, # <-- Pass HFC state @@ -874,6 +885,7 @@ class HeartFChatting: current_mind=current_mind, # <-- Pass argument structured_info=self.sub_mind.structured_info_str, # <-- Pass SubMind info current_available_actions=current_available_actions, # <-- Pass determined actions + nickname_info=nickname_injection_str, ) # --- 调用 LLM (普通文本生成) --- diff --git a/src/plugins/heartFC_chat/heartflow_prompt_builder.py b/src/plugins/heartFC_chat/heartflow_prompt_builder.py index 44c3a1d0..dc9e43ee 100644 --- a/src/plugins/heartFC_chat/heartflow_prompt_builder.py +++ b/src/plugins/heartFC_chat/heartflow_prompt_builder.py @@ -55,6 +55,7 @@ def init_prompt(): Prompt( """你的名字是{bot_name},{prompt_personality},{chat_context_description}。需要基于以下信息决定如何参与对话: {structured_info_block} +{nickname_info} {chat_content_block} {current_mind_block} {cycle_info_block} @@ -766,6 +767,7 @@ class PromptBuilder: current_mind: Optional[str], structured_info: Dict[str, Any], current_available_actions: Dict[str, str], + nickname_info: str, # replan_prompt: str, # Replan logic still simplified ) -> str: """构建 Planner LLM 的提示词 (获取模板并填充数据)""" @@ -847,6 +849,7 @@ class PromptBuilder: prompt = planner_prompt_template.format( bot_name=global_config.BOT_NICKNAME, + nickname_info=nickname_info, prompt_personality=prompt_personality, chat_context_description=chat_context_description, structured_info_block=structured_info_block, diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index a74e121c..439b6a46 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -128,7 +128,7 @@ enable_nickname_mapping = false # 绰号映射功能总开关(默认关闭, max_nicknames_in_prompt = 10 # Prompt 中最多注入的绰号数量(防止token数量爆炸) nickname_probability_smoothing = 1 # 绰号加权随机选择的平滑因子 nickname_queue_max_size = 100 # 绰号处理队列最大容量 -nickname_process_sleep_interval = 0.5 # 绰号处理进程休眠间隔(秒) +nickname_process_sleep_interval = 5 # 绰号处理进程休眠间隔(秒) [memory] build_memory_interval = 2000 # 记忆构建间隔 单位秒 间隔越低,麦麦学习越多,但是冗余信息也会增多