Перенаправление вывода скриптов в мессенджеры
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_id | telegram:-1001234567890 | Конкретный числовой чат / группа / пользователь |
платформа:chat_id:thread_id | telegram:-1001234567890:17585 | Конкретный тред или тема форума Telegram |
платформа:#канал | discord:#ops | Человекочитаемое имя канала (разрешается через каталог каналов) |
платформа:+E164 | signal:+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 определяет тело сообщения в следующем порядке:
- Позиционный аргумент —
vibeos send --to telegram "привет" --file ПУТЬ—vibeos send --to telegram --file msg.txt- Перенаправленный 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.
Связанные разделы
- Автоматизация всего с помощью Cron — запланированные задачи, вывод которых автоматически доставляется на любую платформу.
- Внутреннее устройство шлюза — маршрутизатор доставки, который
vibeos sendразделяет с cron-доставкой. - Настройка платформ обмена сообщениями — одноразовая настройка для каждой платформы.