message.
Для постоянно активных групповых чатов используйте messages.groupChat.unmentionedInbound: "room_event" вместе с messages.groupChat.visibleReplies: "message_tool". Агент прослушивает сообщения, решает, когда ответ будет полезен, и больше не нуждается в старом шаблоне промпта с ответом NO_REPLY.
Сейчас поддерживаются: каналы серверов Discord, каналы и приватные каналы Slack, групповые личные сообщения Slack и группы или супергруппы Telegram. В других групповых каналах сохраняется существующее поведение для групп, если на странице соответствующего канала не указано, что он поддерживает фоновые события комнаты.
Рекомендуемая настройка
Задайте глобальное поведение групповых чатов:groupPolicy, списка разрешённых комнат и списка разрешённых отправителей.
После сохранения конфигурации Gateway применяет настройки messages без перезапуска. Перезапуск требуется только в том случае, если отслеживание изменений файлов или перезагрузка конфигурации отключены (gateway.reload.mode: "off").
Что изменяется
При использованииmessages.groupChat.unmentionedInbound: "room_event":
- разрешённые сообщения в группах или каналах без упоминания становятся ненавязчивыми событиями комнаты
- сообщения с упоминанием остаются пользовательскими запросами
- текстовые управляющие команды и нативные команды остаются пользовательскими запросами
- запросы на прерывание или остановку остаются пользовательскими запросами
- личные сообщения остаются пользовательскими запросами
message(action=send).
Для событий комнаты индикатор набора текста и реакции на события жизненного цикла остаются отключёнными. Единственное явное исключение для подтверждения получения — messages.ackReactionScope: "all", которое отправляет настроенную реакцию подтверждения; если в комнате должна сохраняться полная тишина, используйте более узкую область действия или "off".
Пример для Discord
groupPolicy: "allowlist" канал разрешается самим фактом его добавления в список (enabled: false отключает запись):
Пример для Slack
В списках разрешённых каналов Slack приоритет имеют идентификаторы. Используйте идентификаторы каналов, напримерC12345678, а не #channel-name. Канал разрешается самим фактом его добавления в список channels.slack.channels (enabled: false отключает запись):
Пример для Telegram
Для групп Telegram бот должен иметь возможность видеть обычные сообщения группы. ЕслиrequireMention: false, отключите режим конфиденциальности BotFather или используйте другую настройку Telegram, при которой бот получает весь трафик группы.
-1001234567890. Получите chat.id из openclaw logs --follow, перешлите сообщение группы вспомогательному боту для определения идентификатора или изучите getUpdates Bot API.
Политика для отдельного агента
Используйте переопределение для агента, когда одну комнату совместно используют несколько агентов, но только один из них должен воспринимать сообщения без упоминания как фоновый контекст: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, используйте модель и среду выполнения, которые надёжно вызывают инструменты.
channels:history (публичные), groups:history (приватные) или mpim:history (групповые личные сообщения).