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

Шлюз сообщений

Пишите VibeOS из Telegram, Discord, Slack, WhatsApp, Signal, SMS, email, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, Weixin, BlueBubbles (iMessage), QQ, Yuanbao, Microsoft Teams, LINE, ntfy или браузера. Шлюз — один фоновый процесс: подключается ко всем настроенным платформам, ведёт сессии, крутит cron и доставляет голос.

Полный голосовой стек (микрофон в CLI, голосовые ответы в чатах, голосовой канал Discord) — в Голосовом режиме и гайде по голосу с VibeOS.

подсказка

Боту нужны и провайдер модели, и tool-провайдеры (TTS, веб). Подписка Nous Portal закрывает и то и другое.

Сравнение платформ​

ПлатформаГолосИзображенияФайлыТемыРеакцииВвод текстаПотоковое
Telegram✅✅✅✅—✅✅
Discord✅✅✅✅✅✅✅
Slack✅✅✅✅✅✅✅
Google Chat—✅✅✅—✅—
WhatsApp—✅✅——✅✅
Signal—✅✅——✅✅
SMS———————
Email—✅✅✅———
Home Assistant———————
Mattermost✅✅✅✅—✅✅
Matrix✅✅✅✅✅✅✅
DingTalk—✅✅—✅—✅
Feishu/Lark✅✅✅✅✅✅✅
WeCom✅✅✅————
WeCom Callback———————
Weixin✅✅✅——✅✅
BlueBubbles—✅✅—✅✅—
QQ✅✅✅——✅—
Yuanbao✅✅✅——✅✅
Microsoft Teams—✅—✅—✅—
LINE—✅✅——✅—
ntfy———————
Raft———————

Голос = TTS-ответы и расшифровка голосовых сообщений. Изображения = отправка/приём картинок. Файлы = вложения. Темы = ветки/треды. Реакции = emoji-реакции. Ввод = индикатор «печатает…». Стриминг = постепенное обновление сообщения через edit.

Архитектура​

Каждый адаптер платформы получает сообщения, направляет их через хранилище сессий каждого чата и отправляет их AIAgent для обработки. Шлюз также запускает планировщик cron, который каждые 60 секунд выполняет необходимые задания.

жетонов намеренного молчания​

Для групповых чатов, перехватчиков и потоков автоматизации VibeOS поддерживает явные токены молчания. Если окончательный ответ агента представляет собой ровно один поддерживаемый токен, шлюз подавляет исходящую доставку и ничего не отправляет в чат.

Поддерживаемые токены:

  • [SILENT]
  • SILENT
  • NO_REPLY
  • NO REPLY

Пробелы и регистр нормализуются, но весь окончательный ответ должен быть токеном. Предложение типа «Использовать [SILENT], когда ничего не изменилось» доставляется нормально.

Молчание — это только решение о доставке. VibeOS сохраняет молчание помощника в стенограмме сессияа, поэтому разговор по-прежнему нормально чередуется:

user: side-channel chatter
assistant: [SILENT] # stored, not delivered
user: next message

Неудачные повороты по-прежнему проявляются как ошибки; VibeOS не скрывает сбои только потому, что текст напоминает токен молчания.

Быстрая настройка​

Самый простой способ настройки платформ обмена сообщениями — интерактивный мастер:

vibeos gateway setup        # Interactive setup for all messaging platforms

Он поможет вам настроить каждую платформу с помощью клавиш со стрелками, покажет, какие платформы уже настроены, и предложит запустить /restart шлюз после завершения.

Команды шлюза​

vibeos gateway              # Run in foreground
vibeos gateway setup # Configure messaging platforms interactively
vibeos gateway install # Install as a user service (Linux) / launchd service (macOS)
sudo vibeos gateway install --system # Linux only: install a boot-time system service
vibeos gateway start # Start the default service
vibeos gateway stop # Stop the default service
vibeos gateway status # Check default service status
vibeos gateway status --system # Linux only: inspect the system service explicitly

Команды чата (внутренние сообщения)​

