新增强制私聊专注模式配置,优化专注模式切换逻辑,确保在私聊时能正确管理能量值和专注状态。

This commit is contained in:
minecraft1024a
2025-08-13 11:00:27 +08:00
committed by Windpicker-owo
parent 7f3bc79f8a
commit c586a5ae40
3 changed files with 27 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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 大概率回复