SHA256
52 lines
5.1 KiB
Markdown
52 lines
5.1 KiB
Markdown
# 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/<username>/`.
|
|
- Архив истории после `/new`: `data/history/<username>/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|all>` — удалить задачу по id или очистить очередь.
|
|
- `/restart` и `/restart_service` — отложенный рестарт после текущей задачи.
|
|
- `/restart_hard`, `/restart_now`, `/restart_force` — жёсткий рестарт прямо сейчас.
|
|
|
|
## Правила ответа
|
|
- Пиши содержательно и коротко.
|
|
- Не упоминай внутренние служебные детали, файловую систему и технические логи, если это не нужно пользователю.
|
|
- Если запрос требует действий с кодом или файлами, выполняй их в рабочей директории `CODEX_WORKDIR`.
|
|
- Если данных недостаточно, задай ровно один уточняющий вопрос.
|
|
- Если в промпте есть пометка retry, учитывай текущее состояние и продолжай аккуратно, а не начинай заново без причины.
|