КомандаОписание
/new или /resetНачать новый разговор
/model [provider:model]Показать или изменить модель (поддерживает синтаксис provider:model)
/personality [name]Установить личность
/retryПовторить последнее сообщение
/undoУдалить последний обмен
/statusПоказать информацию о сессияе
/whoamiПокажите доступ к вашей косой команде в этой области (администратор/пользователь/неограниченный)
/stopОстановить работающий агент
/approveУтвердить ожидающую опасную команду
/denyОтклонить ожидающую опасную команду
/sethomeУстановить этот чат как домашний канал
/compressСжать контекст разговора вручную
/title [name]Установить или показать заголовок сессияа
/resume [name]Возобновить ранее названный сессия
/usageПоказать использование токена для этого сессияа
/insights [days]Показать информацию об использовании и аналитику
/reasoning [level|show|hide]Изменить усилие рассуждения или переключить отображение рассуждений
/voice [on|off|tts|join|leave|status]Управляйте голосовыми ответами на сообщения и поведением голосового канала Discord
/rollback [number]Получение списка или восстановление контрольных точек файловой системы
/background <prompt>`Запуск запроса в отдельном фоновом сессияе
/reload-mcpПерезагрузить серверы MCP из конфигурации
/updateОбновите VibeOS до последней версии
/helpПоказать доступные команды
/<skill-name>`Вызвать любой установленный навык

Управление сессияами​

Сохранение сессияа​

Сессияы сохраняются в сообщениях до тех пор, пока они не будут сброшены. Агент запоминает контекст вашего разговора.

Сбросить политики​

Сброс сессий на основе настраиваемых политик:

ПолитикаПо умолчаниюОписание
Ежедневно4:00Сброс в определенный час каждый день
Простой1440 минСброс после N минут бездействия
Оба(комбинированный)Что сработает первым

Живой фоновый процесс (начинающийся с terminal(background=true)) обычно защищает свой сессия от сброса, поэтому выходные данные не теряются. Чтобы остановить забытое процесс — скажем, сервер предварительного просмотра — от закрепления сессияа открытым навсегда, фоновый процесс старше bg_process_max_age_hours (по умолчанию 24) нет более длинные блоки сбрасываются. Процесс не уничтожается, а игнорируется только при сбросе охранник. Установите для него значение 0, чтобы отключить отключение (сбрасываются все блоки текущего процесса, старое поведение) или повысить его, если вы выполняете законную многодневную работу, жизнеспособность которой следует поддерживать разговор открытым.

Настройте переопределения для каждой платформы в ~/.vibeos/gateway.json:

{
"reset_by_platform": {
"telegram": { "mode": "idle", "idle_minutes": 240 },
"discord": { "mode": "idle", "idle_minutes": 60 }
}
}

Безопасность​

По умолчанию шлюз запрещает доступ всем пользователям, которые не входят в список разрешенных или не подключены через DM. Это безопасный вариант по умолчанию для бота с доступом к терминалу.

# Restrict to specific users (recommended):
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678
SIGNAL_ALLOWED_USERS=+155****4567,+155****6543
SMS_ALLOWED_USERS=+155****4567,+155****6543
EMAIL_ALLOWED_USERS=trusted@example.com,colleague@work.com
MATTERMOST_ALLOWED_USERS=3uo8dkh1p7g1mfk49ear5fzs5c
MATRIX_ALLOWED_USERS=@alice:matrix.org
DINGTALK_ALLOWED_USERS=user-id-1
FEISHU_ALLOWED_USERS=ou_xxxxxxxx,ou_yyyyyyyy
WECOM_ALLOWED_USERS=user-id-1,user-id-2
WECOM_CALLBACK_ALLOWED_USERS=user-id-1,user-id-2
TEAMS_ALLOWED_USERS=aad-object-id-1,aad-object-id-2

# Or allow
GATEWAY_ALLOWED_USERS=123456789,987654321

# Or explicitly allow all users (NOT recommended for bots with terminal access):
GATEWAY_ALLOW_ALL_USERS=true

Сопряжение DM (альтернатива белым спискам)​

Вместо ручной настройки идентификаторов пользователей неизвестные пользователи получают одноразовый код сопряжения, когда они отправляют боту личные сообщения. Электронная почта является исключением: неизвестные отправители электронной почты игнорируются, если соединение электронной почты не включено явно.

# The user sees: "Pairing code: XKGH5N7P"
# You approve them with:
VibeOS pairing approve telegram XKGH5N7P

# Other pairing commands:
VibeOS pairing list # View pending + approved users
VibeOS pairing revoke telegram 123456789 # Remove access

Срок действия кодов сопряжения истекает через 1 час, они ограничены по скорости и используют криптографическую случайность.

Администраторы против обычных пользователей​

