Настройка командного Telegram-ассистента
Этот учебник проведёт вас через настройку Telegram-бота на базе VibeOS, который могут использовать несколько членов команды. В итоге ваша команда получит общего AI-ассистента, которому можно писать для помощи с кодом, исследованиями, администрированием системы и всем остальным — с защитой на основе авторизации пользователей.
Что мы создаём
Telegram-бот, который:
- Любой авторизованный член команды может написать в личку для помощи — ревью кода, исследования, shell-команды, отладка
- Работает на вашем сервере с полным доступом к инструментам — терминал, редактирование файлов, веб-поиск, выполнение кода
- Индивидуальные сессии — у каждого свой контекст разговора
- Безопасен по умолчанию — только одобренные пользователи могут взаимодействовать, два метода авторизации
- Запланированные задачи — ежедневные стендапы, проверки здоровья и напоминания доставляются в командный канал
Предварительные требования
Перед началом убедитесь, что у вас есть:
- VibeOS установлен на сервере или VPS (не на ноутбуке — бот должен работать постоянно). Следуйте руководству по установке, если ещё не сделали этого.
- Аккаунт Telegram для себя (владельца бота)
- Настроен LLM-провайдер — как минимум, API-ключ для OpenAI, Anthropic или другого поддерживаемого провайдера в
~/.vibeos/.env
VPS за $5/месяц вполне достаточно для работы шлюза. VibeOS сам по себе лёгкий — затраты идут на LLM API-вызовы, которые выполняются удалённо.
Шаг 1: Создание Telegram-бота
Каждый Telegram-бот начинается с @BotFather — официального бота Telegram для создания ботов.
-
Откройте Telegram и найдите
@BotFatherили перейдите по ссылке t.me/BotFather -
Отправьте
/newbot— BotFather задаст два вопроса:- Отображаемое имя — то, что видят пользователи (например,
Team VibeOS Assistant) - Имя пользователя — должно заканчиваться на
bot(например,myteam_vibeos_bot)
- Отображаемое имя — то, что видят пользователи (например,
-
Скопируйте токен бота — BotFather ответит примерно так:
Use this token to access the HTTP API:
7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...Сохраните этот токен — он понадобится на следующем шаге.
-
Установите описание (необязательно, но рекомендуется):
/setdescriptionВыберите своего бота, затем введите что-то вроде:
Командный AI-ассистент на базе VibeOS. Пишите в личку для помощи с кодом, исследованиями, отладкой и многим другим. -
Установите команды бота (необязательно — даёт пользователям меню команд):
/setcommandsВыберите своего бота, затем вставьте:
new - Начать новый разговор
model - Показать или сменить AI-модель
status - Показать информацию о сессии
help - Показать доступные команды
stop - Остановить текущую задачу
Держите токен бота в секрете. Любой, у кого есть токен, может управлять ботом. Если он утёк, используйте /revoke в BotFather для генерации нового.
Шаг 2: Настройка шлюза
У вас есть два варианта: интерактивный мастер настройки (рекомендуется) или ручная конфигурация.
Вариант A: Интерактивная настройка (рекомендуется)
vibeos gateway setup
Это проведёт вас через всё с помощью выбора стрелками. Выберите Telegram, вставьте токен бота и введите свой ID пользователя при запросе.
Вариант B: Ручная настройка
Добавьте эти строки в ~/.vibeos/.env:
# Токен Telegram-бота от BotFather
TELEGRAM_BOT_TOKEN=7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp...
# Ваш Telegram ID пользователя (числовой)
TELEGRAM_ALLOWED_USERS=123456789
Поиск своего ID пользователя
Ваш Telegram ID пользователя — это числовое значение (не имя пользователя). Чтобы его найти:
- Напишите @userinfobot в Telegram
- Он мгновенно отвечает вашим числовым ID пользователя
- Скопируйте это число в
TELEGRAM_ALLOWED_USERS
Telegram ID пользователей — это постоянные числа, например 123456789. Они отличаются от вашего @username, который может меняться. Всегда используйте числовой ID для списков разрешений.
Шаг 3: Запуск шлюза
Быстрая проверка
Сначала запустите шлюз в интерактивном режиме, чтобы убедиться, что всё работает:
vibeos gateway
Вы должны увидеть вывод примерно такой:
[Gateway] Starting VibeOS Gateway...
[Gateway] Telegram adapter connected
[Gateway] Cron scheduler started (tick every 60s)
Откройте Telegram, найдите своего бота и отправьте ему сообщение. Если он отвечает, всё работает. Нажмите Ctrl+C для остановки.
Продакшн: Установка как службы
Для постоянного развёртывания, которое переживает перезагрузки:
vibeos gateway install
sudo vibeos gateway install --system # Только Linux: системная служба автозагрузки
Это создаёт фоновую службу: пользовательскую systemd службу на Linux по умолчанию, launchd службу на macOS или системную службу автозагрузки Linux, если передать --system.
# Linux — управление пользовательской службой по умолчанию
vibeos gateway start
vibeos gateway stop
vibeos gateway status
# Просмотр логов в реальном времени
journalctl --user -u vibeos-gateway -f
# Оставаться запущенным после выхода из SSH
sudo loginctl enable-linger $USER
# Linux-серверы — явные команды системной службы
sudo vibeos gateway start --system
sudo vibeos gateway status --system
journalctl -u vibeos-gateway -f
# macOS — управление службой
vibeos gateway start
vibeos gateway stop
tail -f ~/.vibeos/logs/gateway.log
Файл launchd plist захватывает ваш shell PATH при установке, чтобы подпроцессы шлюза могли найти такие инструменты, как Node.js и ffmpeg. Если вы установите новые инструменты позже, повторно запустите vibeos gateway install, чтобы обновить plist.
Проверка работы
vibeos gateway status
Затем отправьте тестовое сообщение своему боту в Telegram. Вы должны получить ответ в течение нескольких секунд.
Шаг 4: Настройка доступа команды
Теперь дадим доступ вашим коллегам. Есть два подхода.
Подход A: Статический список разрешений
Соберите Telegram ID каждого члена команды (пусть напишут @userinfobot) и добавьте их в список через запятую:
# В ~/.vibeos/.env
TELEGRAM_ALLOWED_USERS=123456789,987654321,555555555
Перезапустите шлюз после изменений:
vibeos gateway stop && vibeos gateway start
Подход B: Привязка через личные сообщения (рекомендуется для команд)
Привязка через личные сообщения более гибкая — вам не нужно собирать ID пользователей заранее. Вот как это работает:
-
Коллега пишет боту в личку — так как его нет в списке разрешений, бот отвечает одноразовым кодом привязки:
🔐 Код привязки: XKGH5N7P
Отправьте этот код владельцу бота для одобрения. -
Коллега отправляет вам код (через любой канал — Slack, email, лично)
-
Вы одобряете его на сервере:
vibeos pairing approve telegram XKGH5N7P -
Всё готово — бот сразу начинает отвечать на его сообщения
Управление привязанными пользователями:
# Просмотр всех ожидающих и одобренных пользователей
vibeos pairing list
# Отзыв доступа у кого-либо
vibeos pairing revoke telegram 987654321
# Очистка истёкших ожидающих кодов
vibeos pairing clear-pending
Привязка через личные сообщения идеальна для команд, потому что вам не нужно перезапускать шлюз при добавлении новых пользователей. Одобрения вступают в силу немедленно.
Соображения безопасности
- Никогда не устанавливайте
GATEWAY_ALLOW_ALL_USERS=trueдля бота с доступом к терминалу — любой, кто найдёт вашего бота, сможет выполнять команды на вашем сервере - Коды привязки истекают через 1 час и используют криптографическую случайность
- Ограничение скорости предотвращает атаки перебором: 1 запрос на пользователя за 10 минут, максимум 3 ожидающих кода на платформу
- После 5 неудачных попыток одобрения платформа блокируется на 1 час
- Все данные привязки хранятся с правами
chmod 0600
Шаг 5: Настройка бота
Установка домашнего канала
Домашний канал — это место, куда бот доставляет результаты cron-задач и проактивные сообщения. Без него у запланированных задач нет места для вывода.
Вариант 1: Используйте команду /sethome в любой Telegram-группе или чате, где бот является участником.
Вариант 2: Установите вручную в ~/.vibeos/.env:
TELEGRAM_HOME_CHANNEL=-1001234567890
TELEGRAM_HOME_CHANNEL_NAME="Обновления команды"
Чтобы найти ID канала, добавьте @userinfobot в группу — он сообщит ID чата группы.
Настройка отображения прогресса инструментов
Управляйте тем, сколько деталей показывает бот при использовании инструментов. В ~/.vibeos/config.yaml:
display:
tool_progress: new # off | new | all | verbose
| Режим | Что вы видите |
|---|---|
off | Только чистые ответы — без активности инструментов |
new | Краткий статус для каждого нового вызова инструмента (рекомендуется для мессенджеров) |
all | Каждый вызов инструмента с деталями |
verbose | Полный вывод инструмента, включая результаты команд |
Пользователи также могут менять это для своей сессии с помощью команды /verbose в чате.
Настройка личности с помощью SOUL.md
Настройте стиль общения бота, отредактировав ~/.vibeos/SOUL.md:
Полное руководство см. в разделе Использование SOUL.md с VibeOS.
# Душа
Вы — полезный командный ассистент. Будьте кратки и техничны.
Используйте блоки кода для любого кода. Опустите любезности — команда
ценит прямоту. При отладке всегда спрашивайте логи ошибок
прежде чем гадать на решениях.
Добавление контекста проекта
Если ваша команда работает над конкретными проектами, создайте файлы контекста, чтобы бот знал ваш стек:
<!-- ~/.vibeos/AGENTS.md -->
# Контекст команды
- Мы используем Python 3.12 с FastAPI и SQLAlchemy
- Фронтенд — React с TypeScript
- CI/CD работает на GitHub Actions
- Продакшн развёртывается на AWS ECS
- Всегда предлагайте писать тесты для нового кода
Файлы контекста внедряются в системный промпт каждой сессии. Держите их краткими — каждый символ учитывается в вашем токенном бюджете.
Шаг 6: Настройка запланированных задач
С запущенным шлюзом вы можете планировать повторяющиеся задачи, которые доставляют результаты в ваш командный канал.
Ежедневная сводка стендапа
Напишите боту в Telegram:
Каждый будний день в 9 утра проверяй GitHub-репозиторий
github.com/myorg/myproject на:
1. Pull request'ы, открытые/слитые за последние 24 часа
2. Созданные или закрытые issues
3. Любые сбои CI/CD в основной ветке
Оформи в виде краткой сводки в стиле стендапа.
Агент автоматически создаёт cron-задачу и доставляет результаты в чат, где вы спросили (или в домашний канал).
Проверка здоровья сервера
Каждые 6 часов проверяй использование диска с 'df -h', память с 'free -h'
и статус Docker-контейнеров с 'docker ps'. Сообщай о любых аномалиях —
разделах выше 80%, контейнерах, которые перезапускались, или высоком
использовании памяти.
Управление запланированными задачами
# Из CLI
vibeos cron list # Просмотр всех запланированных задач
vibeos cron status # Проверка, запущен ли планировщик
# Из чата Telegram
/cron list # Просмотр задач
/cron remove <job_id> # Удаление задачи
Промпты cron-задач выполняются в полностью новых сессиях без памяти о предыдущих разговорах. Убедитесь, что каждый промпт содержит весь контекст, необходимый агенту — пути к файлам, URL, адреса серверов и чёткие инструкции.
Советы для продакшна
Используйте Docker для безопасности
На общем командном боте используйте Docker в качестве бэкенда терминала, чтобы команды агента выполнялись в контейнере, а не на вашем хосте:
# В ~/.vibeos/.env
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20
Или в ~/.vibeos/config.yaml:
terminal:
backend: docker
container_cpu: 1
container_memory: 5120
container_persistent: true
Таким образом, даже если кто-то попросит бота выполнить что-то разрушительное, ваша хост-система будет защищена.
Мониторинг шлюза
# Проверка, запущен ли шлюз
vibeos gateway status
# Просмотр логов в реальном времени (Linux)
journalctl --user -u vibeos-gateway -f
# Просмотр логов в реальном времени (macOS)
tail -f ~/.vibeos/logs/gateway.log
Обновление VibeOS
Из Telegram отправьте /update боту — он загрузит последнюю версию и перезапустится. Или с сервера:
vibeos update
vibeos gateway stop && vibeos gateway start
Расположение логов
| Что | Где |
|---|---|
| Логи шлюза | journalctl --user -u vibeos-gateway (Linux) или ~/.vibeos/logs/gateway.log (macOS) |
| Вывод cron-задач | ~/.vibeos/cron/output/{job_id}/{timestamp}.md |
| Определения cron-задач | ~/.vibeos/cron/jobs.json |
| Данные привязки | ~/.vibeos/pairing/ |
| История сессий | ~/.vibeos/sessions/ |
Дальнейшие шаги
У вас есть работающий командный Telegram-ассистент. Вот несколько следующих шагов:
- Руководство по безопасности — глубокое погружение в авторизацию, изоляцию контейнеров и одобрение команд
- Шлюз сообщений — полная справка по архитектуре шлюза, управлению сессиями и командам чата
- Настройка Telegram — специфичные для платформы детали, включая голосовые сообщения и TTS
- Запланированные задачи — продвинутое планирование cron с опциями доставки и cron-выражениями
- Файлы контекста — AGENTS.md, SOUL.md и .cursorrules для знаний о проекте
- Личность — встроенные пресеты личности и пользовательские определения персон
- Добавьте больше платформ — тот же шлюз может одновременно запускать Discord, Slack и WhatsApp
Вопросы или проблемы? Откройте issue на GitHub — вклад приветствуется.