3.5 KiB
3.5 KiB
SHiNE-agent-bot-coder
Локальный Telegram-бот-сервис для пользователя ai:
- принимает сообщения от
@AidarKC; - ведёт историю диалога в
JSONL; - ставит задачи в файловую очередь;
- обрабатывает задачи строго последовательно;
- поддерживает текстовые и голосовые сообщения (voice/audio через OpenAI transcription);
- вызывает Codex CLI и отправляет ответ в Telegram;
- при рестарте восстанавливает незавершённые задачи;
- отправляет аварийный статус только если Codex молчит 2 минуты подряд во время активной задачи;
- принимает сообщения из канала
@shine_writing, выполняет команды только от@AidarKC, а сообщения других авторов сохраняет как контекст.
Структура
.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.
Локальный запуск
- Скопировать пример:
cp .env.example .env
- Заполнить секреты в
.env.TELEGRAM_BOT_TOKEN— токен рабочего Telegram-бота.ALLOWED_TELEGRAM_USERNAME— пользователь, чьи сообщения выполняются как команды.ALLOWED_TELEGRAM_CHANNEL_USERNAME— канал, из которого принимаютсяchannel_post.
- Запуск:
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.servicescripts/systemd/install-local-systemd.sh
Установка:
bash SHiNE-agent-bot-coder/scripts/systemd/install-local-systemd.sh
Проверка:
systemctl --user status shine-agent-bot-coder --no-pagerjournalctl --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 должен поднять процесс заново.