Белые списки отвечают: «Может ли этот человек вообще связаться с ботом?» Разделение администратор/пользователь отвечает: «Теперь, когда они внутри, что им разрешено делать?»

Каждый разрешенный пользователь попадает в один из двух уровней для каждой области (DM или группа/channel):

  • Администратор — полный доступ. Может запускать любую зарегистрированную команду слэша (встроенная + плагин) и использовать все закрытые возможности.
  • Обычный пользователь — доступ ограничен. Может нормально общаться с агентом, но может выполнять только те команды, которые вы явно включили. Всегда разрешенный этаж — /help и /whoami.

Уровни настраиваются для каждой платформы и области. Статус администратора DM не подразумевает статус администратора группы/channel — каждая область имеет свой собственный список администраторов.

Какие ярусные ворота сегодня: slash-команды. Разделение осуществляется через реестр активных команд, поэтому оно охватывает встроенные команды и команды, зарегистрированные в плагинах, без привязки к каждой функции. Обычный чат не затрагивается — пользователи, не являющиеся администраторами, по-прежнему могут общаться с агентом.

Что может быть закрыто в будущем: дополнительные возможности (доступ к инструментам, переключение моделей, дорогостоящие операции) будут зависеть от того же различия между администратором и пользователем, когда мы их добавим. Настройка разделения сейчас означает, что эти будущие ограничения будут действовать без проблем, и вам не придется заново моделировать, кто является администратором.

Конфигурация​

gateway:
platforms:
discord:
extra:
allow_from: ["111", "222", "333"]
allow_admin_from: ["111"] # admins → all slash commands
user_allowed_commands: [status, model] # what non-admins may run
# Optional: separate group/channel scope
group_allow_admin_from: ["111"]
group_user_allowed_commands: [status]

Обратная совместимость: если allow_admin_from не установлен для области, разделение уровней отключено для этой области, и каждый разрешенный пользователь имеет полный доступ. Существующие установки продолжают работать без изменений — включитесь, если хотите изменить это.

Проверка вашего доступа​

Используйте /whoami на любой платформе, чтобы увидеть активную область, ваш уровень (администратор/пользователь/неограниченный) и какие slash-команды вам доступны. Примеры для конкретных платформ см. на страницах Telegram и Discord.

Прерывание агента​

Отправьте любое сообщение, пока агент работает, чтобы прервать его. Ключевые модели поведения:

  • Выполняемые команды терминала немедленно уничтожаются (SIGTERM, затем SIGKILL через 1 с)
  • Вызовы инструментов отменяются — запускается только текущий, остальные пропускаются.
  • Несколько сообщений объединяются — сообщения, отправленные во время прерывания, объединяются в одно приглашение.
  • Команда /stop — прерывание без постановки в очередь последующего сообщения.

Очередь, прерывание и управление (режим занятого входа)​

По умолчанию сообщение занятому агенту прерывает его. Доступны еще два режима:

  • queue — последующие сообщения ждут и запускаются на следующем ходу после завершения текущей задачи.
  • steer — последующие сообщения вводятся в текущий запуск через /steer, поступающие к агенту после следующего вызова инструмента. Ни прерывания, ни нового поворота. Возвращается к поведению queue, если агент еще не запущен.
display:
busy_input_mode: steer # or queue, or interrupt (default)
busy_ack_enabled: true # set to false to suppress the ⚡/⏳/⏩ chat reply entirely

Когда вы впервые отправляете сообщение занятому агенту на любой платформе, VibeOS добавляет к подтверждению занятости однострочное напоминание с объяснением ручки ("💡 First-time tip — …"). Напоминание срабатывает один раз за установку — его фиксирует флаг под onboarding.seen.busy_input_prompt. Удалите этот ключ, чтобы снова увидеть подсказку.

Если вы обнаружите, что подтверждение занятости шумит — особенно при голосовом вводе или быстрых сообщениях — установите display.busy_ack_enabled: false. Ваш ввод по-прежнему находится в очереди /steered/interrupts, как обычно, только ответ в чате отключен.

Уведомления о ходе работы инструмента​

Контролируйте, сколько действий инструмента отображается в ~/.vibeos/config.yaml:

display:
tool_progress: all # off | new | all | verbose
tool_progress_command: false # set to true to enable /verbose in messaging
# How progress is grouped on platforms that support message editing:
# accumulate (default) — edit one bubble in place as tools run
# separate — send one message per tool (pre-v0.9 style; noisier)
# Only applies where tool_progress is already enabled.
tool_progress_grouping: accumulate # accumulate | separate

