Перейти к основному содержимому

Перенаправление вывода скриптов в мессенджеры

vibeos send — это небольшая, скриптуемая CLI-утилита, которая отправляет сообщение на любую платформу обмена сообщениями, уже настроенную в VibeOS. Думайте о ней как о кроссплатформенном curl для уведомлений — вам не нужен работающий шлюз, не нужна LLM, и не нужно повторно вставлять токены ботов в каждый ваш скрипт.

Используйте её для:

  • Мониторинга системы (память, диск, температура GPU, завершение длительной задачи)
  • Уведомлений CI/CD (развёртывание завершено, ошибка теста)
  • Cron-скриптов, которые должны уведомить вас о результатах
  • Быстрых одноразовых сообщений из терминала
  • Перенаправления вывода любого инструмента куда угодно (make | vibeos send --to slack:#builds)

Команда использует те же учётные данные и адаптеры платформ, что и vibeos gateway, поэтому не требует поддержки второй конфигурации.


Быстрый старт​

# Простой текст в домашний канал платформы
vibeos send --to telegram "развёртывание завершено"

# Перенаправление stdout из любого источника
echo "ОЗУ 92%" | vibeos send --to telegram:-1001234567890

# Отправка файла
vibeos send --to discord:#ops --file /tmp/report.md

# Добавление темы/заголовка
vibeos send --to slack:#eng --subject "[CI] build.log" --file build.log

# Целевой тред (тема Telegram, тред Discord)
vibeos send --to telegram:-1001234567890:17585 "ответ в треде"

# Список всех настроенных целей
vibeos send --list

# Фильтрация по платформе
vibeos send --list telegram

Справочник аргументов​

ФлагОписание
-t, --to ЦЕЛЬНазначение. См. форматы целей.
сообщение (позиционный)Текст сообщения. Опустите для чтения из --file или stdin.
-f, --file ПУТЬЧтение тела из файла. --file - принудительно использует stdin.
-s, --subject СТРОКАДобавить строку заголовка/темы перед телом.
-l, --listСписок доступных целей. Опциональный позиционный фильтр платформы.
-q, --quietБез вывода в stdout при успехе (только код возврата — идеально для скриптов).
--jsonВывод сырого JSON-результата отправки.
-h, --helpПоказать встроенную справку.

Форматы целей​

ФорматПримерЗначение
платформаtelegramОтправка в настроенный домашний канал платформы
платформа:chat_idtelegram:-1001234567890Конкретный числовой чат / группа / пользователь
платформа:chat_id:thread_idtelegram:-1001234567890:17585Конкретный тред или тема форума Telegram
платформа:#каналdiscord:#opsЧеловекочитаемое имя канала (разрешается через каталог каналов)
платформа:+E164signal:+15551234567Платформы, адресуемые по номеру телефона: Signal, SMS, WhatsApp

Любая платформа, для которой VibeOS предоставляет адаптеры, работает как цель: telegram, discord, slack, signal, sms, whatsapp, matrix, mattermost, feishu, dingtalk, wecom, weixin, email и другие.

Коды возврата​

КодЗначение
0Отправка (или список) выполнена успешно
1Ошибка доставки на уровне платформы (аутентификация, права, сеть)
2Ошибка использования / аргументов / конфигурации

Коды возврата следуют стандартной конвенции Unix, поэтому ваши скрипты могут обрабатывать их так же, как и для curl или grep.


Определение тела сообщения​

vibeos send определяет тело сообщения в следующем порядке:

  1. Позиционный аргумент — vibeos send --to telegram "привет"
  2. --file ПУТЬ — vibeos send --to telegram --file msg.txt
  3. Перенаправленный stdin — echo привет | vibeos send --to telegram

Когда stdin является TTY (нет перенаправления), VibeOS не ожидает ввода — вместо этого вы получите понятную ошибку использования. Это предотвращает зависание скриптов, если они случайно пропустили тело сообщения.


Примеры из реальной жизни​

Мониторинг: оповещения о памяти / диске​

Замените ad-hoc вызовы curl https://api.telegram.org/... в ваших сторожевых скриптах одной переносимой строкой:

#!/usr/bin/env bash
ram_pct=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$ram_pct" -ge 85 ]; then
vibeos send --to telegram --subject "⚠ ПРЕДУПРЕЖДЕНИЕ О ПАМЯТИ" \
"ОЗУ ${ram_pct}% на $(hostname)"
fi

Поскольку vibeos send использует вашу конфигурацию VibeOS, тот же скрипт работает на любом хосте, где установлен VibeOS — не нужно вручную экспортировать токены ботов в окружение каждой машины.

Не оповещайте шлюз о самом себе

Для сторожевых скриптов, которые могут сработать, когда сам шлюз испытывает проблемы (оповещения о нехватке памяти, заполнении диска), продолжайте использовать минимальный вызов curl вместо vibeos send. Если интерпретатор Python не может загрузиться из-за перегрузки системы, вы всё равно хотите получить это оповещение.

CI / CD: результаты сборки и тестов​

# В .github/workflows/deploy.yml или любом CI-скрипте
if ./scripts/deploy.sh; then
vibeos send --to slack:#deploys "✅ ${CI_COMMIT_SHA:0:7} развёрнут"
else
tail -n 100 deploy.log | vibeos send \
--to slack:#deploys --subject "❌ развёртывание не удалось"
exit 1
fi

Cron: ежедневный отчёт​

# Запись в crontab
0 9 * * * /usr/local/bin/generate-metrics.sh \
| /home/me/.vibeos/bin/vibeos send \
--to telegram --subject "Ежедневные метрики $(date +%Y-%m-%d)"

Длительные задачи: уведомление о завершении​

./train.py --epochs 200 && \
vibeos send --to telegram "обучение завершено" || \
vibeos send --to telegram "обучение не удалось (код $?)"

Скриптинг с --json и --quiet​

# Жёсткое завершение скрипта при ошибке доставки; без лишнего лога при успехе
vibeos send --to telegram --quiet "keepalive" || {
echo "Доставка в Telegram не удалась" >&2
exit 1
}

# Получение ID сообщения для последующего редактирования / треда
msg_id=$(vibeos send --to discord:#ops --json "сборка запущена" \
| jq -r .message_id)

Нужен ли работающий шлюз для vibeos send?​

Обычно нет. Для любых платформ с токенами ботов — Telegram, Discord, Slack, Signal, SMS, WhatsApp Cloud API и большинства других — vibeos send вызывает REST-эндпоинт платформы напрямую, используя учётные данные из ~/.vibeos/.env и ~/.vibeos/config.yaml. Это автономный подпроцесс, который завершается сразу после доставки сообщения.

Работающий шлюз требуется только для платформ-плагинов, которые полагаются на постоянное соединение адаптера (например, пользовательский плагин, поддерживающий долгоживущий WebSocket). В этом случае вы получите понятную ошибку с указанием на шлюз; запустите его с помощью vibeos gateway start и повторите попытку.


Список и обнаружение целей​

Перед отправкой в конкретный канал вы можете проверить, что доступно:

# Все цели на всех настроенных платформах
vibeos send --list

# Только цели Telegram
vibeos send --list telegram

# Машиночитаемый формат
vibeos send --list --json

Список формируется из ~/.vibeos/channel_directory.json, который шлюз обновляет каждые несколько минут во время работы. Если вы видите «каналы ещё не обнаружены», запустите шлюз один раз (vibeos gateway start), чтобы он заполнил кеш.

Человекочитаемые имена (discord:#ops, slack:#engineering) разрешаются через этот кеш во время отправки, поэтому вам не нужно запоминать числовые ID.


Сравнение с другими подходами​

ПодходМультиплатформенностьИспользует учётные данные VibeOSНужен шлюзЛучше всего для
vibeos send✅✅Нет (токен бота)Всё нижеперечисленное
Прямой curl к каждой платформеКаждая скриптуется отдельноВручнуюНетКритические сторожевые скрипты
Задача cron с --deliver✅✅НетПлановые задачи агента
Инструмент агента send_message✅✅НетВнутри цикла агента

vibeos send намеренно является максимально простым интерфейсом. Если вам нужно, чтобы агент решал, что сказать, используйте инструмент send_message из чата или cron-задачи. Если вам нужно запланированное выполнение с контентом, сгенерированным LLM, используйте cronjob(action='create', prompt=...) с deliver='telegram:...'. Если вам просто нужно перенаправить сырую строку, используйте vibeos send.


Связанные разделы​