OpenClaw сияет, когда пользователи видят одного цельного агента, но ваш шлюз на самом деле жонглирует несколькими чат-API, у каждого своя семантика повторов. В 2026 году инциденты вроде «сошёл с ума модель» часто — это дважды доставленные webhooks или сбой основного канала без отрепетированного резервного пути. Матрица ранжирует Slack, Telegram и Discord для failover, задаёт ключи идемпотентности и даёт восемь воспроизводимых шагов для хоста выделенного Mac mini M4 на NodeMac (автоматизация SSH, VNC для разовых разрешений, регионы HK, JP, KR, SG, US).
Базовые интеграции: webhooks Slack и Discord, мультимодельный failover и таймауты, каталог состояния и чеклист headless-шлюза. Здоровье: пробы готовности; диагностика: doctor. Цены: цены; помощь: помощь.
Режим отказа, который вы реально отлаживаете
Чат-провайдеры агрессивно повторяют запросы, когда ваш шлюз отвечает медленным HTTP. Если побочные эффекты инструментов (тикеты, деплои, возвраты) не идемпотентны, повторы превращаются в дублирующие инциденты. Отдельно Socket Mode или long polling рвутся при сне ноутбука, смене Wi‑Fi или корпоративных TLS-middleboxes — симптомы исчезают на стационарном облачном Mac со стабильным egress.
- Как минимум одна доставка — базовое допущение; проектируйте под него.
- Человеческая эскалация должна обходить автоматизацию, если хранилище дедупликации недоступно.
- Кросс-постинг одного ответа агента в два основных канала путает аудит.
Матрица уровней каналов
| Канал | Лучшая роль в 2026 | Оговорка failover |
|---|---|---|
| Slack | Основной для enterprise; богатые треды | Токены Socket Mode нужно ротировать по документированному календарю |
| Telegram | Быстрые личные боты; хороший резервный broadcast | Режимы приватности групп меняют семантику упоминаний — тестируйте на реальных группах |
| Discord | Агенты для сообщества; fan-in webhook | Лимиты различаются по гильдии; шардируйте алерты отдельно |
Матрица идемпотентности и повторов
| Входящий паттерн | Рецепт ключа дедупликации | Подсказка TTL |
|---|---|---|
| Slack Events API | Хэш event_id + team_id |
минимум 24 ч |
| Telegram updates | update_id на бота |
48 ч при возможном долгом офлайн-обслуживании |
| Discord interactions | id из payload взаимодействия + id гильдии |
12 ч, если не проксируете более длинные повторы |
Совет по хранению: держите состояние дедупликации на том же несинхронизируемом томе, что и каталог состояния OpenClaw, чтобы SQLite или файловые блокировки вели себя согласованно под launchd.
Восемь шагов внедрения
- Объявить уровни в одностраничной архитектурной заметке с владельцами.
- Реализовать хранилище дедупликации с метриками hit rate и вытеснения.
- Тесты повтора из сохранённых payload в staging по два раза на канал.
- Добавить предохранитель, когда падает и резервный канал — fail closed к людям.
- Логировать корреляционные ID через шлюз, вызовы инструментов и исходящие ответы чата.
- Автоматизировать ротацию токенов ежеквартально для Slack Socket Mode.
- Game-day блокировки DNS к API основного провайдера.
- Документировать заморозку, останавливающую выполнение инструментов без удаления конфигурации.
Частые вопросы
Должны ли Slack и Discord оба быть основными?
Нет — одно основное для автоматического выполнения инструментов; другое для уведомлений или деградированного режима.
Что делает хороший ключ дедупликации?
Стабильные ID провайдера плюс область workspace или гильдии, хэш, хранение с TTL дольше окон повторов.
Зачем выделенный Mac NodeMac?
Аптайм долгих соединений, предсказуемые пути, региональное размещение рядом с пользователями и API.