Перестроить структуру codex-agent-VPS для VPS-пакета

This commit is contained in:
AidarKC
2026-06-18 15:29:09 +04:00
parent b16a23243e
commit 1f2048e270
7 changed files with 73 additions and 10 deletions
@@ -0,0 +1,31 @@
TELEGRAM_BOT_TOKEN=replace_me
OPENAI_API_KEY=
ALLOWED_TELEGRAM_USERNAME=owner_username
ALLOWED_TELEGRAM_PLAYERS=user_one:User One,user_two:User Two
ALLOWED_TELEGRAM_CHANNEL_USERNAME=
BOT_USERNAME=your_bot_username
TELEGRAM_API_BASE_URL=https://api.telegram.org
OPENAI_TRANSCRIBE_MODEL=gpt-4o-mini-transcribe
TELEGRAM_FILE_DOWNLOAD_TIMEOUT_SECONDS=300
OPENAI_TRANSCRIBE_TIMEOUT_SECONDS=900
OPENAI_TRANSCRIBE_MAX_UPLOAD_BYTES=25165824
OPENAI_TRANSCRIBE_MAX_CHUNK_SECONDS=900
OPENAI_TRANSCRIBE_OVERLAP_SECONDS=2
OPENAI_TRANSCRIBE_REENCODE_BITRATE_KBPS=24
OPENAI_TRANSCRIBE_FFMPEG_TIMEOUT_SECONDS=1800
FFMPEG_BIN=ffmpeg
FFPROBE_BIN=ffprobe
OPENAI_TTS_MODEL=gpt-4o-mini-tts
OPENAI_TTS_VOICE=alloy
OPENAI_TTS_RESPONSE_FORMAT=opus
OPENAI_TTS_TIMEOUT_SECONDS=180
OPENAI_TTS_CHUNK_CHARS=3500
OPENAI_VOICE_REWRITE_MODEL=gpt-4.1-nano
OPENAI_VOICE_REWRITE_TIMEOUT_SECONDS=90
OPENAI_VOICE_REWRITE_MAX_INPUT_CHARS=12000
OPENAI_VOICE_REWRITE_MAX_OUTPUT_TOKENS=900
CODEX_BIN=/home/your_user/.local/bin/codex
CODEX_WORKDIR=/home/your_user
CODEX_TIMEOUT_SECONDS=900
MAX_RETRIES=3
DATA_DIR=./data
@@ -0,0 +1,51 @@
# 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, учитывай текущее состояние и продолжай аккуратно, а не начинай заново без причины.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,23 @@
[Unit]
Description=SHiNE Agent Bot Coder (Telegram + Codex queue worker)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=your_user
Group=your_user
WorkingDirectory=/home/your_user/codex-agent
Environment=HOME=/home/your_user
Environment=PATH=/home/your_user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
EnvironmentFile=/home/your_user/codex-agent/.env
ExecStart=/usr/bin/python3 /home/your_user/codex-agent/py_bot_service.py
Restart=always
RestartSec=5
TimeoutStopSec=20
SuccessExitStatus=143 0
StandardOutput=append:/home/your_user/codex-agent/logs/service.log
StandardError=append:/home/your_user/codex-agent/logs/service.log
[Install]
WantedBy=multi-user.target