diff --git a/src/config/config.py b/src/config/config.py index 39e346c7..d221e607 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -284,7 +284,7 @@ class BotConfig: nickname_probability_smoothing: int = 1 # 绰号加权随机选择的平滑因子 nickname_queue_max_size: int = 100 # 绰号处理队列最大容量 nickname_process_sleep_interval: float = 60 # 绰号处理进程休眠间隔(秒) - nickname_observation_context_size: int = 30 # 绰号处理选中上下文长度 + nickname_analysis_history_limit: int = 30 # 绰号处理可见最大上下文 # 模型配置 llm_reasoning: dict[str, str] = field(default_factory=lambda: {}) @@ -420,7 +420,7 @@ class BotConfig: config.steal_emoji = emoji_config.get("steal_emoji", config.steal_emoji) def group_nickname(parent: dict): - if config.INNER_VERSION in SpecifierSet(">=1.6.1.1"): + if config.INNER_VERSION in SpecifierSet(">=1.6.1.4"): group_nickname_config = parent.get("group_nickname", {}) config.enable_nickname_mapping = group_nickname_config.get( "enable_nickname_mapping", config.enable_nickname_mapping @@ -437,10 +437,9 @@ class BotConfig: config.nickname_process_sleep_interval = group_nickname_config.get( "nickname_process_sleep_interval", config.nickname_process_sleep_interval ) - if config.INNER_VERSION in SpecifierSet(">=1.6.1.3"): - config.nickname_observation_context_size = group_nickname_config.get( - "nickname_observation_context_size", config.nickname_observation_context_size - ) + config.nickname_analysis_history_limit = group_nickname_config.get( + "nickname_analysis_history_limit", config.nickname_analysis_history_limit + ) def bot(parent: dict): # 机器人基础配置 diff --git a/src/plugins/group_nickname/nickname_manager.py b/src/plugins/group_nickname/nickname_manager.py index 05b493ba..fc1fcf45 100644 --- a/src/plugins/group_nickname/nickname_manager.py +++ b/src/plugins/group_nickname/nickname_manager.py @@ -143,7 +143,7 @@ class NicknameManager: self.nickname_queue: asyncio.Queue = asyncio.Queue(maxsize=self.queue_max_size) self._stop_event = threading.Event() # stop_event 仍然使用 threading.Event,因为它是由另一个线程设置的 self._nickname_thread: Optional[threading.Thread] = None - self.sleep_interval = getattr(self.config, "nickname_process_sleep_interval", 0.5) # 超时时间 + self.sleep_interval = getattr(self.config, "nickname_process_sleep_interval", 60) # 超时时间 self._initialized = True logger.info("NicknameManager 初始化完成。") @@ -153,6 +153,10 @@ class NicknameManager: if not self.is_enabled: logger.info("绰号处理功能已禁用,处理器未启动。") return + if global_config.max_nicknames_in_prompt == 0: # 考虑有神秘的用户输入为0的可能性 + logger.error("[错误] 绰号注入数量不合适,绰号处理功能已禁用!") + return + if self._nickname_thread is None or not self._nickname_thread.is_alive(): logger.info("正在启动绰号处理器线程...") self._stop_event.clear() @@ -205,7 +209,7 @@ class NicknameManager: log_prefix = f"[{current_chat_stream.stream_id}]" try: # 1. 获取历史记录 - history_limit = getattr(self.config, "NICKNAME_ANALYSIS_HISTORY_LIMIT", global_config.nickname_observation_context_size) + history_limit = getattr(self.config, "nickname_analysis_history_limit", 30) history_messages = get_raw_msg_before_timestamp_with_chat( chat_id=current_chat_stream.stream_id, timestamp=time.time(), diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 2f080d40..cb3306f9 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -131,7 +131,7 @@ max_nicknames_in_prompt = 10 # Prompt 中最多注入的绰号数量(防止to nickname_probability_smoothing = 1 # 绰号加权随机选择的平滑因子 nickname_queue_max_size = 100 # 绰号处理队列最大容量 nickname_process_sleep_interval = 60 # 绰号处理进程休眠间隔(秒) -nickname_observation_context_size = 30 # 绰号处理选中上下文长度 +nickname_analysis_history_limit = 30 # 绰号处理可见最大上下文 [memory] build_memory_interval = 2000 # 记忆构建间隔 单位秒 间隔越低,麦麦学习越多,但是冗余信息也会增多