From 6ce3c9781b5320ebcbc764a6e8d2fc644d430171 Mon Sep 17 00:00:00 2001 From: dimitrievgs Date: Fri, 1 May 2026 22:44:01 +0300 Subject: [PATCH] Fix settings naming --- app/api.py | 16 +++++++--------- app/heartbeat_monitor.py | 12 ++++++------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/app/api.py b/app/api.py index 244c148..520a701 100644 --- a/app/api.py +++ b/app/api.py @@ -9,7 +9,7 @@ from flask import Flask, request, jsonify, Response, stream_with_context from flask_cors import CORS from flask_socketio import SocketIO from workflows import graph_history_manager, run_agent_streaming -from llm_client import MODELS # Добавляем импорт списка моделей +from llm_client import MODELS, get_llm # Добавляем импорт списка моделей api = Flask(__name__) CORS( @@ -374,14 +374,7 @@ from app.voice_service import VoiceService, VOICE_COMMANDS_RESPONSE_TO_STORE # 1. Создаем экземпляр (обязательно укажите путь к вашей модели Vosk) voice_inst = VoiceService(model_path=r"D:\\Work\\Software_Development\\Projects\\vosk\\vosk-model-small-ru-0.22") -current_obsidian_settings = { - 'interval': 5, - 'context_limit': 3000, - 'voice_model': 'gemini-2.0-flash', - 'marker_start': 'старт', - 'marker_stop': 'стоп', - 'voice_context_limit': 3000 -} +current_obsidian_settings = {} obsidian_settings_fetched = False @@ -411,5 +404,10 @@ def sync_settings(): data = request.json if data: current_obsidian_settings.update(data) + + # TODO: Скорее всего, здесь нужно какое-то событие эмитировать об изменении настроек, и в другом месте ловить + graph_history_manager.title_generator.llm = get_llm(current_obsidian_settings['summarizationModel']) + graph_history_manager.title_generator.voice_llm = get_llm(current_obsidian_settings['voiceCommandModel']) + print(f"✅⚙️ Settings synced: {current_obsidian_settings}") return jsonify({"status": "synced"}) \ No newline at end of file diff --git a/app/heartbeat_monitor.py b/app/heartbeat_monitor.py index 5f3180b..4cfb45d 100644 --- a/app/heartbeat_monitor.py +++ b/app/heartbeat_monitor.py @@ -165,7 +165,7 @@ class VoiceHeartbeatMonitor(threading.Thread): self._check_commands(obsidian_settings) # 2. Регулярный запрос - if time.time() - self.last_regular_run > obsidian_settings['interval'] * 60: + if time.time() - self.last_regular_run > obsidian_settings['voiceInterval'] * 60: self._run_regular_analysis(obsidian_settings) self.last_regular_run = time.time() time.sleep(3) # каждые 3 секунды проверяем @@ -174,13 +174,13 @@ class VoiceHeartbeatMonitor(threading.Thread): def _check_commands(self, obsidian_settings): # Получаем данные за последние секунды - raw_text = self.vs.get_last_chars(obsidian_settings['context_limit']) + raw_text = self.vs.get_last_chars(obsidian_settings['voiceContextLimit']) import re # Чистим таймстемпы Vosk для LLM (удаляем паттерны [00:00:00]) clean_text = re.sub(r'\[.*?\]', '', raw_text) - pattern = f"{re.escape(obsidian_settings['marker_start'])}(.*?){re.escape(obsidian_settings['marker_stop'])}" + pattern = f"{re.escape(obsidian_settings['markerStart'])}(.*?){re.escape(obsidian_settings['markerStop'])}" matches = re.findall(pattern, clean_text, re.DOTALL) for match in matches: @@ -194,7 +194,7 @@ class VoiceHeartbeatMonitor(threading.Thread): print(f"🎤 New Voice Command detected: {cmd}") # ОТПРАВЛЯЕМ В LLM через TitleGenerator - prompt = f"{(obsidian_settings.get('systemPrompt') or '')}\n\n{(obsidian_settings.get('prompt_commands') or '')}" + prompt = f"{(obsidian_settings.get('systemPrompt') or '')}\n\n{(obsidian_settings.get('promptCommands') or '')}" self.generator.add_voice_task_to_queue( cmd, prompt @@ -205,10 +205,10 @@ class VoiceHeartbeatMonitor(threading.Thread): if len(self._processed_hashes) > 100: self._processed_hashes.clear() # Спорно, очень спорно def _run_regular_analysis(self, obsidian_settings): - raw_text = self.vs.get_last_chars(obsidian_settings['voice_context_limit']) + raw_text = self.vs.get_last_chars(obsidian_settings['voiceContextLimit']) if not raw_text.strip(): return - prompt = f"{(obsidian_settings.get('systemPrompt') or '')}\n\n{(obsidian_settings.get('prompt_regular') or '')}" + prompt = f"{(obsidian_settings.get('systemPrompt') or '')}\n\n{(obsidian_settings.get('promptRegular') or '')}" # Добавим новый тип 'voice_regular' вTitleGenerator аналогично 'voice_command' self.generator.add_voice_regular_task(raw_text, prompt) \ No newline at end of file