diff --git a/satellite/modes.py b/satellite/modes.py index a1aa6bc..894ff2a 100644 --- a/satellite/modes.py +++ b/satellite/modes.py @@ -4,26 +4,11 @@ import sys from .config import GATEWAY_URL, AGENT, log from .audio import record from .tts import speak, stop_speaking -from .llm import ask_agent_stream, Conversation, is_reset_command - -# Персистентные сессии — одна на день для каждого агента -_sessions: dict[str, Conversation] = {} - - -def _get_session(agent_id: str) -> Conversation: - """Возвращает текущую сессию, создаёт новую если день сменился""" - conv = _sessions.get(agent_id) - if conv is None or conv.is_expired(): - conv = Conversation(agent_id=agent_id) - _sessions[agent_id] = conv - print(f"🆕 Новая сессия для {agent_id}") - return conv - +from .llm import ask_agent_stream, is_reset_command def _handle_reset(text: str, agent_id: str) -> bool: - """Проверяет команду сброса. Возвращает True если сброс произошёл.""" + """Команда сброса — на сервере OpenClaw сессия рулится session_key, клиент только сообщает.""" if is_reset_command(text): - _sessions[agent_id] = Conversation(agent_id=agent_id) msg = "Начинаю новую сессию." print(f"🔄 {msg}") speak(msg, agent_id) @@ -34,8 +19,6 @@ def _handle_reset(text: str, agent_id: str) -> bool: def _conversation_loop(agent_id: str, agent_name: str = "Cosmo"): """Основной цикл диалога — слушает и отвечает пока пользователь говорит. Выходит когда в течение MAX_DURATION не было речи.""" - conv = _get_session(agent_id) - while True: text = record() if not text: @@ -45,10 +28,9 @@ def _conversation_loop(agent_id: str, agent_name: str = "Cosmo"): print(f"📝 Ты → {agent_name}: {text}") if _handle_reset(text, agent_id): - conv = _get_session(agent_id) continue - response = ask_agent_stream(text, conv=conv, agent_id=agent_id) + response = ask_agent_stream(text, agent_id=agent_id) print(f"🤖 {agent_name}: {response}\n") # после ответа — следующая итерация с новым record() # record() сам гасит эхо через ECHO_WARMUP