OpenClaw подключает вашего персонального ИИ-ассистента к Slack через Socket Mode или HTTP-вебхуки, но когда бот замолкает, может быть действительно сложно определить, где именно находится проблема -- в шлюзе, в конфигурации Slack-приложения, у провайдера модели или где-то между ними. Наиболее надёжный подход -- следовать систематической диагностической лестнице, выполняя пять конкретных команд по порядку, вместо того чтобы наугад менять настройки конфигурации. В этом руководстве задокументирован каждый режим отказа, с которым столкнулось сообщество начиная с версии OpenClaw v2026.1, и каждый из них сопоставлен с конкретным исправлением, чтобы вы могли вернуть бота к работе за минуты, а не за часы.
Краткое содержание
Если ваш OpenClaw Slack-бот не отвечает, выполните эти пять команд по порядку, чтобы сузить область проблемы:
bashopenclaw status # 1. Работает ли шлюз? openclaw gateway status # 2. Подключён ли Slack? openclaw doctor # 3. Автоматическое обнаружение проблем конфигурации openclaw channels status --probe # 4. Проходят ли события? openclaw logs --follow # 5. Наблюдение за ошибками в реальном времени
Наиболее распространённые причины: шлюз не запущен (перезапустите его), отсутствуют OAuth-права вроде im:write (переустановите Slack-приложение после добавления прав), DM-сопряжение не подтверждено (выполните openclaw pairing approve slack <код>), канал не в списке разрешённых (добавьте его в channels.slack.channels), ошибка аутентификации модели (проверьте ваш API-ключ или переключитесь на бесплатную модель). Если openclaw doctor --fix не решает проблему автоматически, прочтите соответствующие разделы ниже для вашего конкретного симптома.
Быстрая диагностика -- определите проблему за 5 команд