Временные метки сообщений в контексте модели​

По умолчанию выключено. Если этот параметр включен, VibeOS добавляет удобочитаемую временную метку. (например, [Tue 2026-04-28 13:40:53 CEST]) на каждое сообщение пользователя в контекст модели, чтобы агент знал, когда были отправлены сообщения — полезно для временное рассуждение («вы спросили сегодня утром…», заметив большой разрыв). Это не добавляется в сообщения помощника или системную подсказку.

gateway:
message_timestamps:
enabled: false # set true to show send-times to the model

Сохраненные расшифровки всегда остаются чистыми — временная метка сохраняется как сообщение. метаданные независимо от этого переключателя, поэтому включение их позже также появляется время отправки прошлых сообщений, а при воспроизведении никогда не накапливаются повторяющиеся префиксы.

Если эта функция включена, бот отправляет сообщения о состоянии во время работы:

💻 `ls -la`...
🔍 web_search...
📄 web_extract...
🐍 execute_code...

Фоновые сессии​

Запустите приглашение в отдельном фоновом сессияе, чтобы агент работал над ним независимо, пока ваш основной чат оставался отзывчивым:

/background Check all servers in the cluster and report any that are down

VibeOS немедленно подтверждает:

🔄 Background task started: "Check all servers in the cluster..."
Task ID: bg_143022_a1b2c3

Как это работает​

Каждое приглашение /background порождает отдельный экземпляр агента, который работает асинхронно:

  • Изолированный сессия — у фонового агента есть собственный сессия со своей историей разговоров. Он не знает вашего текущего контекста чата и получает только предоставленное вами приглашение.
  • Та же конфигурация — наследует вашу модель, поставщика, наборы инструментов, настройки обоснования и маршрутизацию поставщика из текущей настройки шлюза.
  • Неблокируемый — ваш основной чат остается полностью интерактивным. Отправляйте сообщения, запускайте другие команды или запускайте дополнительные фоновые задачи, пока он работает.
  • Доставка результата — после завершения задачи результат отправляется обратно в тот же чат или канал, где вы отправили команду, с префиксом « ✅ Фоновая задача выполнена». Если это не удастся, вы увидите сообщение «❌ Фоновая задача не удалась» с ошибкой.

Уведомления о фоновых процессах​

Когда агент использует terminal(background=true) для запуска длительного выполнения процессов (серверов, сборок и т. д.), VibeOS может отправлять обновления статуса. Контроль это с display.background_process_notifications в ~/.vibeos/config.yaml. Та же настройка применяется к обмену сообщениями на шлюзе, классическому CLI и опросщик уведомлений TUI / рабочий стол:

display:
background_process_notifications: all # all | result | error | off
РежимЧто вы получаете
allВыполнение/просмотр обновлений и окончательного сообщения о завершении (по умолчанию)
resultТолько окончательное сообщение о завершении (независимо от кода выхода)
errorТолько последнее сообщение, если код выхода не равен нулю
offНикакого наблюдения за процессами/слива сообщений вообще

Вы также можете установить это через переменную среды:

VIBEOS_BACKGROUND_NOTIFICATIONS (legacy: VIBEOS_BACKGROUND_NOTIFICATIONS)=result

Варианты использования​

  • Мониторинг сервера — «/background Проверьте работоспособность всех служб и сообщите мне, если что-то не так»
  • Длинные сборки — «/background Создайте и разверните промежуточную среду», продолжая общаться в чате.
  • Исследовательские задачи — «/background Изучите цены конкурентов и сведите их в таблицу».
  • Операции с файлами — «/background Упорядочить фотографии в ~/Downloads по дате в папках»
подсказка

Фоновые задачи на платформах обмена сообщениями выполняются по принципу «сделал и забыл» — вам не нужно ждать или проверять их. Результаты приходят в тот же чат автоматически после завершения задачи.

Управление услугами​

Linux (systemd)​

vibeos gateway install               # Install as user service
vibeos gateway start # Start the service
vibeos gateway stop # Stop the service
vibeos gateway status # Check status
journalctl --user -u VibeOS-gateway -f # View logs

# Enable lingering (keeps running after logout)
sudo loginctl enable-linger $USER

