From c586a5ae407683abd4f33c8ff66adaa2c5306dda Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Wed, 13 Aug 2025 11:00:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BC=BA=E5=88=B6=E7=A7=81?= =?UTF-8?q?=E8=81=8A=E4=B8=93=E6=B3=A8=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=B8=93=E6=B3=A8=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E5=9C=A8=E7=A7=81=E8=81=8A=E6=97=B6=E8=83=BD=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=83=BD=E9=87=8F=E5=80=BC=E5=92=8C=E4=B8=93?= =?UTF-8?q?=E6=B3=A8=E7=8A=B6=E6=80=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/chat_loop/heartFC_chat.py | 16 ++++++++++++++++ src/config/official_configs.py | 3 +++ template/bot_config_template.toml | 9 ++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index 92625b76e..1d5497494 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -341,6 +341,15 @@ class HeartFChatting: self.energy_value += 1 / global_config.chat.focus_value self._log_energy_change("能量值增加") + # 检查是否应该退出专注模式 + # 如果开启了强制私聊专注模式且当前为私聊,则不允许退出专注状态 + is_private_chat = self.chat_stream.group_info is None + if global_config.chat.force_focus_private and is_private_chat: + # 强制私聊专注模式下,保持专注状态,但重置能量值防止过低 + if self.energy_value <= 1: + self.energy_value = 5 # 重置为较低但足够的能量值 + return True + if self.energy_value <= 1: self.energy_value = 1 self.loop_mode = ChatMode.NORMAL @@ -348,6 +357,13 @@ class HeartFChatting: return True elif self.loop_mode == ChatMode.NORMAL: + # 检查是否应该强制进入专注模式(私聊且开启强制专注) + is_private_chat = self.chat_stream.group_info is None + if global_config.chat.force_focus_private and is_private_chat: + self.loop_mode = ChatMode.FOCUS + self.energy_value = 10 # 设置初始能量值 + return True + if global_config.chat.focus_value != 0: if new_message_count > 3 / pow(global_config.chat.focus_value, 0.5): self.loop_mode = ChatMode.FOCUS diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 1eb216925..f282e7341 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -209,6 +209,9 @@ class ChatConfig(ConfigBase): return self.focus_value + force_focus_private: bool = False + """是否强制私聊进入专注模式,开启后私聊将始终保持专注状态""" + def get_current_talk_frequency(self, chat_stream_id: Optional[str] = None) -> float: """ 根据当前时间和聊天流获取对应的 talk_frequency diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 09fa555e0..849b9f005 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -92,7 +92,14 @@ focus_value = 1 # 麦麦的专注思考能力,越高越容易专注,可能消耗更多token # 专注时能更好把握发言时机,能够进行持久的连续对话 -max_context_size = 20 # 上下文长度 +talk_frequency = 1 # 麦麦活跃度,越高,麦麦回复越频繁 + +# 强制私聊专注模式 +force_focus_private = false # 是否强制私聊进入专注模式,开启后私聊将始终保持专注状态 + +max_context_size = 25 # 上下文长度 +thinking_timeout = 40 # 麦麦一次回复最长思考规划时间,超过这个时间的思考会放弃(往往是api反应太慢) +replyer_random_probability = 0.5 # 首要replyer模型被选择的概率 mentioned_bot_inevitable_reply = true # 提及 bot 大概率回复 at_bot_inevitable_reply = true # @bot 或 提及bot 大概率回复