Прежде чем погружаться в конкретные исправления, необходимо определить, какой именно компонент сломан. Архитектура OpenClaw включает несколько отдельных уровней -- процесс шлюза, плагин канала Slack, среду выполнения агента и провайдера модели -- и сбой на любом уровне производит один и тот же видимый симптом: тишину. Диагностическая лестница ниже тестирует каждый уровень последовательно, чтобы вы могли перейти сразу к соответствующему разделу с исправлением.
Команда 1: openclaw status даёт общую картину. Она сообщает, работает ли демон шлюза, как долго он запущен, какие каналы подключены и в каком состоянии находится загрузка агента. Если вывод говорит, что шлюз не запущен, переходите к разделу «Сбои шлюза и подключения». Если показывается «Gateway: running», но список подключённых каналов пуст, проблема в конфигурации Slack -- переходите к команде 2.
Команда 2: openclaw gateway status углубляется конкретно в демон. Она подтверждает RPC-связь между CLI и процессом шлюза, сообщает версию шлюза и показывает статус подключения по каждому каналу. Ищите строку [Slack] Connected via Socket Mode в выводе. Если Slack показан как отключённый или вообще отсутствует, скорее всего, неправильно настроены токены -- переходите к разделу о токенах. Если подключение установлено, проблема дальше по цепочке.
Команда 3: openclaw doctor -- это автоматический проверяющий состояние системы. Он валидирует синтаксис конфигурационного файла, проверяет наличие необходимых токенов, убеждается, что плагин Slack зарегистрирован в plugins.allow, и тестирует базовую связь. Выполнение openclaw doctor --fix применяет автоматические исправления для распространённых проблем вроде несоответствия прав, отсутствующих директорий и устаревших форматов конфигурации. Команда doctor выявляет примерно 60% проблем без дополнительного расследования (документация OpenClaw, 2026-02-07).
Команда 4: openclaw channels status --probe выполняет активный тест подключения. В отличие от пассивной проверки статуса, эта команда фактически отправляет зонд через WebSocket Socket Mode, чтобы убедиться, что события Slack проходят в обоих направлениях. Если зонд не проходит, возможно, неправильно настроены Event Subscriptions вашего Slack-приложения, или отсутствуют необходимые подписки на события бота, такие как message.im или app_mention. Полный список событий смотрите в разделе о токенах.
Команда 5: openclaw logs --follow потоково выводит логи в реальном времени. Когда логи идут, отправьте тестовое ЛС вашему боту в Slack и наблюдайте, что происходит. Вы увидите один из нескольких исходов: сообщение приходит и вызывает ошибку модели (переходите к разделу «Ошибки модели»), сообщение приходит, но маршрутизируется неправильно (переходите к разделу «Проблемы с тредами»), или сообщение вообще не появляется (подключение к Slack разорвано на уровне WebSocket -- перегенерируйте App Token). Эта команда -- самый мощный диагностический инструмент, потому что она показывает, где именно обрывается конвейер обработки сообщений.
Для более подробного справочника по всем кодам ошибок OpenClaw и их значениям смотрите наш полный справочник по кодам ошибок, который охватывает ошибки не только канала Slack.
Сбои шлюза и подключения
Сбои шлюза -- самая фундаментальная категория: если процесс шлюза не работает, ничего не функционирует. Эти проблемы обычно проявляются как полная тишина от бота без каких-либо записей в логах канала Slack.
Конфликты портов -- это самая частая причина отказа запуска шлюза. Шлюз OpenClaw по умолчанию слушает порт 18789, и если другой процесс (или предыдущий экземпляр шлюза) занимает этот порт, новый процесс немедленно завершается с ошибкой EADDRINUSE. Решение простое: определите процесс с помощью lsof -i :18789, завершите его и перезапустите. Если вы обнаружите устаревший файл gateway.lock по пути ~/.clawdbot/gateway.lock без соответствующего процесса, удалите его. Для постоянных конфликтов портов можно указать альтернативный порт с помощью openclaw gateway --port 18790 или задать его на постоянной основе в конфигурационном файле. Для подробного разбора проблем с портами смотрите наше руководство по устранению неполадок с портами.
Несовместимость версии Node.js -- ещё одна частая причина. OpenClaw требует Node.js 22 или выше, и запуск на более старой версии приводит к загадочным ошибкам при старте. Решение -- обновить Node.js: если вы используете nvm, выполните nvm install 22 && nvm use 22. После обновления проверьте версию командой node --version и перезапустите шлюз.
Застойные состояния процессов возникают, когда шлюз аварийно завершается без очистки. Симптомы включают ошибки «Gateway already running» при попытке запустить его, хотя фактически процесс шлюза не существует. Последовательность восстановления: завершите все осиротевшие процессы с помощью killall openclaw, удалите файл блокировки, если он существует, и перезапустите командой openclaw gateway restart. На macOS с launchd вам также может потребоваться выгрузить и перезагрузить plist LaunchAgent.
Ошибки синтаксиса конфигурации мешают шлюзу загрузить конфигурационный файл. OpenClaw использует JSON для конфигурации (хранится по пути ~/.openclaw/config.json или устаревшему пути ~/.clawdbot/moltbot.json), и одна неправильно поставленная запятая или незакрытая скобка вызовет тихий сбой при запуске. Выполните openclaw doctor для проверки синтаксиса конфигурации -- он сообщит точную строку и позицию символа любой ошибки парсинга JSON. Если вы только что мигрировали с ClawdBot или Moltbot, пути к конфигурации и имена ключей могли измениться. Обратитесь к нашему руководству по установке для актуальной структуры директорий.
Специфичные для платформы проблемы запуска также заслуживают упоминания. На Linux-системах с systemd сервис шлюза должен быть установлен в пользовательской области (systemctl --user), а не в системной. На macOS plist LaunchAgent нуждается в правильных определениях переменных окружения -- в частности NODE_EXTRA_CA_CERTS для разрешения SSL-сертификатов, что мы рассматриваем в разделе «Ошибки модели» ниже.
Ошибки токенов, прав и разрешений

