diff --git a/src/chat/heart_flow/heartFC_chat.py b/src/chat/heart_flow/heartFC_chat.py index c58fc871..0c5cd23f 100644 --- a/src/chat/heart_flow/heartFC_chat.py +++ b/src/chat/heart_flow/heartFC_chat.py @@ -109,7 +109,7 @@ class HeartFChatting: self.last_read_time = time.time() - 10 - + self.talk_threshold = global_config.chat.talk_value self.no_reply_until_call = False @@ -172,6 +172,16 @@ class HeartFChatting: f"耗时: {self._current_cycle_detail.end_time - self._current_cycle_detail.start_time:.1f}秒" # type: ignore + (f"\n详情: {'; '.join(timer_strings)}" if timer_strings else "") ) + + def get_talk_threshold(self): + talk_value = global_config.chat.talk_value + # 处理talk_value:取整数部分和小数部分 + base_value = int(talk_value) + probability = talk_value - base_value + # 根据概率决定是否+1 + think_len = base_value + 1 if random.random() < probability else base_value + self.talk_threshold = think_len + logger.info(f"{self.log_prefix} 思考频率阈值: {self.talk_threshold}") async def _loopbody(self): recent_messages_list = message_api.get_messages_by_time_in_chat( @@ -184,7 +194,7 @@ class HeartFChatting: filter_command=True, ) - if recent_messages_list: + if len(recent_messages_list) >= self.talk_threshold: # !处理no_reply_until_call逻辑 if self.no_reply_until_call: @@ -203,6 +213,7 @@ class HeartFChatting: await self._observe( recent_messages_list=recent_messages_list, ) + self.get_talk_threshold() else: # Normal模式:消息数量不足,等待 await asyncio.sleep(0.2) diff --git a/src/chat/heart_flow/heartflow_message_processor.py b/src/chat/heart_flow/heartflow_message_processor.py index 326d7516..7e5527ac 100644 --- a/src/chat/heart_flow/heartflow_message_processor.py +++ b/src/chat/heart_flow/heartflow_message_processor.py @@ -6,7 +6,6 @@ import traceback from typing import Tuple, TYPE_CHECKING from src.config.config import global_config -from src.chat.memory_system.Hippocampus import hippocampus_manager from src.chat.message_receive.message import MessageRecv from src.chat.message_receive.storage import MessageStorage from src.chat.heart_flow.heartflow import heartflow @@ -38,16 +37,16 @@ async def _calculate_interest(message: MessageRecv) -> Tuple[float, list[str]]: is_mentioned, is_at, reply_probability_boost = is_mentioned_bot_in_message(message) interested_rate = 0.0 - - with Timer("记忆激活"): - interested_rate, keywords, keywords_lite = await hippocampus_manager.get_activate_from_text( - message.processed_plain_text, - max_depth=4, - fast_retrieval=global_config.chat.interest_rate_mode == "fast", - ) - message.key_words = keywords - message.key_words_lite = keywords_lite - logger.debug(f"记忆激活率: {interested_rate:.2f}, 关键词: {keywords}") + keywords = [] + # with Timer("记忆激活"): + # interested_rate, keywords, keywords_lite = await hippocampus_manager.get_activate_from_text( + # message.processed_plain_text, + # max_depth=4, + # fast_retrieval=global_config.chat.interest_rate_mode == "fast", + # ) + # message.key_words = keywords + # message.key_words_lite = keywords_lite + # logger.debug(f"记忆激活率: {interested_rate:.2f}, 关键词: {keywords}") text_len = len(message.processed_plain_text) # 根据文本长度分布调整兴趣度,采用分段函数实现更精确的兴趣度计算 diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index b7a921c4..c8278dac 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -25,7 +25,7 @@ from src.chat.utils.chat_message_builder import ( replace_user_references, ) from src.chat.express.expression_selector import expression_selector -from src.chat.memory_system.memory_activator import MemoryActivator +# from src.chat.memory_system.memory_activator import MemoryActivator from src.mood.mood_manager import mood_manager from src.person_info.person_info import Person, is_person_known from src.plugin_system.base.component_types import ActionInfo, EventType @@ -143,7 +143,7 @@ class DefaultReplyer: self.chat_stream = chat_stream self.is_group_chat, self.chat_target_info = get_chat_type_and_target_info(self.chat_stream.stream_id) self.heart_fc_sender = UniversalMessageSender() - self.memory_activator = MemoryActivator() + # self.memory_activator = MemoryActivator() from src.plugin_system.core.tool_use import ToolExecutor # 延迟导入ToolExecutor,不然会循环依赖 @@ -1019,9 +1019,6 @@ class DefaultReplyer: async def llm_generate_content(self, prompt: str): with Timer("LLM生成", {}): # 内部计时器,可选保留 # 直接使用已初始化的模型实例 - logger.info(f"使用模型集生成回复: {', '.join(map(str, self.express_model.model_for_task.model_list))}") - - logger.info(f"\n{prompt}\n") if global_config.debug.show_prompt: logger.info(f"\n{prompt}\n") diff --git a/src/config/config.py b/src/config/config.py index 97c98737..7bbba35e 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -18,7 +18,6 @@ from src.config.official_configs import ( ExpressionConfig, ChatConfig, EmojiConfig, - MemoryConfig, MoodConfig, KeywordReactionConfig, ChineseTypoConfig, @@ -347,7 +346,6 @@ class Config(ConfigBase): message_receive: MessageReceiveConfig emoji: EmojiConfig expression: ExpressionConfig - memory: MemoryConfig mood: MoodConfig keyword_reaction: KeywordReactionConfig chinese_typo: ChineseTypoConfig diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 3da87dee..b4cdc844 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -77,6 +77,9 @@ class ChatConfig(ConfigBase): talk_frequency: float = 0.5 """回复频率阈值""" + + talk_value: float = 1 + """思考频率""" # 合并后的时段频率配置 talk_frequency_adjust: list[list[str]] = field(default_factory=lambda: []) @@ -321,26 +324,6 @@ class EmojiConfig(ConfigBase): """表情包过滤要求""" -@dataclass -class MemoryConfig(ConfigBase): - """记忆配置类""" - - enable_memory: bool = True - """是否启用记忆系统""" - - forget_memory_interval: int = 1500 - """记忆遗忘间隔(秒)""" - - memory_forget_time: int = 24 - """记忆遗忘时间(小时)""" - - memory_forget_percentage: float = 0.01 - """记忆遗忘比例""" - - memory_ban_words: list[str] = field(default_factory=lambda: ["表情包", "图片", "回复", "聊天记录"]) - """不允许记忆的词列表""" - - @dataclass class MoodConfig(ConfigBase): """情绪配置类""" diff --git a/src/main.py b/src/main.py index 7e14ff7f..2f33818e 100644 --- a/src/main.py +++ b/src/main.py @@ -23,10 +23,6 @@ from src.plugin_system.core.plugin_manager import plugin_manager # 导入消息API和traceback模块 from src.common.message import get_global_api -# 条件导入记忆系统 -if global_config.memory.enable_memory: - from src.chat.memory_system.Hippocampus import hippocampus_manager - # 插件系统现在使用统一的插件加载器 install(extra_lines=3) @@ -36,10 +32,6 @@ logger = get_logger("main") class MainSystem: def __init__(self): - # 根据配置条件性地初始化记忆系统 - self.hippocampus_manager = None - if global_config.memory.enable_memory: - self.hippocampus_manager = hippocampus_manager # 使用消息API替代直接的FastAPI实例 self.app: MessageServer = get_global_api() @@ -101,13 +93,13 @@ class MainSystem: logger.info("聊天管理器初始化成功") - # 根据配置条件性地初始化记忆系统 - if global_config.memory.enable_memory: - if self.hippocampus_manager: - self.hippocampus_manager.initialize() - logger.info("记忆系统初始化成功") - else: - logger.info("记忆系统已禁用,跳过初始化") + # # 根据配置条件性地初始化记忆系统 + # if global_config.memory.enable_memory: + # if self.hippocampus_manager: + # self.hippocampus_manager.initialize() + # logger.info("记忆系统初始化成功") + # else: + # logger.info("记忆系统已禁用,跳过初始化") # await asyncio.sleep(0.5) #防止logger输出飞了 @@ -139,14 +131,14 @@ class MainSystem: ] # 根据配置条件性地添加记忆系统相关任务 - if global_config.memory.enable_memory and self.hippocampus_manager: - tasks.extend( - [ - # 移除记忆构建的定期调用,改为在heartFC_chat.py中调用 - # self.build_memory_task(), - self.forget_memory_task(), - ] - ) + # if global_config.memory.enable_memory and self.hippocampus_manager: + # tasks.extend( + # [ + # # 移除记忆构建的定期调用,改为在heartFC_chat.py中调用 + # # self.build_memory_task(), + # self.forget_memory_task(), + # ] + # ) await asyncio.gather(*tasks) diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 3ea64bc3..726d6fe2 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "6.9.0" +version = "6.10.1" #----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读---- #如果你想要修改配置文件,请递增version的值 @@ -50,48 +50,9 @@ expression_groups = [ [chat] #麦麦的聊天设置 -talk_frequency = 0.5 -# 麦麦活跃度,越高,麦麦越容易回复,范围0-1 -focus_value = 0.5 -# 麦麦的专注度,越高越容易持续连续对话,可能消耗更多token, 范围0-1 - -mentioned_bot_reply = 1 # 提及时,回复概率增幅,1为100%回复,0为不额外增幅 -at_bot_inevitable_reply = 1 # at时,回复概率增幅,1为100%回复,0为不额外增幅 - +talk_value = 1.5 max_context_size = 20 # 上下文长度 -planner_size = 3.5 # 副规划器大小,越小,麦麦的动作执行能力越精细,但是消耗更多token,调大可以缓解429类错误 - -focus_value_adjust = [ - ["", "8:00,1", "12:00,0.8", "18:00,1", "01:00,0.3"], - ["qq:114514:group", "12:20,0.6", "16:10,0.5", "20:10,0.8", "00:10,0.3"], - ["qq:1919810:private", "8:20,0.5", "12:10,0.8", "20:10,1", "00:10,0.2"] -] - -talk_frequency_adjust = [ - ["", "8:00,0.5", "12:00,0.6", "18:00,0.8", "01:00,0.3"], - ["qq:114514:group", "12:20,0.3", "16:10,0.5", "20:10,0.4", "00:10,0.1"], - ["qq:1919810:private", "8:20,0.3", "12:10,0.4", "20:10,0.5", "00:10,0.1"] -] -# 基于聊天流的个性化活跃度和专注度配置 -# 格式:[["platform:chat_id:type", "HH:MM,frequency", "HH:MM,frequency", ...], ...] - -# 全局配置示例: -# [["", "8:00,1", "12:00,2", "18:00,1.5", "00:00,0.5"]] - -# 特定聊天流配置示例: -# [ -# ["", "8:00,1", "12:00,1.2", "18:00,1.5", "01:00,0.6"], # 全局默认配置 -# ["qq:1026294844:group", "12:20,1", "16:10,2", "20:10,1", "00:10,0.3"], # 特定群聊配置 -# ["qq:729957033:private", "8:20,1", "12:10,2", "20:10,1.5", "00:10,0.2"] # 特定私聊配置 -# ] - -# 说明: -# - 当第一个元素为空字符串""时,表示全局默认配置 -# - 当第一个元素为"platform:id:type"格式时,表示特定聊天流配置 -# - 后续元素是"时间,频率"格式,表示从该时间开始使用该活跃度,直到下一个时间点 -# - 优先级:特定聊天流配置 > 全局配置 > 默认 talk_frequency - [relationship] enable_relationship = true # 是否启用关系系统 @@ -112,15 +73,6 @@ steal_emoji = true # 是否偷取表情包,让麦麦可以将一些表情包 content_filtration = false # 是否启用表情包过滤,只有符合该要求的表情包才会被保存 filtration_prompt = "符合公序良俗" # 表情包过滤要求,只有符合该要求的表情包才会被保存 -[memory] -enable_memory = true # 是否启用记忆系统 -forget_memory_interval = 1500 # 记忆遗忘间隔 单位秒 间隔越低,麦麦遗忘越频繁,记忆更精简,但更难学习 -memory_forget_time = 48 #多长时间后的记忆会被遗忘 单位小时 -memory_forget_percentage = 0.008 # 记忆遗忘比例 控制记忆遗忘程度 越大遗忘越多 建议保持默认 - -#不希望记忆的词,已经记忆的不会受到影响,需要手动清理 -memory_ban_words = [ "表情包", "图片", "回复", "聊天记录" ] - [voice] enable_asr = false # 是否启用语音识别,启用后麦麦可以识别语音消息,启用该功能需要配置语音识别模型[model.voice]s