# Or install a boot-time system service that still runs as your user
sudo vibeos gateway install --system
sudo vibeos gateway start --system
sudo vibeos gateway status --system
journalctl -u VibeOS-gateway -f

Используйте пользовательскую службу на ноутбуках и устройствах для разработки. Используйте системную службу на VPS или безголовых хостах, которые должны возвращаться при загрузке, не полагаясь на задержку systemd.

Не добавляйте собственный модуль уничтожения ExecStopPost.

Установленный модуль VibeOS уже полностью отключает шлюз с помощью KillMode=mixed + KillSignal=SIGTERM и использует Restart=always с RestartForceExitStatus, поэтому обновления и /restart восстанавливаются правильно. Не добавляйте системный модуль, такой как ExecStopPost=/bin/kill -9 $MAINPID — ExecStopPost срабатывает при каждой остановке, включая чистый перезапуск, поэтому SIGKILL запускает только что созданный экземпляр до того, как он стабилизируется, а Restart=always немедленно его перезапускает. Результатом является бесконечный цикл перезапуска (а в Telegram — поток сообщений о перезапуске). Если вы добавили такой дроп-ин, удалите его: systemctl --user edit VibeOS-gateway (или sudo systemctl edit VibeOS-gateway для системной службы) и удалите строку ExecStopPost, затем systemctl --user daemon-reload.

Безголовые виртуальные машины: обслуживание пользователей + задержка позволяет избежать запросов root

Системной службе требуется root для каждого перезапуска, включая автоматический перезапуск шлюза в конце vibeos update. Когда vibeos update запускается от имени пользователя без полномочий root, он пытается использовать sudo systemctl без пароля; если это недоступно, он пропускает перезагрузку и печатает ручную команду sudo systemctl restart VibeOS-gateway (она никогда не блокируется при интерактивном запросе пароля).

Для обезглавленной виртуальной машины, в которую вы никогда не входите в систему, служба user с включенной задержкой обеспечивает такое же поведение при запуске при загрузке без участия root:

vibeos gateway install          # user service
sudo loginctl enable-linger $USER # one-time: start at boot, survive logout

После этого vibeos update может перезапустить шлюз без каких-либо привилегий. Если вы предпочитаете сохранить системную службу, либо запустите обновления с помощью sudo VibeOS update, либо разрешите учетной записи службы без пароля sudo для systemctl, например в sudo visudo -f /etc/sudoers.d/VibeOS-gateway:

VibeOS ALL=(root) NOPASSWD: /usr/bin/systemctl --no-ask-password reset-failed VibeOS-gateway*, /usr/bin/systemctl --no-ask-password start VibeOS-gateway*, /usr/bin/systemctl --no-ask-password restart VibeOS-gateway*

Не оставляйте одновременно пользовательский и системный шлюзы, если вы действительно этого не хотите. VibeOS выдаст предупреждение, если обнаружит оба, поскольку поведение start/stop/status становится неоднозначным.

Несколько установок

Если вы запускаете несколько установок VibeOS на одном компьютере (с разными каталогами VIBEOS_HOME (устаревший VIBEOS_HOME)), каждая из них получает свое собственное имя службы systemd. По умолчанию ~/.vibeos использует VibeOS-gateway; в других установках используется VibeOS-gateway-&lt;hash&gt;. Команды vibeos gatewayавтоматически выбирают правильную службу для вашего текущегоVIBEOS_HOME`.

macOS (запущен)​

vibeos gateway install               # Install as launchd agent
vibeos gateway start # Start the service
vibeos gateway stop # Stop the service
vibeos gateway status # Check status
tail -f ~/.vibeos/logs/gateway.log # View logs

Сгенерированный список находится по адресу ~/Library/LaunchAgents/ai.VibeOS.gateway.plist. Он включает в себя три переменные среды:

  • PATH — ваша полная оболочка PATH во время установки с добавленными venv bin/ и node_modules/.bin. Это гарантирует, что установленные пользователем инструменты (Node.js, ffmpeg и т. д.) будут доступны для подпроцессов шлюза, таких как мост WhatsApp.
  • VIRTUAL_ENV — указывает на виртуальную среду Python, чтобы инструменты могли правильно разрешать пакеты.
  • VIBEOS_HOME (устаревший вариант VIBEOS_HOME все еще принимается) — ограничивает шлюз вашей установкой VibeOS.
Изменения PATH после установки

Списки launchd являются статическими — если вы устанавливаете новые инструменты (например, новую версию Node.js через nvm или ffmpeg через Homebrew) после настройки шлюза, запустите vibeos gateway install еще раз, чтобы получить обновленный PATH. Шлюз обнаружит устаревший список и автоматически перезагрузит его.

Несколько установок

Как и служба systemd Linux, каждый каталог VIBEOS_HOME получает собственную метку запуска. По умолчанию ~/.vibeos использует ai.VibeOS.gateway; в других установках используется ai.VibeOS.gateway-<suffix>`.

