diff --git a/.gitignore b/.gitignore index 2f6da24..64457e8 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,10 @@ bot_config.json # Logs *.log +# Cache +.cache/ +huggingface_cache/ + # OS .DS_Store Thumbs.db diff --git a/bot.py b/bot.py index 869185a..58d293c 100644 --- a/bot.py +++ b/bot.py @@ -28,6 +28,13 @@ MAX_MESSAGE_LENGTH = 4096 # Максимальная длина сообщен import pexpect import asyncssh from qwen_integration import qwen_manager, QwenSessionState + +# Подавляем логи sentence-transformers и huggingface +import logging +logging.getLogger("sentence_transformers").setLevel(logging.WARNING) +logging.getLogger("huggingface_hub").setLevel(logging.WARNING) +logging.getLogger("httpx").setLevel(logging.WARNING) + from vector_memory import ( hybrid_memory_manager, save_message, @@ -861,9 +868,12 @@ class MenuBuilder: if state is None: state = state_manager.get(user_id) logger.info(f"get_keyboard: user_id={user_id}, ai_chat_mode={state.ai_chat_mode}") - + for item in items: - if item.callback == "toggle_ai_chat": + # Проверяем базовый callback и его варианты с _on/_off + is_ai_toggle = item.callback in ["toggle_ai_chat", "toggle_ai_chat_on", "toggle_ai_chat_off"] + + if is_ai_toggle: # Меняем текст кнопки и callback_data в зависимости от статуса if state.ai_chat_mode: label = f"✅ Выключить чат с ИИ" @@ -1078,8 +1088,7 @@ async def menu_command(update: Update, context: ContextTypes.DEFAULT_TYPE): user = update.effective_user state = state_manager.get(user.id) - # Сброс состояния и возврат к главному меню - state_manager.reset(user.id) + # Не сбрасываем состояние - сохраняем ai_chat_mode и другие настройки state.current_menu = "main" # Показать текущую директорию и сервер @@ -1535,8 +1544,8 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE): reply_markup=menu_builder.get_keyboard("main", user_id=query.from_user.id, state=state) ) state.current_menu = "main" - - elif callback in ["toggle_ai_chat_on", "toggle_ai_chat_off"]: + + elif callback in ["toggle_ai_chat", "toggle_ai_chat_on", "toggle_ai_chat_off"]: # Переключаем режим чата с ИИ state.ai_chat_mode = not state.ai_chat_mode logger.info(f"toggle_ai_chat: user_id={user_id}, new_mode={state.ai_chat_mode}") diff --git a/vector_memory.py b/vector_memory.py index 7f55cf6..7ed3799 100644 --- a/vector_memory.py +++ b/vector_memory.py @@ -75,8 +75,17 @@ class VectorMemoryStorage: def _get_embedding_model(self): """Ленивая загрузка модели эмбеддингов.""" if self._embedding_model is None: + import os + # Отключаем проверку обновлений на HuggingFace + os.environ["TRANSFORMERS_OFFLINE"] = "1" + os.environ["HF_HUB_OFFLINE"] = "1" + from sentence_transformers import SentenceTransformer - self._embedding_model = SentenceTransformer(self.model_name) + # local_files_only=True — загружать только из кэша + self._embedding_model = SentenceTransformer( + self.model_name, + local_files_only=True + ) logger.info(f"Модель эмбеддингов загружена: {self.model_name}") return self._embedding_model