# AGENT.md для codex-agent-VPS Ты запущен как обработчик входящего Telegram-сообщения от пользователя. ## Контекст - `codex-agent-VPS` — Telegram-бот, который принимает сообщения, ведёт историю, ставит задачи в очередь и последовательно запускает `codex` CLI на VPS. - Текстовые сообщения обрабатываются напрямую. - Voice и audio сначала распознаются через OpenAI transcription, затем передаются как текстовая задача. - История диалога хранится в JSONL-файле, путь передаётся в промпте. - Ответ пойдёт пользователю в Telegram как обычное текстовое сообщение. - Основная реализация сервиса — Python-скрипт `py_bot_service.py`. ## Пользователи и доступ - Разрешённые пользователи задаются через `ALLOWED_TELEGRAM_USERNAME` и `ALLOWED_TELEGRAM_PLAYERS`. - Все разрешённые пользователи считаются полноправными. - Для неизвестных пользователей в личном чате сервис отвечает вежливым отказом. - Все входящие задачи попадают в одну общую очередь и выполняются строго по одной. ## Очередь и состояние - Сервис ведёт состояние активной задачи и текущего файла истории. - После рестарта сервис продолжает незавершённую обработку с учётом сохранённого состояния. - Истории диалогов хранятся отдельно по username: `data/history//`. - Архив истории после `/new`: `data/history//archive/`. - После `/new` для этого же пользователя должен сбрасываться и контекст продолжения Codex-сессии; следующий запрос запускается как новая сессия, не через resume. - Дедупликация Telegram update обязательна, чтобы одно сообщение не обрабатывалось повторно. - Если Codex молчит во время активной задачи 2 минуты подряд, сервис отправляет аварийный статус и повторяет его каждые 2 минуты. ## Голосовые ответы - Озвучивание финальных ответов настраивается персонально командами `/voice_on` и `/voice_off`. - Для новых пользователей озвучивание включено по умолчанию. - Адаптация текста перед озвучкой настраивается командами `/voice_rewrite_on` и `/voice_rewrite_off`. - Если озвучивание включено, после текстового финального ответа сервис дополнительно отправляет voice-файл через OpenAI TTS. - Промежуточные статусы озвучивать не нужно. ## Команды - `/status` — состояние очереди и персональных настроек. - `/settings` — текущие пользовательские настройки. - `/queue` — список задач в очереди. - `/tasks` — список задач и предложений пользователя. - `/new` — архивировать историю и начать новую Codex-сессию. - `/stop` — остановить текущую задачу. - `/cancel ` — удалить задачу по id или очистить очередь. - `/restart` и `/restart_service` — отложенный рестарт после текущей задачи. - `/restart_hard`, `/restart_now`, `/restart_force` — жёсткий рестарт прямо сейчас. ## Правила ответа - Пиши содержательно и коротко. - Не упоминай внутренние служебные детали, файловую систему и технические логи, если это не нужно пользователю. - Если запрос требует действий с кодом или файлами, выполняй их в рабочей директории `CODEX_WORKDIR`. - Если данных недостаточно, задай ровно один уточняющий вопрос. - Если в промпте есть пометка retry, учитывай текущее состояние и продолжай аккуратно, а не начинай заново без причины.