Наборы инструментов для конкретной платформы​

Каждая платформа имеет свой набор инструментов:

ПлатформаНабор инструментовВозможности
CLIVibeOS-cliПолный доступ
TelegramVibeOS-telegramПолный набор инструментов, включая терминал
DiscordVibeOS-discordПолный набор инструментов, включая терминал
WhatsAppVibeOS-whatsappПолный набор инструментов, включая терминал
WhatsApp Cloud APIVibeOS-whatsappПолный набор инструментов, включая терминал (общий toolset с мостом Baileys)
SlackVibeOS-slackПолный набор инструментов, включая терминал
Google ChatVibeOS-google_chatПолный набор инструментов, включая терминал
SignalVibeOS-signalПолный набор инструментов, включая терминал
SMSVibeOS-smsПолный набор инструментов, включая терминал
EmailVibeOS-emailПолный набор инструментов, включая терминал
Home AssistantVibeOS-homeassistantПолный набор инструментов + управление HA (ha_list_entities, ha_get_state, ha_call_service, ha_list_services)
MattermostVibeOS-mattermostПолный набор инструментов, включая терминал
MatrixVibeOS-matrixПолный набор инструментов, включая терминал
DingTalkVibeOS-dingtalkПолный набор инструментов, включая терминал
Feishu/LarkVibeOS-feishuПолный набор инструментов, включая терминал
WeComVibeOS-wecomПолный набор инструментов, включая терминал
WeCom CallbackVibeOS-wecom-callbackПолный набор инструментов, включая терминал
WeixinVibeOS-weixinПолный набор инструментов, включая терминал
BlueBubblesVibeOS-bluebubblesПолный набор инструментов, включая терминал
QQBotVibeOS-qqbotПолный набор инструментов, включая терминал
YuanbaoVibeOS-yuanbaoПолный набор инструментов, включая терминал
Microsoft TeamsVibeOS-teamsПолный набор инструментов, включая терминал
API ServerVibeOS-api-serverПолные инструменты (без clarify, send_message, text_to_speech — программный доступ без интерактивного пользователя)
WebhooksVibeOS-webhookПолный набор инструментов, включая терминал
RaftVibeOS-raftКанал только для wake-up; агент ходит в Raft CLI за message I/O

Управление многоплатформенным шлюзом​

На шлюзе обычно работает сразу несколько адаптеров (Telegram + Discord + Slack и т. д.). В разделах ниже описаны операции второго дня, охватывающие все платформы.

/platform команда​

После запуска шлюза используйте slash-команду /platform в CLI или любом подключённом чате, чтобы смотреть и управлять отдельными адаптерами без перезапуска всего шлюза:

/platform list                  # show all adapters and their state
/platform pause <name> # stop dispatching new messages to one adapter
/platform resume <name> # re-enable a paused adapter

/platform list показывает, является ли каждый адаптер running, paused (вручную) или paused-by-breaker (см. ниже). При паузе адаптер остается загруженным, а его фоновые циклы активными — входящие сообщения сбрасываются на пол, но само соединение остается открытым, поэтому возобновление происходит мгновенно.

См. также более широкую команду сводки состояния /platforms.

Автоматический выключатель​

Каждый адаптер оснащен автоматическим выключателем. Повторяющиеся сбои при повторных попытках (сетевые сигналы, ответы на ограничение скорости, ответы восходящего потока 5xx, отключение веб-сокета) приводят к срабатыванию прерывателя — адаптер автоматически приостанавливается, уведомление оператора отправляется на домашний канал другой работающей платформы, когда она настроена, и создается структурированная строка журнала.

