Связывание
Для личных сообщений Slack по умолчанию используется режим связывания.
Слеш-команды
Поведение встроенных команд и каталог команд.
Устранение неполадок каналов
Межканальная диагностика и инструкции по устранению неполадок.
Выбор транспорта
Socket Mode и HTTP Request URLs обеспечивают одинаковую функциональность для обмена сообщениями, слеш-команд, App Home и интерактивных возможностей. Выбирайте с учетом архитектуры развертывания, а не функций.Выбирайте Socket Mode для хостов с одним Gateway, ноутбуков разработчиков и локальных сетей, которые могут устанавливать исходящие соединения с
*.slack.com, но не могут принимать входящий HTTPS.Выбирайте HTTP Request URLs, если несколько реплик Gateway работают за балансировщиком нагрузки, исходящий WSS заблокирован, но входящий HTTPS разрешен, либо вебхуки Slack уже завершаются на обратном прокси-сервере.Режим ретрансляции
Режим ретрансляции отделяет входящий трафик Slack от Gateway OpenClaw. Доверенный маршрутизатор отвечает за единственное соединение Slack Socket Mode, выбирает целевой Gateway и пересылает типизированное событие через аутентифицированное соединение WebSocket. Gateway по-прежнему использует собственный токен бота для исходящих вызовов Slack Web API.wss://, если только он не указывает на localhost. Рассматривайте токен предъявителя и таблицу маршрутов маршрутизатора как часть границы авторизации Slack: маршрутизируемые события поступают в обычный обработчик сообщений Slack как авторизованные активации. Предоставленный маршрутизатором slack_identity в кадре WebSocket hello может задать исходящие имя пользователя и значок по умолчанию; явно указанная вызывающей стороной идентичность по-прежнему имеет приоритет. Соединение ретрансляции переподключается с той же ограниченной экспоненциальной задержкой, что и Socket Mode, и удаляет предоставленную маршрутизатором идентичность при каждом отключении.
Установки для всей организации Enterprise Grid
Одна учетная запись Slack может получать сообщения из всех рабочих пространств, охваченных установкой на уровне организации Enterprise Grid. Выберите прямой Socket Mode или HTTP Request URLs; режим ретрансляции для корпоративных учетных записей не поддерживается. Оба приведенных ниже манифеста с минимальными привилегиями включают только путь событий V1message и app_mention, немедленные ответы и реакции состояния,
управляемые прослушивателем.
Socket Mode
connections:write для Socket Mode,
затем скопируйте токен бота из установки организации. Настройте учетную запись,
использующую токен бота, установленного на уровне организации:
HTTP Request URLs
Используйте режим HTTP, если у Gateway есть публичная конечная точка HTTPS и он не открывает соединение Socket Mode. Замените URL в примере публичным URL GatewaywebhookPath (по умолчанию /slack/events):
enterpriseOrgInstall с помощью Slack auth.test.
Токен, установленный на уровне организации, без этого флага или токен рабочего пространства
с этим флагом приводят к сбою запуска. Slack остается источником истины в отношении рабочих
пространств, предоставивших доступ установке; затем OpenClaw применяет настроенные политики
каналов, пользователей, личных сообщений и упоминаний к каждому доставленному событию.
Enterprise V1 отклоняет все созданные ботом события message и
app_mention до передачи обработчику независимо от allowBots, поскольку
установки на уровне организации не предоставляют стабильную идентичность бота с привязкой
к рабочему пространству для предотвращения циклов.
Поддержка Enterprise намеренно ограничена прямым Socket Mode или событиями HTTP
message и app_mention и немедленными ответами на них. Режим ретрансляции,
слеш-команды, взаимодействия, App Home, прослушиватели событий реакций, закрепления,
инструменты действий Slack, встроенные одобрения Slack, привязки, доставка из очереди или
по расписанию и проактивная отправка недоступны для корпоративной учетной записи. Исходящие
реакции подтверждения, набора текста и состояния поддерживаются через клиент Slack,
управляемый прослушивателем, и требуют reactions:write; входящие уведомления о реакциях
и инструменты действий с реакциями остаются недоступными.
Немедленные ответы используют стандартное поведение доставки Slack для фрагментов,
медиафайлов, метаданных, резервного определения идентичности, разворачивания ссылок и подтверждений, но только пока
проверенный клиент, принадлежащий обработчику, остаётся в активном цикле события. Очередь
отправки в памяти и записи об участии в обсуждениях разделяются по рабочему пространству
этого события; сам клиент никогда не сериализуется и не сохраняется.
Ключи политики каналов и записи dm.groupChannels должны использовать необработанные стабильные идентификаторы каналов Slack или
форму channel:<id>. OpenClaw нормализует обе формы до необработанного идентификатора канала для
сопоставления во время выполнения; префиксы slack:, group: и mpim: приводят к сбою запуска.
Записи политики пользователей должны использовать стабильные идентификаторы пользователей Slack; имена, слаги, отображаемые имена
и адреса электронной почты приводят к сбою запуска. Идентификаторы должны использовать канонический для Slack
префикс и основную часть в верхнем регистре (например, C0123456789 или U0123456789); варианты в нижнем регистре и
короткие похожие значения приводят к сбою запуска. Для корпоративных учётных записей нельзя включить
dangerouslyAllowNameMatching. Для корпоративных учётных записей можно задать глобальный параметр
mentionPatterns.mode, но mentionPatterns.allowIn и
mentionPatterns.denyIn приводят к сбою запуска, поскольку простые идентификаторы каналов Slack не
привязаны к рабочему пространству и могут повторно использоваться в разных рабочих пространствах. Установки в рабочих пространствах
сохраняют существующее поведение шаблонов упоминаний с ограниченной областью действия. Каждое принятое рабочее пространство
получает отдельные идентичности маршрутизации, сеанса, расшифровки, дедупликации, истории и кэша,
даже если идентификаторы Slack совпадают. В потоке message поддерживаются обычные сообщения пользователей
и созданные пользователями события file_share; остальные подтипы сообщений
отклоняются до авторизации или обработки системных событий.
Корпоративные личные сообщения должны быть либо отключены (dm.enabled=false или
dmPolicy="disabled"), либо явно открыты с помощью dmPolicy="open" и
эффективного параметра учётной записи allowFrom, содержащего литерал "*". Пустой
список разрешений или идентификаторы отдельных пользователей без "*" приводят к сбою запуска. Сопряжение и
пользовательские списки разрешений для личных сообщений отклоняются, поскольку идентификаторы пользователей Slack не
привязаны к рабочему пространству в этих хранилищах авторизации. Политики каналов и отправителей
продолжают применяться к сообщениям каналов.
Установка
plugins install регистрирует и включает плагин. Он не выполняет никаких действий, пока не настроены приложение Slack и параметры каналов ниже. Общие правила установки плагинов см. в разделе Плагины.
Быстрая настройка
Манифесты в этом разделе создают установку с областью действия рабочего пространства. Для установки на уровне всей организации Enterprise Grid вместо этого используйте специальный манифест и рабочий процесс для всей организации.- Режим сокетов (по умолчанию)
- URL-адреса HTTP-запросов
1
Создание нового приложения Slack
Откройте api.slack.com/apps → Create New App → From a manifest → выберите рабочее пространство → вставьте один из приведённых ниже манифестов → Next → Create.После создания приложения в Slack:
Recommended соответствует полному набору возможностей плагина Slack: App Home, команды с косой чертой, файлы, реакции, закреплённые элементы, групповые личные сообщения и чтение эмодзи и групп пользователей. Выберите Minimal, если политика рабочего пространства ограничивает области доступа: этот вариант охватывает личные сообщения, историю каналов и групп, упоминания и команды с косой чертой, но исключает файлы, реакции, закреплённые элементы, групповые личные сообщения (
mpim:*), emoji:read и usergroups:read. Обоснование каждой области доступа и дополнительные варианты, например дополнительные команды с косой чертой, см. в разделе Контрольный список манифеста и областей доступа.- Basic Information -> App-Level Tokens -> Generate Token and Scopes: добавьте
connections:write, сохраните и скопируйте токен уровня приложения. - Install App -> Install to Workspace: скопируйте OAuth-токен пользователя-бота.
2
Настройка OpenClaw
Рекомендуемая настройка SecretRef:Резервный вариант с переменными среды (только для учётной записи по умолчанию):
3
Запуск Gateway
Настройка транспорта Socket Mode
По умолчанию OpenClaw устанавливает для клиента Slack SDK тайм-аут ожидания pong в Socket Mode равным 15 секундам. Изменяйте настройки транспорта только при необходимости настройки для конкретного рабочего пространства или хоста:clientPingTimeout — время ожидания pong после отправки клиентского ping пакетом SDK; serverPingTimeout — время ожидания серверных ping от Slack. Сообщения и события приложения остаются состоянием приложения, а не сигналами активности транспорта.
Примечания:
socketModeигнорируется в режиме HTTP Request URL.- Базовые настройки
channels.slack.socketModeприменяются ко всем учётным записям Slack, если не переопределены. Для переопределений на уровне учётной записи используетсяchannels.slack.accounts.<accountId>.socketMode; поскольку это переопределение объекта, укажите все поля настройки сокета, необходимые для этой учётной записи. - Значение по умолчанию в OpenClaw (
15000) есть только уclientPingTimeout.serverPingTimeoutиpingPongLoggingEnabledпередаются в Slack SDK только при явной настройке. - Задержка перед повторным запуском Socket Mode начинается примерно с 2 секунд и ограничивается примерно 30 секундами. После устранимых сбоев запуска, ожидания запуска и отключения попытки повторяются до остановки канала. При постоянных ошибках учётной записи и учётных данных, таких как недействительная аутентификация, отозванные токены или отсутствующие области доступа, работа быстро завершается с ошибкой вместо бесконечных повторных попыток.
Контрольный список манифеста и областей доступа
Базовый манифест приложения Slack одинаков для Socket Mode и HTTP Request URLs. Отличаются только блокsettings (и url слеш-команды).
Базовый манифест (Socket Mode по умолчанию):
settings вариантом HTTP и добавьте url в каждую слеш-команду. Требуется общедоступный URL:
Дополнительные настройки манифеста
Включите дополнительные функции, расширяющие приведённые выше настройки по умолчанию. Манифест по умолчанию включает вкладку Home раздела Slack App Home и подписку наapp_home_opened. Когда участник рабочего пространства открывает вкладку Home, OpenClaw публикует безопасное представление Home по умолчанию с views.publish; полезная нагрузка беседы и конфиденциальная конфигурация в него не включаются. Когда включён режим одной слеш-команды, в подсказке команды используется channels.slack.slashCommand.name; в установках с нативными командами или без слеш-команд эта подсказка отсутствует. Вкладка Messages остаётся включённой для личных сообщений Slack. Манифест также включает ветки ассистента Slack с помощью features.assistant_view, assistant:write, assistant_thread_started и assistant_thread_context_changed; ветки ассистента направляются в отдельные сеансы веток OpenClaw и сохраняют предоставленный Slack контекст ветки доступным агенту.
Необязательные нативные слеш-команды
Необязательные нативные слеш-команды
Вместо одной настроенной команды можно использовать несколько нативных слеш-команд, учитывая следующие особенности:
- Используйте
/agentstatusвместо/status, поскольку команда/statusзарезервирована. - В приложении Slack можно одновременно зарегистрировать не более 25 слеш-команд (ограничение платформы Slack).
features.slash_commands подмножеством доступных команд:- Socket Mode (по умолчанию)
- URL-адреса HTTP-запросов
Необязательные области авторства (операции записи)
Необязательные области авторства (операции записи)
Добавьте область бота
chat:write.customize, если исходящие сообщения должны использовать идентификатор активного агента (пользовательское имя и значок) вместо идентификатора приложения Slack по умолчанию.Если используется значок эмодзи, Slack ожидает синтаксис :emoji_name:.Необязательные области пользовательского токена (операции чтения)
Необязательные области пользовательского токена (операции чтения)
Если настроен
channels.slack.userToken, обычно используются следующие области чтения:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(если используются операции чтения через поиск Slack)
Модель токенов
botTokenиappTokenобязательны для Socket Mode.- Для режима HTTP требуются
botTokenиsigningSecret. - Для режима ретрансляции требуется
botToken, а такжеrelay.url,relay.authTokenиrelay.gatewayId; токен приложения и секрет подписи в нём не используются. botToken,appToken,signingSecret,relay.authTokenиuserTokenпринимают строки с открытым текстом или объекты SecretRef.- Токены из конфигурации переопределяют резервные значения из переменных среды.
- Резервные значения переменных среды
SLACK_BOT_TOKEN,SLACK_APP_TOKENиSLACK_USER_TOKENприменяются только к учётной записи по умолчанию. - По умолчанию
userTokenработает только для чтения (userTokenReadOnly: true).
- При проверке учётной записи Slack для каждого набора учётных данных отслеживаются поля
*Sourceи*Status(botToken,appToken,signingSecret,userToken). - Состояние может быть
available,configured_unavailableилиmissing. configured_unavailableозначает, что учётная запись настроена через SecretRef или другой источник секрета, не встроенный в конфигурацию, но текущей команде или пути среды выполнения не удалось получить фактическое значение.- В режиме HTTP включается
signingSecretStatus; в Socket Mode обязательной парой являютсяbotTokenStatusиappTokenStatus.
Действия и ограничения
Действия Slack управляются параметромchannels.slack.actions.*.
Доступные группы действий в текущих инструментах Slack:
Текущие действия с сообщениями Slack включают
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info и emoji-list. download-file принимает идентификаторы файлов Slack, показанные во входящих заполнителях файлов, и возвращает предпросмотр изображений либо метаданные локального файла для файлов других типов.
Управление доступом и маршрутизация
- Политика личных сообщений
- Политика каналов
- Упоминания и пользователи каналов
channels.slack.dmPolicy управляет доступом к личным сообщениям. channels.slack.allowFrom — канонический список разрешённых личных сообщений.pairing(по умолчанию)allowlistopen(требует, чтобыchannels.slack.allowFromсодержал"*")disabled
dm.enabled(по умолчанию true)channels.slack.allowFromdm.allowFrom(устаревший)dm.groupEnabled(для групповых личных сообщений по умолчанию false)dm.groupChannels(необязательный список разрешённых MPIM)
channels.slack.accounts.default.allowFromприменяется только к учётной записиdefault.- Именованные учётные записи наследуют
channels.slack.allowFrom, если их собственныйallowFromне задан. - Именованные учётные записи не наследуют
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy и channels.slack.dm.allowFrom по-прежнему считываются для совместимости. openclaw doctor --fix переносит их в dmPolicy и allowFrom, если это можно сделать без изменения доступа.Для сопряжения в личных сообщениях используется openclaw pairing approve slack <code>.Ветки, сеансы и теги ответов
- Личные сообщения маршрутизируются как
direct; каналы — какchannel; MPIM — какgroup. - Привязки маршрутов Slack принимают необработанные идентификаторы получателей, а также формы целей Slack, такие как
channel:C12345678,user:U12345678и<@U12345678>. - При значении
session.dmScope=mainпо умолчанию личные сообщения Slack объединяются в основной сеанс агента. - Сеансы каналов:
agent:<agentId>:slack:channel:<channelId>. - Обычные сообщения верхнего уровня в канале остаются в сеансе соответствующего канала, даже если
replyToModeимеет значение, отличное отoff. - Для ответов в ветках Slack используется родительский Slack
thread_tsв суффиксах сеансов (:thread:<threadTs>), даже если создание веток для исходящих ответов отключено с помощьюreplyToMode="off". - OpenClaw добавляет подходящее корневое сообщение верхнего уровня канала в
agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>, если ожидается, что оно начнёт видимую ветку Slack, чтобы корневое сообщение и последующие ответы в ветке использовали один сеанс OpenClaw. Это относится к событиямapp_mention, явным упоминаниям бота или совпадениям с настроенным шаблоном упоминания, а также к каналамrequireMention: falseсо значениемreplyToMode, отличным отoff. - Значение
channels.slack.thread.historyScopeпо умолчанию —thread; значениеthread.inheritParentпо умолчанию —false. channels.slack.thread.initialHistoryLimitопределяет, сколько существующих сообщений ветки загружается при запуске нового сеанса ветки (по умолчанию20; задайте0, чтобы отключить).channels.slack.thread.requireExplicitMention(по умолчаниюfalse): при значенииtrueподавляет неявные упоминания в ветках, чтобы бот отвечал только на явные упоминания@botвнутри веток, даже если бот уже участвовал в ветке. Без этого ответы в ветке с участием бота обходят проверкуrequireMention.
channels.slack.channels.<id>.replyToMode: переопределение для отдельных публичных или приватных каналов Slackchannels.slack.replyToMode:off|first|all|batched(по умолчаниюoff)channels.slack.replyToModeByChatType: для каждогоdirect|group|channel- устаревший резервный вариант для личных чатов:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message задайте replyBroadcast: true вместе с action: "send" и threadId или replyTo, чтобы запросить у Slack дополнительную публикацию ответа из ветки в родительском канале. Это соответствует флагу Slack reply_broadcast для chat.postMessage и поддерживается только при отправке текста или Block Kit, но не при загрузке медиафайлов.
Когда вызов инструмента message выполняется внутри ветки Slack и нацелен на тот же канал, OpenClaw обычно наследует текущую ветку Slack в соответствии с эффективным значением replyToMode для учётной записи, типа чата или отдельного канала. Автоматические ответы и вызовы send или upload-file в том же канале используют то же переопределение для отдельного канала. Задайте topLevel: true для action: "send" или action: "upload-file", чтобы принудительно создать новое сообщение в родительском канале. threadId: null принимается как эквивалентный отказ от ветки на верхнем уровне.
replyToMode="off" отключает создание веток для исходящих ответов Slack, включая явные теги [[reply_to_*]]. При этом входящие сеансы веток Slack не преобразуются в плоские: сообщения, уже опубликованные внутри ветки Slack, по-прежнему маршрутизируются в сеанс :thread:<threadTs>. Это отличается от Telegram, где явные теги продолжают учитываться в режиме "off". Ветки Slack скрывают сообщения из канала, тогда как ответы Telegram остаются видимыми в общей ленте.Реакции-подтверждения
ackReaction отправляет эмодзи подтверждения, пока OpenClaw обрабатывает входящее сообщение. ackReactionScope определяет, когда этот эмодзи фактически отправляется.
По умолчанию реакция-подтверждение остаётся неизменной, а состояние собственной ветки ассистента Slack отображает ход выполнения с помощью сменяющихся сообщений о загрузке. Задайте messages.statusReactions.enabled: true, чтобы вместо этого включить жизненный цикл реакций «в очереди/обдумывание/инструмент/готово/ошибка».
Эмодзи (ackReaction)
Порядок разрешения:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- резервный эмодзи из идентификационных данных агента (
agents.list[].identity.emoji, иначе"eyes"/ 👀)
- Slack ожидает короткие коды (например,
"eyes"). - Используйте
"", чтобы отключить реакцию для учётной записи Slack или глобально.
Область действия (messages.ackReactionScope)
Провайдер Slack считывает область действия из messages.ackReactionScope (по умолчанию "group-mentions"). Сейчас переопределение на уровне учётной записи или канала Slack отсутствует; значение является глобальным для Gateway.
Значения:
"all": реагировать в личных сообщениях и группах, включая фоновые события комнат."direct": реагировать только в личных сообщениях."group-all": реагировать на каждое групповое сообщение, кроме фоновых событий комнат (без личных сообщений)."group-mentions"(по умолчанию): реагировать в группах, но только при упоминании бота (или в группах с поддержкой упоминаний, где эта возможность включена). Личные сообщения исключены."off"/"none": никогда не реагировать.
Область действия по умолчанию (
"group-mentions") не запускает реакции-подтверждения в личных сообщениях или при фоновых событиях комнат. Чтобы настроенный ackReaction (например, "eyes") отображался для входящих личных сообщений Slack и фоновых событий неактивных комнат, задайте для messages.ackReactionScope значение "all". messages.ackReactionScope считывается при запуске провайдера Slack, поэтому для применения изменения требуется перезапуск Gateway.Потоковая передача текста
channels.slack.streaming управляет поведением предварительного просмотра в реальном времени:
off: отключить потоковый предварительный просмотр в реальном времени.partial(по умолчанию): заменять текст предварительного просмотра последним частичным результатом.block: добавлять порционные обновления предварительного просмотра.progress: показывать текст состояния выполнения во время генерации, а затем отправлять окончательный текст.streaming.preview.toolProgress: когда активен предварительный просмотр черновика, направлять обновления инструментов и хода выполнения в то же редактируемое сообщение предварительного просмотра (по умолчанию:true). Задайтеfalse, чтобы сохранять отдельные сообщения инструментов и хода выполнения.streaming.preview.commandText/streaming.progress.commandText: задайтеstatus, чтобы сохранять компактные строки хода выполнения инструментов, скрывая необработанный текст команд и их выполнения (по умолчанию:raw).
channels.slack.streaming.nativeTransport управляет собственной потоковой передачей текста Slack, когда channels.slack.streaming.mode имеет значение partial (по умолчанию: true).
Собственные карточки задач Slack с ходом выполнения включаются отдельно для режима выполнения. Задайте для channels.slack.streaming.progress.nativeTaskCards значение true вместе с channels.slack.streaming.mode="progress", чтобы во время выполнения работы отправлять собственную карточку плана или задачи Slack, а после завершения обновить ту же карточку. Без этого флага режим выполнения сохраняет переносимое поведение предварительного просмотра черновика.
- Для отображения собственной потоковой передачи текста и состояния ветки ассистента Slack должна быть доступна ветка ответа. Выбор ветки по-прежнему определяется
replyToMode. - Корневые сообщения каналов, групповых чатов и личных сообщений верхнего уровня могут использовать обычный предварительный просмотр черновика, когда собственная потоковая передача недоступна или ветка ответа отсутствует.
- Личные сообщения Slack верхнего уровня по умолчанию остаются вне веток, поэтому в них не отображается собственный потоковый предварительный просмотр или предварительный просмотр состояния в стиле веток Slack; вместо этого OpenClaw публикует и редактирует предварительный просмотр черновика в личном сообщении.
- Медиафайлы и нетекстовые данные отправляются обычным способом.
- Окончательные медиафайлы и сообщения об ошибках отменяют ожидающие изменения предварительного просмотра; подходящие окончательные текстовые сообщения и блоки применяются только тогда, когда предварительный просмотр можно изменить на месте.
- Если потоковая передача прерывается в середине ответа, OpenClaw отправляет оставшиеся данные обычным способом.
channels.slack.streamMode(replace | status_final | append) — устаревший псевдоним дляchannels.slack.streaming.mode.- логический параметр
channels.slack.streaming— устаревший псевдоним дляchannels.slack.streaming.modeиchannels.slack.streaming.nativeTransport. channels.slack.chunkModeиchannels.slack.nativeStreamingверхнего уровня — устаревшие псевдонимы дляchannels.slack.streaming.chunkModeиchannels.slack.streaming.nativeTransport.- Устаревшие псевдонимы не считываются во время выполнения; запустите
openclaw doctor --fix, чтобы перезаписать сохранённую конфигурацию потоковой передачи Slack с использованием канонических ключей.
Резервная реакция при наборе текста
typingReaction добавляет временную реакцию к входящему сообщению Slack, пока OpenClaw обрабатывает ответ, а затем удаляет её после завершения выполнения. Это особенно полезно за пределами ответов в ветках, где по умолчанию используется индикатор состояния «печатает…».
Порядок разрешения:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack ожидает короткие коды (например,
"hourglass_flowing_sand"). - Реакция предоставляется по мере возможности, а после завершения ответа или обработки ошибки автоматически предпринимается попытка её удалить.
Голосовой ввод
Чтобы сейчас обратиться к OpenClaw голосом в Slack, отправьте аудиоклип Slack приложению OpenClaw. Микрофон диктовки Slackbot — это отдельная функция, принадлежащая Slack, а не API приложения.- Голосовой ввод Slackbot доступен в личной беседе пользователя со Slackbot. Slack преобразует запись в запрос для Slackbot, но не передаёт сторонним приложениям Slack через Events API аудиофайл, событие диктовки, запрос или маркер источника ввода. Плагин OpenClaw для Slack не может включить или получать эти данные.
- Аудиоклипы Slack хранятся как файлы Slack, которые можно публиковать в личных сообщениях OpenClaw, каналах или ветках. OpenClaw скачивает доступный клип с помощью токена бота, нормализует MIME-метаданные клипа Slack и передаёт его в общий конвейер транскрибирования аудио. Рекомендуемый манифест приложения включает необходимую область доступа
files:read.
requireMention: true аудиоклип без подписи может пройти проверку, если в нём произнесён настроенный шаблон упоминания (agents.list[].groupChat.mentionPatterns, с переходом к messages.groupChat.mentionPatterns при его отсутствии). OpenClaw авторизует отправителя до скачивания или транскрибирования клипа, а затем допускает его только при совпадении транскрипции. Неудачная или не соответствующая шаблону предварительная транскрипция удаляется вместе со скачанным клипом и не сохраняется в истории канала. Нативную идентичность Slack @bot невозможно определить по речи, поэтому настройте шаблон произносимого имени или добавьте текстовое упоминание. Если включено дублирование транскрипции, она отправляется только после допуска.
Медиафайлы, разбиение и доставка
Входящие вложения
Входящие вложения
Файловые вложения Slack скачиваются с размещённых в Slack закрытых URL-адресов (с использованием потока запросов с аутентификацией по токену) и записываются в хранилище медиафайлов, если получение прошло успешно и ограничения размера соблюдены. Заполнители файлов содержат Slack
fileId, чтобы агенты могли получить исходный файл с помощью download-file.Для скачивания используются ограниченные тайм-ауты простоя и общего времени. Если получение файла из Slack зависает или завершается ошибкой, OpenClaw продолжает обработку сообщения и использует заполнитель файла.По умолчанию ограничение размера входящих данных во время выполнения составляет 20MB, если оно не переопределено параметром channels.slack.mediaMaxMb.Исходящий текст и файлы
Исходящий текст и файлы
- текстовые фрагменты используют
channels.slack.textChunkLimit(по умолчанию8000, с ограничением собственным максимальным размером сообщения Slack) channels.slack.streaming.chunkMode="newline"включает разбиение в первую очередь по абзацам- для отправки файлов используются API загрузки Slack; также поддерживаются ответы в ветках (
thread_ts) - для длинных подписей к файлам первый допустимый в Slack текстовый фрагмент используется как комментарий к загрузке, а оставшиеся фрагменты отправляются последующими сообщениями
- ограничение размера исходящих медиафайлов определяется параметром
channels.slack.mediaMaxMb, если он настроен; в противном случае при отправке в каналы используются значения по умолчанию для соответствующего MIME-типа из конвейера медиафайлов
Цели доставки
Цели доставки
Предпочтительные явные цели:
user:<id>для личных сообщенийchannel:<id>для каналов
Команды и поведение команд с косой чертой
Команды с косой чертой отображаются в Slack либо как одна настроенная команда, либо как несколько нативных команд. Настройтеchannels.slack.slashCommand, чтобы изменить параметры команд по умолчанию:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true или commands.native: true.
- Автоматический режим нативных команд для Slack отключён, поэтому
commands.native: "auto"не включает нативные команды Slack.
- 3–5 достаточно коротких вариантов: меню переполнения (”…”)
- более 100 вариантов при наличии асинхронной фильтрации: внешний список выбора
- 1–2 варианта или любой вариант, закодированное значение которого слишком длинное для списка выбора: блоки кнопок
- в остальных случаях (6–100 вариантов или более 100 без асинхронной фильтрации): статическое меню выбора, разбитое на группы по 100 вариантов
agent:<agentId>:slack:slash:<userId> и по-прежнему направляют выполнение команд в сеанс целевой беседы с помощью CommandTargetSessionKey.
Нативные диаграммы
Публичный блок Slackdata_visualization Block Kit
отображает в сообщениях линейные, столбчатые, площадные и круговые диаграммы. OpenClaw преобразует переносимый блок
presentation chart в эту нативную структуру; помимо обычного
доступа к сообщениям chat:write не требуются дополнительные области OAuth,
загрузка файлов, средство визуализации изображений или настройка Slack.
- заголовок и необязательные подписи осей: 50 символов
- круговая диаграмма: 1–12 положительных сегментов
- линейная, столбчатая или площадная диаграмма: 1–12 рядов с уникальными именами и 1–20 общих категорий
- подписи сегментов, категорий и рядов: 20 символов
- каждый ряд должен содержать по одному конечному значению для каждой категории; значения некруговых диаграмм могут быть отрицательными
invalid_blocks, OpenClaw
удаляет отклонённые нативные блоки данных, сохраняет соседние элементы управления и отправляет
полное представление диаграммы в виде видимого текста.
В настоящее время Slack принимает до двух блоков data_visualization на сообщение. Если
представление содержит более двух допустимых диаграмм, OpenClaw сохраняет их порядок
и продолжает нативную визуализацию в последующих сообщениях, размещая не более двух
диаграмм в каждом сообщении.
В объявлении для разработчиков
Slack описывает этот блок как предназначенную для приложений функцию Block Kit и не указывает
ограничений по платному тарифу. Условия доступности для Business+/Enterprise относятся к
автоматическому созданию диаграмм ИИ в Slackbot, а не к отправке приложением
уже структурированной диаграммы Block Kit. Диаграммы являются блоками только для сообщений, а не содержимым App
Home, модальных окон или Canvas.
Нативные таблицы
Текущий блок Slackdata_table Block Kit
отображает в сообщениях структурированные строки и столбцы. OpenClaw преобразует явно заданный
переносимый блок presentation table в data_table; устаревший блок Slack
table не используется.
Помимо обычного доступа к сообщениям chat:write, дополнительные области OAuth
или настройки Slack не требуются.
raw_text. Числовые ячейки
преобразуются в raw_number, при этом конечное числовое значение сохраняется для нативной сортировки
и фильтрации. rowHeaderColumnIndex, если этот параметр задан, помечает указанный с нуля
столбец как заголовки строк Slack.
Опубликованные Slack ограничения data_table применяются до нативной визуализации:
- 1–20 столбцов
- 1–100 строк данных плюс строка заголовков
- одинаковое количество ячеек в каждой строке
- не более 10 000 символов суммарно во всех ячейках таблиц одного сообщения
<@U123> не превращаются в упоминание Slack.
Если Slack отклоняет нативные блоки диаграмм или таблиц с ошибкой invalid_blocks, OpenClaw
удаляет все нативные блоки данных за один ограниченный шаг восстановления, сохраняет допустимые
соседние блоки, например кнопки и списки выбора, и отправляет полный видимый текст диаграмм
и таблиц с отключённым форматированием Slack. При доставке команд с косой чертой
отслеживается бюджет Slack в пять вызовов response_url на протяжении всей команды. Перед каждым
пакетом ответов выбирается полный план, укладывающийся в оставшееся количество вызовов, либо операция завершается ошибкой
до публикации этого пакета.
Только явно заданные блоки таблиц presentation преобразуются в нативные таблицы.
Таблицы Markdown с вертикальными чертами остаются авторским текстом; OpenClaw не пытается определить
структуру таблицы или типы ячеек. Существующие доверенные производители нативных блоков Slack могут и дальше
передавать необработанные блоки через channelData.slack.blocks; OpenClaw формирует резервный
текст из допустимых необработанных ячеек data_table, тогда как некорректные пользовательские блоки могут
быть сведены к подписи или общему резервному представлению Block Kit. Переносимый вывод агентов, CLI
и плагинов должен использовать presentation.
Интерактивные ответы
Slack может отображать созданные агентом интерактивные элементы управления ответами, но по умолчанию эта функция отключена. Для нового вывода агентов, CLI и плагинов предпочтительно использовать общие кнопки или блоки выбораpresentation. Они используют тот же путь взаимодействия
Slack и при этом корректно упрощаются в других каналах.
Включите эту возможность глобально:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
compileSlackInteractiveReplies(...)parseSlackOptionsLine(...)isSlackInteractiveRepliesEnabled(...)buildSlackInteractiveBlocks(...)
presentation и buildSlackPresentationBlocks(...).
Примечания:
- Это устаревший интерфейс, специфичный для Slack. Другие каналы не преобразуют директивы Slack Block Kit в собственные системы кнопок.
- Значения интерактивных обратных вызовов — это сгенерированные OpenClaw непрозрачные токены, а не исходные значения, заданные агентом.
- Если сгенерированные интерактивные блоки превысят ограничения Slack Block Kit, OpenClaw вместо отправки недопустимой полезной нагрузки блоков возвращается к исходному текстовому ответу.
Отправка модальных форм, обрабатываемая плагинами
Плагины Slack, регистрирующие обработчик интерактивных событий, также могут получать события жизненного цикла модальных формview_submission и view_closed до того, как OpenClaw сожмёт
полезную нагрузку для системного события, видимого агенту. При открытии модального окна Slack используйте один из следующих
вариантов маршрутизации:
- Задайте для
callback_idзначениеopenclaw:<namespace>:<payload>. - Либо сохраните существующее значение
callback_idи поместитеpluginInteractiveData: "<namespace>:<payload>"в полеprivate_metadataмодального окна.
ctx.interaction.kind как view_submission или
view_closed, нормализованное значение inputs и полный исходный объект stateValues из
Slack. Для вызова обработчика плагина достаточно маршрутизации только по идентификатору обратного вызова; включите
существующие поля маршрутизации пользователя/сеанса private_metadata модального окна, если
модальное окно также должно создавать системное событие, видимое агенту. Агент получает
компактное системное событие Slack interaction: ... с удалёнными конфиденциальными данными. Если обработчик возвращает
systemEvent.summary, systemEvent.reference или systemEvent.data, эти
поля включаются в компактное событие, чтобы агент мог обращаться к
хранилищу плагина, не видя полной полезной нагрузки формы.
Встроенные подтверждения в Slack
Slack может выступать встроенным клиентом подтверждений с интерактивными кнопками и действиями вместо перехода к веб-интерфейсу или терминалу.- Подтверждения выполнения и плагинов могут отображаться как встроенные запросы Slack Block Kit.
channels.slack.execApprovals.*по-прежнему отвечает за включение встроенного клиента подтверждений выполнения и настройку маршрутизации в личные сообщения/каналы.- Личные сообщения с запросами подтверждения выполнения используют
channels.slack.execApprovals.approversилиcommands.ownerAllowFrom. - Подтверждения плагинов используют встроенные кнопки Slack, когда Slack включён как встроенный клиент подтверждений для исходного сеанса либо когда
approvals.pluginуказывает на исходный сеанс Slack или целевой объект Slack. - Личные сообщения с запросами подтверждения плагинов используют утверждающих плагинов Slack из
channels.slack.allowFrom,allowFromименованной учётной записи или маршрут учётной записи по умолчанию. - Авторизация утверждающего по-прежнему применяется: пользователи, имеющие право подтверждать только выполнение, не могут подтверждать запросы плагинов, если они также не являются утверждающими плагинов.
interactivity включён в настройках приложения Slack, запросы подтверждения отображаются непосредственно в беседе как кнопки Block Kit.
При наличии этих кнопок они являются основным интерфейсом подтверждения; OpenClaw
должен включать ручную команду /approve только тогда, когда результат инструмента сообщает, что
подтверждения в чате недоступны или ручное подтверждение является единственным способом.
Путь конфигурации:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(необязательно; по возможности используетсяcommands.ownerAllowFrom)channels.slack.execApprovals.target(dm|channel|both, по умолчанию:dm)agentFilter,sessionFilter
enabled не задано или имеет значение "auto" и удаётся определить хотя бы одного
утверждающего выполнения. Slack также может обрабатывать встроенные подтверждения плагинов через этот путь встроенного клиента,
когда удаётся определить утверждающих плагинов Slack и запрос соответствует фильтрам встроенного клиента. Установите
enabled: false, чтобы явно отключить Slack как встроенный клиент подтверждений. Установите enabled: true, чтобы
принудительно включить встроенные подтверждения, когда удаётся определить утверждающих. Отключение подтверждений выполнения Slack не отключает
доставку встроенных подтверждений плагинов Slack, включённую через approvals.plugin; для доставки подтверждений
плагинов вместо этого используются утверждающие плагинов Slack.
Поведение по умолчанию без явной конфигурации подтверждений выполнения Slack:
approvals.exec настраивается отдельно. Используйте её только тогда, когда запросы подтверждения выполнения также должны
направляться в другие чаты или явно заданным внешним адресатам. Общая переадресация approvals.plugin также
настраивается отдельно; встроенная доставка Slack подавляет этот резервный вариант только тогда, когда Slack может обработать запрос
подтверждения плагина встроенным способом.
Команда /approve в том же чате также работает в каналах Slack и личных сообщениях, которые уже поддерживают команды. Полная модель переадресации подтверждений описана в разделе Подтверждения выполнения.
События и рабочее поведение
- Изменения и удаления сообщений преобразуются в системные события.
- Рассылки из ветки (ответы в ветке с параметром “Also send to channel”) обрабатываются как обычные сообщения пользователей.
- События добавления и удаления реакций преобразуются в системные события.
- События присоединения и выхода участников, создания и переименования каналов, а также добавления и удаления закреплений преобразуются в системные события.
- Необязательный опрос присутствия может преобразовать наблюдаемый переход участника-человека из
awayвactiveв событие в последнем активном подходящем сеансе Slack этого участника. По умолчанию отключено. channel_id_changedможет переносить ключи конфигурации каналов, когда включеноconfigWrites.- Метаданные темы и назначения канала считаются недоверенным контекстом и могут внедряться в контекст маршрутизации.
- Начальное сообщение ветки и исходное заполнение контекста из истории ветки фильтруются по настроенным спискам разрешённых отправителей, когда это применимо.
- Действия с блоками, быстрые команды и взаимодействия с модальными окнами создают структурированные системные события
Slack interaction: ...с расширенными полями полезной нагрузки:- действия с блоками: выбранные значения, подписи, значения средств выбора и метаданные
workflow_* - глобальные быстрые команды: метаданные обратного вызова и инициатора, направляемые в прямой сеанс инициатора
- быстрые команды сообщений: контекст обратного вызова, инициатора, канала, ветки и выбранного сообщения
- события модального окна
view_submissionиview_closedс маршрутизированными метаданными канала и данными формы
- действия с блоками: выбранные значения, подписи, значения средств выбора и метаданные
События присутствия
Slack не отправляет изменения присутствия через Events API или Socket Mode. Вместо этого OpenClaw может опрашиватьusers.getPresence для участников-людей, чьи сообщения прошли обычные проверки доступа и маршрутизации Slack.
off(по умолчанию): без таймера присутствия и вызовов Slack API.auto: отслеживать личные сообщения, MPIM и ветки Slack, активные за последние 24 часа и содержащие не более 8 наблюдаемых участников-людей. Сеансы каналов верхнего уровня исключаются.on: отслеживать те же беседы без ограничения числа участников и включать сеансы каналов верхнего уровня. Используйте переопределение для отдельного канала, чтобы принудительно включить или отключить один канал.
away в active. Для каждой пары учётной записи Slack и пользователя действует постоянный 8-часовой период ожидания, даже если этот человек участвует в нескольких ветках. Событие направляется только в последнюю активную подходящую беседу этого человека и предписывает агенту обратиться к памяти/вики и известному контексту часового пояса, прежде чем решать, следует ли отправить одно короткое приветствие. Агент может не отвечать.
Токену бота требуется users:read, уже включённое в рекомендуемый манифест. События присутствия недоступны для установок Enterprise Grid на уровне всей организации.
Справочник по конфигурации
Основной справочник: Справочник по конфигурации — Slack.Ключевые поля Slack
Ключевые поля Slack
- режим/аутентификация:
mode,enterpriseOrgInstall,botToken,appToken,signingSecret,webhookPath,accounts.* - доступ к личным сообщениям:
dm.enabled,dmPolicy,allowFrom(устаревшие:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - переключатель совместимости:
dangerouslyAllowNameMatching(аварийный вариант; не включайте без необходимости) - доступ к каналам:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - ветки/история:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - пробуждение по присутствию:
presenceEvents.mode,channels.*.presenceEvents.mode(off|auto|on; по умолчаниюoff) - доставка:
textChunkLimit,streaming.chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - предпросмотр:
unfurlLinks(по умолчанию:false),unfurlMediaдля управления предпросмотром ссылок и медиаchat.postMessage; установитеunfurlLinks: true, чтобы снова включить предпросмотр ссылок - эксплуатация/возможности:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Устранение неполадок
Нет ответов в каналах
Нет ответов в каналах
Проверьте по порядку:Полезные команды:
groupPolicy- список разрешённых каналов (
channels.slack.channels) — ключами должны быть идентификаторы каналов (C12345678), а не названия (#channel-name). Ключи на основе названий незаметно не работают приgroupPolicy: "allowlist", поскольку маршрутизация каналов по умолчанию в первую очередь использует идентификаторы. Чтобы найти идентификатор: щёлкните канал в Slack правой кнопкой мыши → Copy link — значениеC...в конце URL-адреса является идентификатором канала. requireMention- список разрешённых
usersдля отдельного канала messages.groupChat.visibleReplies: для обычных запросов группы/канала по умолчанию используется"automatic". Если включено"message_tool"и журналы содержат текст ассистента без вызоваmessage(action=send), модель не использовала видимый путь инструмента сообщений. В этом режиме итоговый текст остаётся приватным; проверьте подробный журнал Gateway на наличие метаданных подавленной полезной нагрузки или установите значение"automatic", если требуется публиковать каждый обычный итоговый ответ ассистента через устаревший путь.messages.groupChat.unmentionedInbound: если установлено значение"room_event", разрешённые сообщения канала без упоминаний считаются фоновым контекстом и не вызывают ответа, пока агент не вызовет инструментmessage. См. Фоновые события комнаты.
Личные сообщения игнорируются
Личные сообщения игнорируются
Проверьте:
channels.slack.dm.enabledchannels.slack.dmPolicy(или устаревшийchannels.slack.dm.policy)- подтверждения сопряжения / записи списка разрешений (
dmPolicy: "open"по-прежнему требуетchannels.slack.allowFrom: ["*"]) - групповые личные сообщения используют обработку MPIM; включите
channels.slack.dm.groupEnabledи, если настроено, добавьте MPIM вchannels.slack.dm.groupChannels - события личных сообщений Slack Assistant: подробные журналы с упоминанием
drop message_changedобычно означают, что Slack отправил событие отредактированной ветки Assistant без доступного для восстановления отправителя-человека в метаданных сообщения
Режим Socket не подключается
Режим Socket не подключается
Проверьте токены бота и приложения, а также включение Socket Mode в настройках приложения Slack.
Токен уровня приложения должен иметь
connections:write, а токен OAuth пользователя бота
должен относиться к тому же приложению и рабочему пространству Slack, что и токен приложения.Если openclaw channels status --probe --json показывает botTokenStatus или
appTokenStatus: "configured_unavailable", учетная запись Slack
настроена, но текущей среде выполнения не удалось получить значение,
указанное через SecretRef.Записи журнала наподобие slack socket mode failed to start; retry ... означают устранимые
ошибки запуска. При отсутствии областей доступа, отозванных токенах и недействительной аутентификации
вместо этого происходит немедленный сбой. Запись slack token mismatch ... означает, что токен бота и токен приложения,
вероятно, относятся к разным приложениям Slack; исправьте учетные данные приложения Slack.Режим HTTP не получает события
Режим HTTP не получает события
Проверьте:
- секрет подписи
- путь Webhook
- URL-адреса запросов Slack (события, интерактивные действия и команды с косой чертой)
- уникальный
webhookPathдля каждой учетной записи HTTP - публичный URL завершает TLS-соединение и перенаправляет запросы на путь Gateway
- путь
request_urlприложения Slack в точности совпадает сchannels.slack.webhookPath(по умолчанию/slack/events)
signingSecretStatus: "configured_unavailable" присутствует в снимках
учетной записи, учетная запись HTTP настроена, но текущей среде выполнения не удалось
получить секрет подписи, указанный через SecretRef.Повторяющаяся запись журнала slack: webhook path ... already registered означает, что две учетные записи HTTP
используют один и тот же webhookPath; назначьте каждой учетной записи отдельный путь.Нативные команды и команды с косой чертой не выполняются
Нативные команды и команды с косой чертой не выполняются
Проверьте, какой режим предполагалось использовать:
- режим нативных команд (
channels.slack.commands.native: true) с соответствующими командами с косой чертой, зарегистрированными в Slack - или режим одной команды с косой чертой (
channels.slack.slashCommand.enabled: true)
commands.native: "auto" не включает нативные команды Slack; используйте true и создайте соответствующие команды в приложении Slack. В режиме HTTP каждая команда Slack с косой чертой должна содержать URL Gateway. В Socket Mode полезная нагрузка команд поступает через WebSocket, а Slack игнорирует slash_commands[].url.Также проверьте commands.useAccessGroups, авторизацию личных сообщений, списки разрешенных каналов
и списки разрешений users для отдельных каналов. Для заблокированных отправителей
команд с косой чертой Slack возвращает временные ошибки, включая:This channel is not allowed.You are not authorized to use this command here.
Справочник по вложенным медиафайлам
Slack может прикреплять загруженные медиафайлы к ходу агента, если загрузка файлов из Slack завершилась успешно и соблюдены ограничения размера. Аудиоклипы можно транскрибировать, файлы изображений можно передавать по пути распознавания медиафайлов или непосредственно модели ответа с поддержкой компьютерного зрения, а остальные файлы остаются доступными как контекст загружаемых файлов.Поддерживаемые типы медиафайлов
Процесс входящей обработки
При поступлении сообщения Slack с файловыми вложениями:- OpenClaw загружает файл по приватному URL Slack с использованием токена бота.
- После успешной загрузки файл записывается в хранилище медиафайлов.
- Пути загруженных медиафайлов и типы содержимого добавляются во входящий контекст.
- Аудиоклипы направляются в общий процесс транскрибирования; пути моделей и инструментов с поддержкой изображений могут использовать вложенные изображения из того же контекста.
- Другие файлы остаются доступными как метаданные файлов или ссылки на медиафайлы для инструментов, способных их обрабатывать.
Наследование вложений корневого сообщения ветки
Когда сообщение поступает в ветку (имеет родительский элементthread_ts):
- Если сам ответ не содержит медиафайлов, а включенное корневое сообщение содержит файлы, Slack может загрузить корневые файлы как контекст начального сообщения ветки.
- Корневые файлы загружаются только при инициализации нового или сброшенного сеанса ветки. Последующие текстовые ответы используют существующий контекст сеанса и не прикрепляют корневые файлы повторно как новые медиафайлы.
- Вложения непосредственно в ответе имеют приоритет над вложениями корневого сообщения.
- Корневое сообщение, содержащее только файлы без текста, представляется заполнителем вложения, чтобы резервный механизм по-прежнему мог включить его файлы.
Обработка нескольких вложений
Когда одно сообщение Slack содержит несколько файловых вложений:- Каждое вложение обрабатывается независимо в рамках процесса обработки медиафайлов.
- Ссылки на загруженные медиафайлы объединяются в контексте сообщения.
- Порядок обработки соответствует порядку файлов Slack в полезной нагрузке события.
- Ошибка загрузки одного вложения не блокирует остальные.
Ограничения размера, загрузки и моделей
- Ограничение размера: по умолчанию 20 МБ на файл. Настраивается через
channels.slack.mediaMaxMb. - Ограничение транскрибирования аудио:
tools.media.audio.maxBytesтакже применяется, когда загруженный файл отправляется поставщику транскрибирования или CLI. - Ошибки загрузки: файлы, которые Slack не может предоставить, URL с истекшим сроком действия, недоступные и слишком большие файлы, а также HTML-ответы страницы аутентификации или входа Slack пропускаются, а не помечаются как неподдерживаемые форматы.
- Модель компьютерного зрения: для анализа изображений используется активная модель ответа, если она поддерживает компьютерное зрение, либо модель изображений, настроенная в
agents.defaults.imageModel.
Известные ограничения
Связанная документация
Связанные материалы
Сопряжение
Сопряжение пользователя Slack с Gateway.
Группы
Поведение каналов и групповых личных сообщений.
Маршрутизация каналов
Маршрутизация входящих сообщений агентам.
Безопасность
Модель угроз и усиление защиты.
Конфигурация
Структура конфигурации и приоритеты.
Команды с косой чертой
Каталог команд и их поведение.