Configuration
Фоновые события в комнате
Фоновые события комнаты позволяют OpenClaw обрабатывать сообщения в группах или каналах без упоминания агента как ненавязчивый контекст. Агент может обновлять память и состояние сессии, но в комнате сохраняется тишина, если агент явно не вызовет инструмент message.
Для постоянно активных групповых чатов используйте messages.groupChat.unmentionedInbound: "room_event" вместе с messages.groupChat.visibleReplies: "message_tool". Агент прослушивает сообщения, решает, когда ответ будет полезен, и больше не нуждается в старом шаблоне промпта с ответом NO_REPLY.
Сейчас поддерживаются: каналы серверов Discord, каналы и приватные каналы Slack, групповые личные сообщения Slack и группы или супергруппы Telegram. В других групповых каналах сохраняется существующее поведение для групп, если на странице соответствующего канала не указано, что он поддерживает фоновые события комнаты.
Рекомендуемая настройка
Задайте глобальное поведение групповых чатов:
{ messages: { groupChat: { unmentionedInbound: "room_event", visibleReplies: "message_tool", historyLimit: 50, }, },}Затем сделайте комнату постоянно активной, отключив для неё требование упоминания. Комната по-прежнему должна проходить обычную проверку groupPolicy, списка разрешённых комнат и списка разрешённых отправителей.
После сохранения конфигурации Gateway применяет настройки messages без перезапуска. Перезапуск требуется только в том случае, если отслеживание изменений файлов или перезагрузка конфигурации отключены (gateway.reload.mode: "off").
Что изменяется
При использовании messages.groupChat.unmentionedInbound: "room_event":
- разрешённые сообщения в группах или каналах без упоминания становятся ненавязчивыми событиями комнаты
- сообщения с упоминанием остаются пользовательскими запросами
- текстовые управляющие команды и нативные команды остаются пользовательскими запросами
- запросы на прерывание или остановку остаются пользовательскими запросами
- личные сообщения остаются пользовательскими запросами
Для событий комнаты применяется строгий режим видимой доставки. Итоговый текст ассистента остаётся приватным. Чтобы опубликовать сообщение в комнате, агент должен вызвать message(action=send).
Для событий комнаты индикатор набора текста и реакции на события жизненного цикла остаются отключёнными. Единственное явное исключение для подтверждения получения — messages.ackReactionScope: "all", которое отправляет настроенную реакцию подтверждения; если в комнате должна сохраняться полная тишина, используйте более узкую область действия или "off".
Пример для Discord
{ messages: { groupChat: { unmentionedInbound: "room_event", visibleReplies: "message_tool", historyLimit: 50, }, }, channels: { discord: { groupPolicy: "allowlist", guilds: { "<DISCORD_SERVER_ID>": { requireMention: false, users: ["<YOUR_DISCORD_USER_ID>"], }, }, }, },}Используйте конфигурацию Discord для отдельного канала, если фоновым должен быть только один канал. В разделе groupPolicy: "allowlist" канал разрешается самим фактом его добавления в список (enabled: false отключает запись):
{ channels: { discord: { groupPolicy: "allowlist", guilds: { "<DISCORD_SERVER_ID>": { channels: { "<DISCORD_CHANNEL_ID_OR_NAME>": { requireMention: false, }, }, }, }, }, },}Пример для Slack
В списках разрешённых каналов Slack приоритет имеют идентификаторы. Используйте идентификаторы каналов, например C12345678, а не #channel-name. Канал разрешается самим фактом его добавления в список channels.slack.channels (enabled: false отключает запись):
{ messages: { groupChat: { unmentionedInbound: "room_event", visibleReplies: "message_tool", historyLimit: 50, }, }, channels: { slack: { groupPolicy: "allowlist", channels: { "<SLACK_CHANNEL_ID>": { requireMention: false, }, }, }, },}Пример для Telegram
Для групп Telegram бот должен иметь возможность видеть обычные сообщения группы. Если requireMention: false, отключите режим конфиденциальности BotFather или используйте другую настройку Telegram, при которой бот получает весь трафик группы.
{ messages: { groupChat: { unmentionedInbound: "room_event", visibleReplies: "message_tool", historyLimit: 50, }, }, channels: { telegram: { groups: { "<TELEGRAM_GROUP_CHAT_ID>": { groupPolicy: "open", requireMention: false, }, }, }, },}Идентификаторы групп Telegram обычно представляют собой отрицательные числа, например -1001234567890. Получите chat.id из openclaw logs --follow, перешлите сообщение группы вспомогательному боту для определения идентификатора или изучите getUpdates Bot API.
Политика для отдельного агента
Используйте переопределение для агента, когда одну комнату совместно используют несколько агентов, но только один из них должен воспринимать сообщения без упоминания как фоновый контекст:
{ messages: { groupChat: { visibleReplies: "message_tool", }, }, agents: { list: [ { id: "main", groupChat: { unmentionedInbound: "room_event", mentionPatterns: ["@openclaw", "openclaw"], }, }, ], },}Значение agents.list[].groupChat.unmentionedInbound для конкретного агента переопределяет messages.groupChat.unmentionedInbound для этого агента.
Режимы видимого ответа
По умолчанию messages.groupChat.visibleReplies имеет значение "automatic" для обычных пользовательских запросов в группах и каналах. Сохраняйте это значение по умолчанию, если итоговый текст ассистента должен публиковаться видимым сообщением без явного вызова инструмента отправки сообщений.
Для постоянно активных фоновых комнат по-прежнему рекомендуется messages.groupChat.visibleReplies: "message_tool", особенно с моделями последнего поколения, надёжно использующими инструменты, такими как GPT-5.6 Sol. Этот режим позволяет агенту самостоятельно решать, когда следует ответить, вызывая инструмент отправки сообщений. Если модель возвращает итоговый текст без вызова инструмента, OpenClaw сохраняет его приватным и записывает метаданные о подавленной доставке.
Для событий комнаты сохраняется строгий режим, даже если для других групповых запросов используются автоматические ответы. Для видимого вывода фоновых событий комнаты без упоминания всегда требуется message(action=send).
История
messages.groupChat.historyLimit задаёт глобальное значение истории групп по умолчанию (50, если значение не задано; должно быть положительным целым числом). Каналы могут переопределить его с помощью channels.<channel>.historyLimit, а некоторые каналы также поддерживают ограничения истории для отдельных учётных записей. Установите для historyLimit: 0 на уровне канала значение, отключающее контекст истории групп для этого канала.
Каналы, поддерживающие события комнаты, сохраняют недавние фоновые сообщения комнаты в качестве контекста. Telegram поддерживает постоянно активное скользящее окно для каждой группы, ограниченное значением historyLimit; для пользовательских запросов выбираются записи после последнего зафиксированного ответа бота, а события комнаты получают всё недавнее окно, чтобы модель могла видеть собственные последние публикации. Устаревший ключ режима Telegram includeGroupHistoryContext удаляется командой openclaw doctor --fix.
Устранение неполадок
Если в комнате отображается набор текста или расход токенов, но видимого сообщения нет:
- Убедитесь, что комната разрешена списком разрешённых каналов и списком разрешённых отправителей.
- Убедитесь, что
requireMention: falseзадан на ожидаемом уровне комнаты. - Проверьте, имеет ли
messages.groupChat.unmentionedInboundили переопределение агента значение"room_event". - Проверьте журналы на наличие метаданных подавленной итоговой полезной нагрузки или
didSendViaMessagingTool: false. - Для обычных групповых запросов сохраните или восстановите
messages.groupChat.visibleReplies: "automatic", если хотите, чтобы итоговые ответы публиковались автоматически. Для фоновых комнат, использующихmessage_tool, используйте модель и среду выполнения, которые надёжно вызывают инструменты.
Если фоновые комнаты Telegram вообще не срабатывают, проверьте режим конфиденциальности BotFather и убедитесь, что Gateway получает обычные сообщения группы.
Если фоновые комнаты Slack не срабатывают, убедитесь, что ключ канала является идентификатором канала Slack и у приложения есть область разрешений для истории соответствующего типа комнаты: channels:history (публичные), groups:history (приватные) или mpim:history (групповые личные сообщения).