Перейти к основному содержимому

Платформы обмена сообщениями

IRC

Используйте IRC, когда вам нужен OpenClaw в классических каналах (#room) и личных сообщениях. IRC поставляется в виде плагина-расширения, но настраивается в основном конфиге в разделе channels.irc.

Быстрый старт

  1. Включите конфигурацию IRC в файле ~/.openclaw/openclaw.json.
  2. Установите как минимум:
{
"channels": {
"irc": {
"enabled": true,
"host": "irc.libera.chat",
"port": 6697,
"tls": true,
"nick": "openclaw-bot",
"channels": ["#openclaw"]
}
}
}
  1. Запустите/перезапустите шлюз:
openclaw gateway run

Политики безопасности по умолчанию

  • channels.irc.dmPolicy по умолчанию "pairing".
  • channels.irc.groupPolicy по умолчанию "allowlist".
  • При groupPolicy="allowlist" задайте channels.irc.groups для определения разрешённых каналов.
  • Используйте TLS (channels.irc.tls=true), если вы не принимаете намеренно передачу данных в открытом виде.

Контроль доступа

Для IRC-каналов существуют два отдельных «барьера»:

  1. Доступ к каналу (groupPolicy + groups): принимает ли бот сообщения из канала вообще.
  2. Доступ отправителя (groupAllowFrom / groups["#channel"].allowFrom для конкретного канала): кому разрешено взаимодействовать с ботом внутри этого канала.

Ключи конфигурации:

  • Разрешённые отправители для личных сообщений (доступ отправителя в ЛС): channels.irc.allowFrom
  • Глобальный список разрешённых отправителей для групп (доступ отправителя в канале): channels.irc.groupAllowFrom
  • Настройки для конкретного канала (канал + отправитель + правила упоминаний): channels.irc.groups["#channel"]
  • channels.irc.groupPolicy="open" разрешает не настроенные каналы (но по умолчанию они всё равно требуют упоминания)

Записи в списках разрешений должны использовать стабильные идентификаторы отправителей (ник!пользователь@хост). Сопоставление только по нику нестабильно и включается только при channels.irc.dangerouslyAllowNameMatching: true.

Частая ошибка: allowFrom предназначен для ЛС, а не для каналов

Если вы видите в логах записи вида:

  • irc: drop group sender alice!ident@host (policy=allowlist)

…это означает, что отправитель не был разрешён для групповых/канальных сообщений. Исправьте это, задав либо:

  • channels.irc.groupAllowFrom (глобально для всех каналов), либо
  • списки разрешённых отправителей для конкретного канала: channels.irc.groups["#channel"].allowFrom

Пример (разрешить всем в #tuirc-dev общаться с ботом):

{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": { allowFrom: ["*"] },
},
},
},
}

Триггеры ответов (упоминания)

Даже если канал разрешён (через groupPolicy + groups) и отправитель разрешён, OpenClaw по умолчанию использует барьер упоминаний в групповых контекстах. Это означает, что вы можете видеть в логах записи вида drop channel … (missing-mention), если сообщение не содержит шаблон упоминания, соответствующий боту. Чтобы бот отвечал в IRC-канале без необходимости упоминания, отключите барьер упоминаний для этого канала:

{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": {
requireMention: false,
allowFrom: ["*"],
},
},
},
},
}

Или чтобы разрешить все IRC-каналы (без списка разрешений для каждого канала) и всё равно отвечать без упоминаний:

{
channels: {
irc: {
groupPolicy: "open",
groups: {
"*": { requireMention: false, allowFrom: ["*"] },
},
},
},
}

Примечание по безопасности (рекомендуется для публичных каналов)

Если вы разрешаете allowFrom: ["*"] в публичном канале, любой сможет отправлять запросы боту. Чтобы снизить риски, ограничьте доступные инструменты для этого канала.

Одинаковые инструменты для всех в канале

{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
tools: {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
},
},
},
},
}

Разные инструменты для разных отправителей (владелец получает больше прав)

Используйте toolsBySender, чтобы применить более строгую политику для "*" и более мягкую для вашего ника:

{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
toolsBySender: {
"*": {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
"id:eigen": {
deny: ["gateway", "nodes", "cron"],
},
},
},
},
},
},
}

Примечания:

  • Ключи в toolsBySender должны использовать префикс id: для значений идентификаторов отправителей IRC: id:eigen или id:eigen!~eigen@174.127.248.171 для более строгого сопоставления.
  • Устаревшие ключи без префикса всё ещё принимаются и сопоставляются только как id:.
  • Первая совпавшая политика для отправителя применяется; "*" является подстановочным значением по умолчанию.

Подробнее о доступе к группам и барьере упоминаний (и их взаимодействии) см.: /channels/groups.

NickServ

Для идентификации через NickServ после подключения:

{
"channels": {
"irc": {
"nickserv": {
"enabled": true,
"service": "NickServ",
"password": "your-nickserv-password"
}
}
}
}

Опциональная одноразовая регистрация при подключении:

{
"channels": {
"irc": {
"nickserv": {
"register": true,
"registerEmail": "bot@example.com"
}
}
}
}

Отключите register после регистрации ника, чтобы избежать повторных попыток REGISTER.

Переменные окружения

Учётная запись по умолчанию поддерживает:

  • IRC_HOST
  • IRC_PORT
  • IRC_TLS
  • IRC_NICK
  • IRC_USERNAME
  • IRC_REALNAME
  • IRC_PASSWORD
  • IRC_CHANNELS (через запятую)
  • IRC_NICKSERV_PASSWORD
  • IRC_NICKSERV_REGISTER_EMAIL

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

  • Если бот подключается, но никогда не отвечает в каналах, проверьте channels.irc.groups и не отбрасываются ли сообщения из-за барьера упоминаний (missing-mention). Если вы хотите, чтобы он отвечал без пингов, установите requireMention:false для канала.
  • Если вход не удаётся, проверьте доступность ника и пароль сервера.
  • Если TLS не работает в пользовательской сети, проверьте хост/порт и настройку сертификатов.

iMessageLINE