SHiNE-server/SHiNE-agent-bot-coder/README.md

3.0 KiB

SHiNE-agent-bot-coder

Локальный Telegram-бот-сервис для пользователя ai:

  • принимает сообщения от @AidarKC;
  • ведёт историю диалога в JSONL;
  • ставит задачи в файловую очередь;
  • обрабатывает задачи строго последовательно;
  • поддерживает текстовые и голосовые сообщения (voice/audio через OpenAI transcription);
  • вызывает Codex CLI и отправляет ответ в Telegram;
  • при рестарте восстанавливает незавершённые задачи;
  • отправляет аварийный статус только если Codex молчит 2 минуты подряд во время активной задачи.

Структура

  • .env — локальные секреты и параметры запуска (не коммитится);
  • data/queue.jsonl — очередь задач;
  • data/state.json — текущее состояние (active job + текущий history-файл);
  • data/py_queue.jsonl — очередь Python-сервиса;
  • data/py_state.json — текущее состояние Python-сервиса;
  • data/py_processed_updates.log — дедуп входящих update;
  • data/history/*.jsonl — активные истории;
  • data/history/archive/*.jsonl — архив историй после /new.

Локальный запуск

  1. Скопировать пример:
    • cp .env.example .env
  2. Заполнить секреты в .env.
  3. Запуск:
    • python3 SHiNE-agent-bot-coder/py_bot_service.py

Быстрый self-test Codex (без Telegram)

python3 SHiNE-agent-bot-coder/py_bot_service.py --selftest-codex "Ответь одной строкой: Codex работает"

Запуск как systemd-сервис

Файлы для установки:

  • scripts/systemd/shine-agent-bot-coder.service
  • scripts/systemd/install-local-systemd.sh

Установка:

  • bash SHiNE-agent-bot-coder/scripts/systemd/install-local-systemd.sh

Проверка:

  • systemctl --user status shine-agent-bot-coder --no-pager
  • journalctl --user -u shine-agent-bot-coder -f

Перезапуск после изменений:

  • systemctl --user restart shine-agent-bot-coder

Telegram-команды

  • /status — активная задача и размер очереди.
  • /queue — список задач в очереди.
  • /stop — остановить текущую задачу.
  • /cancel <id|all> — удалить задачу по id/префиксу или очистить очередь.
  • /new — архивировать текущую историю и начать новый диалог.
  • /restart_service — перезапустить сервис; systemd должен поднять процесс заново.