Configuration

Фоновые события комнаты

События фоновой комнаты позволяют OpenClaw обрабатывать неупомянутую болтовню в группе или канале как тихий контекст. Агент может обновлять память и состояние сеанса, но комната остается безмолвной, если агент явно не вызовет инструмент message.

Для постоянно включенных групповых чатов это рекомендуемый режим: сочетайте messages.groupChat.unmentionedInbound: "room_event" с messages.groupChat.visibleReplies: "message_tool". Используйте его, когда агент должен слушать, решать, когда ответ полезен, и избегать старого шаблона промпта с ответом NO_REPLY.

Поддерживается сейчас: каналы гильдий Discord, каналы и приватные каналы Slack, групповые личные сообщения Slack, а также группы или супергруппы Telegram. Другие групповые каналы сохраняют свое существующее групповое поведение, если на странице их канала не указано, что они поддерживают события фоновой комнаты.

Рекомендуемая настройка

Задайте глобальное поведение группового чата:

json5
{  messages: {    groupChat: {      unmentionedInbound: "room_event",      visibleReplies: "message_tool",      historyLimit: 50,    },  },}

Затем настройте саму комнату как постоянно включенную, отключив для нее фильтрацию по упоминанию. Канал все равно должен быть разрешен его обычными groupPolicy, списком разрешенных комнат и списком разрешенных отправителей.

После сохранения конфигурации Gateway горячо перезагружает настройки messages. Перезапуск нужен только когда наблюдение за файлами или перезагрузка конфигурации отключены.

Что меняется

С messages.groupChat.unmentionedInbound: "room_event":

  • неупомянутые разрешенные сообщения группы или канала становятся тихими событиями комнаты
  • сообщения с упоминанием остаются пользовательскими запросами
  • текстовые команды и нативные команды остаются пользовательскими запросами
  • запросы abort или stop остаются пользовательскими запросами
  • личные сообщения остаются пользовательскими запросами

События комнаты используют строгую видимую доставку. Итоговый текст ассистента является приватным. Агент должен вызвать message(action=send), чтобы опубликовать сообщение в комнате.

Пример Discord

json5
{  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 для отдельного канала, когда фоновым должен быть только один канал:

json5
{  channels: {    discord: {      guilds: {        "<DISCORD_SERVER_ID>": {          channels: {            "<DISCORD_CHANNEL_ID_OR_NAME>": {              allow: true,              requireMention: false,            },          },        },      },    },  },}

Пример Slack

Списки разрешенных каналов Slack в первую очередь используют ID. Используйте ID каналов, например C12345678, а не #channel-name.

json5
{  messages: {    groupChat: {      unmentionedInbound: "room_event",      visibleReplies: "message_tool",      historyLimit: 50,    },  },  channels: {    slack: {      groupPolicy: "allowlist",      channels: {        "<SLACK_CHANNEL_ID>": {          allow: true,          requireMention: false,        },      },    },  },}

Пример Telegram

Для групп Telegram бот должен иметь возможность видеть обычные групповые сообщения. Если requireMention: false, отключите режим приватности BotFather или используйте другую настройку Telegram, которая доставляет боту весь групповой трафик.

json5
{  messages: {    groupChat: {      unmentionedInbound: "room_event",      visibleReplies: "message_tool",      historyLimit: 50,    },  },  channels: {    telegram: {      groups: {        "<TELEGRAM_GROUP_CHAT_ID>": {          groupPolicy: "open",          requireMention: false,        },      },    },  },}

ID групп Telegram обычно являются отрицательными числами, например -1001234567890. Прочитайте chat.id из openclaw logs --follow, перешлите групповое сообщение боту-помощнику для определения ID или проверьте getUpdates в Bot API.

Политика для конкретного агента

Используйте переопределение агента, когда несколько агентов используют одну комнату, но только один должен воспринимать неупомянутую болтовню как фоновый контекст:

json5
{  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.5. Это позволяет агенту решать, когда говорить, вызывая инструмент сообщений. Если модель возвращает итоговый текст без вызова инструмента, OpenClaw оставляет этот итоговый текст приватным и записывает метаданные подавленной доставки в журнал.

События комнаты остаются строгими даже когда другие групповые запросы используют автоматические ответы. Неупомянутые фоновые события комнаты все равно требуют message(action=send) для видимого вывода.

История

messages.groupChat.historyLimit управляет глобальным значением по умолчанию для истории группы. Каналы могут переопределять его с помощью channels.<channel>.historyLimit, а некоторые каналы также поддерживают лимиты истории для отдельных учетных записей.

Задайте historyLimit: 0, чтобы отключить контекст истории группы.

Поддерживаемые каналы событий комнаты сохраняют недавние фоновые сообщения комнаты как контекст. Discord сохраняет историю событий комнаты, пока видимая отправка в Discord не завершится успешно, чтобы тихий контекст не был потерян до доставки через инструмент сообщений.

Устранение неполадок

Если в комнате отображается набор текста или расход токенов, но видимого сообщения нет:

  1. Убедитесь, что комната разрешена списком разрешенных каналов и списком разрешенных отправителей.
  2. Убедитесь, что requireMention: false задан на ожидаемом уровне комнаты.
  3. Проверьте, имеет ли messages.groupChat.unmentionedInbound или переопределение агента значение "room_event".
  4. Проверьте журналы на наличие метаданных подавленной итоговой полезной нагрузки или didSendViaMessagingTool: false.
  5. Для обычных групповых запросов оставьте или восстановите messages.groupChat.visibleReplies: "automatic", если хотите, чтобы итоговые ответы публиковались автоматически. Для фоновых комнат, использующих message_tool, используйте модель или среду выполнения, которая надежно вызывает инструменты.

Если фоновые комнаты Telegram вообще не срабатывают, проверьте режим приватности BotFather и убедитесь, что Gateway получает обычные групповые сообщения.

Если фоновые комнаты Slack не срабатывают, убедитесь, что ключ канала является ID канала Slack и что у приложения есть требуемая область channels:history или groups:history для этого типа комнаты.

См. также

Was this useful?
On this page

On this page