Ошибки токенов и разрешений составляют примерно 40% всех обращений «бот не отвечает» в сообществе OpenClaw, и они могут быть особенно неприятными, поскольку шлюз выглядит нормально работающим, а сообщения тихо отбрасываются. API Slack возвращает конкретные коды ошибок для каждого типа сбоя разрешений, поэтому знание того, какая ошибка соответствует какому праву, -- это кратчайший путь к решению.
Понимание трёх типов токенов необходимо для устранения неполадок. App Token (xapp-...) аутентифицирует WebSocket-подключение в Socket Mode и требует права connections:write. Bot Token (xoxb-...) аутентифицирует все вызовы API -- отправку сообщений, чтение истории, добавление реакций. Необязательный User Token (xoxp-...) позволяет выполнять операции чтения под идентичностью установившего пользователя, что полезно для поиска и расширенного доступа к истории. Если ваш App Token истёк или был сгенерирован до включения Socket Mode, WebSocket-подключение не будет установлено. Решение -- перегенерировать токен на странице Basic Information вашего Slack-приложения в разделе App-Level Tokens, убедившись, что вы выбрали право connections:write.
Ошибка missing_scope -- самая распространённая проблема, связанная с токенами. Когда OpenClaw пытается вызвать метод API Slack без необходимого OAuth-права, Slack возвращает эту ошибку, и OpenClaw логирует её. Наиболее часто отсутствующее право -- im:write, которое необходимо для открытия DM-диалогов. Без него бот может получать ЛС (через im:history), но не может отправлять ответы. Решение: зайдите на api.slack.com/apps, перейдите в OAuth & Permissions, добавьте недостающее право и нажмите «Reinstall to Workspace» -- это критически важный шаг, который многие пользователи пропускают, поскольку добавление права не вступает в силу до переустановки приложения.
Вот полный список необходимых прав для Bot Token, как указано на официальной странице конфигурации Slack (docs.openclaw.ai, проверено 2026-02-07):
| Право | Назначение | Что перестаёт работать без него |
|---|---|---|
chat:write | Отправка/обновление/удаление сообщений | Бот не может отвечать вообще |
im:write | Открытие DM-диалогов | Не может инициировать ЛС |
channels:history | Чтение сообщений публичных каналов | Нет контекста в каналах |
groups:history | Чтение сообщений приватных каналов | Нет контекста в приватных каналах |
im:history | Чтение истории ЛС | Нет контекста ЛС |
mpim:history | Чтение истории групповых ЛС | Нет контекста групповых ЛС |
users:read | Разрешение упоминаний пользователей | Не может определить @упоминания |
app_mentions:read | Обнаружение @упоминаний бота | Бот игнорирует упоминания |
reactions:read/write | Реагирование на сообщения | Нет реакций-подтверждений (пользователи не уверены, видит ли бот их сообщение) |
files:write | Загрузка файлов | Не может делиться изображениями/файлами |
DM-сопряжение -- это механизм безопасности OpenClaw для контроля того, кто может отправлять боту личные сообщения. По умолчанию dm.policy установлен в "pairing", что означает, что каждый новый отправитель ЛС получает код сопряжения, который должен быть подтверждён на стороне сервера, прежде чем бот начнёт отвечать. Если ваши пользователи сообщают, что бот игнорирует их ЛС, проверьте статус сопряжения командой openclaw pairing list slack. Если пользователь указан как «pending», подтвердите его командой openclaw pairing approve slack <код>. Для разработки или личного использования можно переключиться в открытый режим, установив dm.policy: "open" и dm.allowFrom: ["*"] в конфигурации -- хотя это не рекомендуется для общих рабочих пространств.
Политики доступа к каналам -- вторая по частоте причина тихих сбоев. Когда groupPolicy установлен в "allowlist" (что является рекомендуемой настройкой для продакшена), бот отвечает только в каналах, явно указанных в channels.slack.channels. Если вы добавляете бота в новый канал Slack, но забываете добавить ID этого канала в список разрешённых, бот присоединится к каналу, будет получать сообщения, но никогда не ответит. Решение -- добавить канал с параметрами { "allow": true, "requireMention": true } в конфигурации.
Проблемы с тредами, маршрутизацией и доставкой сообщений
Проблемы с тредами и маршрутизацией сообщений -- это отдельная категория, где бот технически отвечает, но ответы появляются не в том месте или не формируют треды как ожидалось. Эти проблемы представляют собой смесь ошибок конфигурации и известных программных багов, поэтому понимание, что есть что, экономит значительное время отладки.
Конфигурация режима ответов контролирует, отвечает ли бот в основном канале или в тредах. OpenClaw поддерживает три режима: "off" (по умолчанию -- ответ в основном канале, если только исходное сообщение не было уже в треде), "first" (первый ответ идёт в тред, последующие -- в основной канал) и "all" (все ответы в тредах). Рекомендуемая конфигурация для продакшена использует настройку тредов по типу чата: replyToMode: "off" как базовый режим, с replyToModeByChatType: { direct: "all", group: "first" } для тредов в ЛС при сохранении видимости ответов в каналах.
Баг маршрутизации App Home (Issue #2412) -- это известный дефект в версиях OpenClaw до исправления в PR #2414, при котором @упоминание бота в ЛС между двумя пользователями (не ботами) вызывает маршрутизацию ответа в приватный App Home пользователя A вместо исходного диалога. Причина в том, что логика маршрутизации использовала цели доставки user:<id> для контекста ЛС вместо сохранения исходного channel:<id>. Если вы столкнулись с этим, обновитесь до OpenClaw v2026.2.2 или более поздней версии, которая включает исправление. В качестве обходного решения в более старых версиях используйте бота только в персональных ЛС или каналах.
Баг выхода ответа из треда (Issue #4424) -- это граничный случай конкурентности, когда отправка двух быстрых сообщений в треде до ответа бота приводит к тому, что второй ответ попадает в основной канал. Это происходит потому, что поставленный в очередь ответ теряет контекст thread_ts во время диспатча. Исправление появилось в v2026.2.2 через патч, предотвращающий повторное использование замыкания opts между сообщениями. Если вы видите, что ответы в тредах появляются как сообщения верхнего уровня, обновление до последней версии -- наиболее надёжное решение. В качестве временного обходного решения используйте replyToMode: "first" вместо "all" для снижения влияния.
Ограничения тредов в ЛС были задокументированы в Issue #2411 и затрагивали версии до января 2026 года. Установка replyToMode: "all" в конфигурации ЛС или использование тега [[reply_to_current]] не создавало тредовые ответы в личных сообщениях. Основная причина в том, что исправление тредов для каналов (Issue #1388) не распространялось на кодовый путь ЛС. Это было постепенно исправлено через несколько патчей, но если вы используете более старую версию, треды в ЛС могут работать не так, как ожидается. Практическое обходное решение -- использовать ЛС без тредов (что является поведением по умолчанию и работает надёжно) или обновиться.
Циклы ответов бот-бот могут привести к тому, что бот выглядит не отвечающим, потому что он исчерпывает свой лимит запросов, отвечая другому боту. Это происходит, когда allowBots: true установлен без соответствующего контроля по упоминаниям. Решение -- всегда сочетать allowBots с requireMention: true и определять явные списки разрешённых пользователей для каждого канала. Это гарантирует, что бот отвечает только при прямом @упоминании одобренным пользователем.
Ошибки модели и ИИ-провайдера
Когда шлюз работает, Slack подключён, но бот всё равно не выдаёт ответов, сбой почти всегда находится на уровне модели -- ИИ-провайдера, генерирующего ответы. Характерный признак -- статус агента «Bootstrap: PENDING» в выводе openclaw status, что означает, что агент ожидает ответа от провайдера модели, который так и не приходит.
Требования подписки на модель -- самый частый сюрприз. Как задокументировано в GitHub Discussion #4478, пользователи, настраивающие gemini-3-pro-preview, обнаруживают, что модель требует платную подписку Google AI Studio. На бесплатном тарифе модель тихо не работает -- ошибка не возвращается, агент просто зависает в состоянии PENDING. Решение -- переключиться на модель, поддерживающую ваш уровень подписки, например gemini-3-flash-preview для пользователей бесплатного тарифа. Вы можете проверить подключение к модели независимо командой openclaw agent --message "hello", которая обходит канал Slack и подтверждает, отвечает ли модель.
Ошибки валидации API-ключа дают похожие симптомы. Если ваш ключ OpenAI, Anthropic или Google API истёк, отозван или не имеет достаточной квоты, вызов модели тихо завершается неудачей в некоторых конфигурациях. Проверьте панель управления вашего провайдера на предмет статуса лимитов и валидности ключа. Для OpenAI убедитесь, что ключ имеет правильные разрешения проекта; для Anthropic проверьте, что ключ связан с правильным рабочим пространством.
Ошибки SSL-сертификатов особенно коварны на macOS, поскольку они препятствуют всем исходящим HTTPS-соединениям, включая вызовы API модели. Ошибка обычно отображается как UNABLE_TO_VERIFY_LEAF_SIGNATURE в логах. Причина в том, что Node.js на macOS не использует автоматически системное хранилище сертификатов. Решение -- установить переменную окружения NODE_EXTRA_CA_CERTS:
bashexport NODE_EXTRA_CA_CERTS=/etc/ssl/cert.pem # Затем перезапустите шлюз openclaw gateway restart
Если OpenClaw работает как LaunchAgent, вам также нужно добавить переменную окружения в plist-файл. Это единственное исправление решает широкий спектр загадочных проблем с подключением.
Ограничение скорости от провайдеров моделей может вызывать периодическую неотзывчивость. Если ваш бот иногда работает, но периодически замолкает на 30-60 секунд, возможно, вы сталкиваетесь с лимитами скорости. Решение -- настроить несколько провайдеров моделей как резервные в конфигурации OpenClaw, или использовать сервис агрегации API, такой как laozhang.ai, который предоставляет единый доступ к нескольким провайдерам моделей со встроенным управлением лимитами и автоматическим переключением. Это особенно полезно для продакшен-развёртываний, где простой из-за лимита одного провайдера недопустим.
Готовая к продакшену конфигурация Slack

Большинство проблем OpenClaw Slack в продакшене прослеживаются к использованию минимальной конфигурации для разработки, в которой нет надлежащих границ безопасности и контроля доступа. Конфигурация ниже представляет проверенную продакшен-настройку, предотвращающую наиболее частые режимы сбоев при сохранении удобства использования. Каждая строка аннотирована с указанием её назначения и проблемы, которую она предотвращает.
json{ "channels": { "slack": { "enabled": true, "appToken": "xapp-...", "botToken": "xoxb-...", "groupPolicy": "allowlist", "dm": { "enabled": true, "policy": "pairing", "allowFrom": ["U_YOUR_USER_ID"] }, "channels": { "C_ENGINEERING": { "allow": true, "requireMention": true, "users": ["U_ADMIN_1", "U_ADMIN_2"], "skills": ["search", "docs"], "systemPrompt": "Keep answers concise and technical." }, "C_GENERAL": { "allow": true, "requireMention": true } }, "replyToMode": "off", "replyToModeByChatType": { "direct": "all", "group": "first" }, "textChunkLimit": 4000, "mediaMaxMb": 20 } } }
Параметр groupPolicy: "allowlist" -- самая важная настройка для продакшена. Без неё значение по умолчанию -- "open", что означает, что бот отвечает в каждом канале, в который его приглашают, -- значительный риск безопасности в больших рабочих пространствах. С разрешительным списком вы явно контролируете, какие каналы могут активировать бота, какие пользователи авторизованы и какие навыки доступны для каждого канала.
DM-политика "pairing" требует от каждого нового отправителя ЛС пройти процесс подтверждения, прежде чем бот начнёт отвечать. Массив allowFrom предварительно одобряет определённые ID пользователей, чтобы назначенным администраторам не нужно было проходить сопряжение. Для личного использования достаточно указать свой собственный ID пользователя; для команды добавьте ID пользователей членов команды, которые должны иметь доступ к ЛС.
Конфигурация тредов replyToMode: "off" с переопределениями по типу чата -- наиболее надёжная продакшен-настройка. ЛС используют режим "all" для организации диалогов, а каналы используют режим "off" по умолчанию, чтобы ответы были видны всем без необходимости переходить в треды. Режим "first" для групповых ЛС представляет золотую середину -- первый ответ идёт в тред для контекста, но последующие ответы остаются видимыми.
Установка requireMention: true для каждого канала предотвращает два класса проблем: циклы бот-бот (когда сообщение другого бота запускает бесконечную цепочку ответов) и случайные срабатывания от обычного разговора. Бот отвечает только при явном @упоминании, что является ожидаемым поведением для общего рабочего пространства.
Если вы мигрируете с конфигурации разработки по умолчанию, применяйте эти изменения инкрементально -- начните с groupPolicy: "allowlist" и одного канала, убедитесь, что всё работает, затем добавьте DM-сопряжение и дополнительные каналы. Это уменьшает количество переменных в случае, если что-то пойдёт не так при миграции.
FAQ
Почему мой OpenClaw Slack-бот показывает «connected», но никогда не отвечает на сообщения?
Это самый частый и самый запутанный симптом, потому что шлюз и подключение к Slack выглядят здоровыми. Три наиболее вероятные причины: (1) Политика DM-сопряжения блокирует ваши сообщения -- выполните openclaw pairing list slack для проверки. (2) Канал не в списке разрешённых, если groupPolicy установлен в "allowlist" -- добавьте ID канала в channels.slack.channels. (3) Провайдер модели тихо завершается ошибкой -- выполните openclaw agent --message "test", чтобы проверить, отвечает ли ИИ-модель независимо от Slack. Если все три пункта в порядке, изучите openclaw logs --follow, отправив тестовое сообщение, чтобы увидеть, где именно обрывается конвейер.
Как исправить ошибки «missing_scope» в OpenClaw Slack?
Перейдите в ваше Slack-приложение на api.slack.com/apps, зайдите в OAuth & Permissions, добавьте недостающее право (сообщение об ошибке указывает, какое именно) и, что критически важно, нажмите «Reinstall to Workspace». Простое добавление права не вступает в силу -- приложение должно быть переустановлено. Наиболее часто отсутствующие права -- im:write (необходимо для ответов в ЛС), reactions:write (необходимо для реакций-подтверждений) и app_mentions:read (необходимо для определения @упоминаний). Для полной настройки используйте официальный манифест из документации OpenClaw для создания вашего Slack-приложения, который включает все необходимые права.
Можно ли использовать OpenClaw с несколькими рабочими пространствами Slack?
Да, OpenClaw поддерживает конфигурацию с несколькими аккаунтами Slack. Используйте объект channels.slack.accounts с отдельными наборами токенов для каждого рабочего пространства. Каждый аккаунт может иметь свои appToken, botToken, необязательный userToken и понятное name. Политики каналов, режимы тредов и настройки ЛС можно настраивать независимо для каждого аккаунта. Это описано в разделе конфигурации шлюза в официальной документации. Если вы также используете другие мессенджеры, например Telegram, наряду со Slack, смотрите наше руководство по настройке Telegram для деталей конфигурации.
В чём разница между Socket Mode и HTTP-режимом для Slack?
Socket Mode (по умолчанию) поддерживает долгоживущее WebSocket-подключение от OpenClaw к Slack, не требуя входящего сетевого доступа -- идеально для работы за файрволом или NAT. HTTP-режим использует традиционные URL-адреса вебхуков, по которым Slack отправляет события на публичную HTTPS-точку вашего сервера. Socket Mode проще настроить и требует только App Token плюс Bot Token. HTTP-режим требует Signing Secret вместо App Token и предполагает, что ваш шлюз доступен из интернета. Для большинства пользователей, запускающих OpenClaw на персональном компьютере или внутреннем сервере, Socket Mode -- рекомендуемый выбор. HTTP-режим лучше подходит для развёртываний на облачных серверах, где HTTPS уже настроен.
Как предотвратить зацикливание моего OpenClaw-бота в циклах ответов бот-бот?
Циклы бот-бот возникают, когда другой бот публикует сообщение в канале, и ваш OpenClaw-бот считает, что на него нужно ответить, создавая бесконечную цепочку. Стратегия предотвращения имеет три уровня: (1) Установите requireMention: true для всех каналов, чтобы бот отвечал только на прямые @упоминания. (2) Оставьте allowBots: false (значение по умолчанию), если вам специально не нужно взаимодействие бот-бот. (3) Если вы должны включить allowBots, сочетайте его с поканальным списком users, включающим только ID реальных пользователей. Дополнительно установите чёткие поведенческие ограничения в файлах AGENTS.md и SOUL.md, инструктируя агента никогда не отвечать на автоматические или ботовые сообщения, если он не вызван явно.
![OpenClaw Slack-бот не отвечает: полное руководство по устранению неполадок [2026]](/posts/ru/openclaw-slack-bot-not-responding/img/cover.png)