Выключатель не автоматически возобновляет работу — он остается разомкнутым до тех пор, пока вы не запустите /platform resume <name>` вручную. Это сделано намеренно: если платформа находится в постоянном сбое, вы не хотите, чтобы шлюз переподключался.

Куда смотреть, когда платформа приостановлена​

Когда адаптер приостановлен, проверьте:

  1. Журнал шлюза (~/.vibeos/logs/gateway.log или журнал модуля systemd / launchd). Найдите название платформы и circuit breaker, paused или disabled. Событие отключения включает в себя количество отказов и последнюю ошибку.
  2. Вывод /platform list — показывает текущее состояние и последнюю причину.
  3. Страница статуса провайдера (статус Telegram-бота API, статус Discord и т. д.). Выключатель сработал, потому что платформа была неработоспособна; не пытайтесь возобновить, пока он не вернется.

Как только восходящий поток исправен, /platform resume <name>` сбрасывает прерыватель и повторно включает адаптер.

Уведомления о перезапуске​

Когда шлюз перезапускается (или отключается во время сессий в реальном времени), он может отправить одноразовое сообщение «агент вернулся» / «агент был прерван» на домашний канал каждой платформы. Для каждой платформы это контролируется флагом gateway_restart_notification в gateway-config.yaml, который по умолчанию равен true:

При остановке idle-gateway без активной работы сообщение о завершении не отправляется, даже если процесс получил сигнал. Это делает технические окна и ограниченные smoke-тесты тихими, сохраняя уведомления о прерванной работе для активных задач и сценариев перезапуска.

gateway:
platforms:
telegram:
home_chat_id: "123456789"
gateway_restart_notification: false # opt out for this platform
discord:
home_chat_id: "987654321"
# gateway_restart_notification omitted → defaults to true

Отключите его на шумных платформах или платформах с низким приоритетом, оставив его включенным для основного чата. Уведомление отправляется один раз при перезапуске, независимо от количества активных сессий.

Возобновление сессияа после перезапуска шлюза​

Когда шлюз отключается с помощью вызова или генерации инструмента в реальном времени, затронутые сессии помечаются как restart_interrupted. При следующем запуске шлюз планирует автоматическое возобновление для каждого из них — пользователь получает короткое предупреждение в чате («Отправьте любое сообщение после перезапуска, и я постараюсь возобновить с того места, где вы остановились»), и сессия возобновляется с последнего зафиксированного хода, когда он отвечает.

Такое поведение включено по умолчанию и регистрируется при запуске шлюза:

Scheduled auto-resume for N restart-interrupted session(s)

Никакой настройки не требуется. Если вы не хотите, чтобы вас предупреждали, установите на платформе gateway_restart_notification: false.

Настройки прогресса по умолчанию для мобильных устройств​

Telegram обычно представляет собой мобильный почтовый ящик, поэтому настройки по умолчанию настроены для этой поверхности:

  • tool_progress по умолчанию имеет значение off — никакой навигационной цепочки для каждого инструмента, заполняющей чат.
  • busy_ack_detail по умолчанию имеет значение off — подтверждения состояния занятости и длительные контрольные сигналы остаются краткими (нет подробностей отладки iteration 21/60).
  • interim_assistant_messages остается включенным — настоящие комментарии помощника в середине хода (модель буквально говорит вам, что она собирается сделать) — это сигнал, а не шум.
  • long_running_notifications остается включенным – одиночное всплывающее окно редактирования «⏳ Работает — N минут» обновляется каждые несколько минут, поэтому вам не придется полчаса смотреть на typing….

Откажитесь от любого из сохраненных значений по умолчанию или вернитесь к подробному описанию прогресса для каждой платформы:

display:
platforms:
telegram:
# Re-enable the tool-progress stream
tool_progress: new
# Show "iteration N/M, running: tool" in heartbeats and busy acks
busy_ack_detail: true
# Or quiet them entirely
interim_assistant_messages: false
long_running_notifications: false

Очистка пузырьков прогресса (согласие)​

Сообщения о прогрессе инструмента, сигнал «все еще работает…» и всплывающие сообщения об обратном статусе также могут быть автоматически удалены после получения окончательного ответа. Включите каждую платформу через display.platforms.&lt;platform&gt;.cleanup_progress:

display:
platforms:
telegram:
cleanup_progress: true
discord:
cleanup_progress: true

По умолчанию false. Только платформы, адаптер которых реализует delete_message, учитывают эту настройку (в настоящее время Telegram и Discord). Неудачные запуски пропускают очистку, поэтому пузырьки остаются хлебными крошками.

Следующие шаги​