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

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

  1. Установите Plugin:
openclaw plugins install @openclaw/irc
  1. Включите конфигурацию IRC в ~/.openclaw/openclaw.json.
  2. Задайте как минимум:
{
  channels: {
    irc: {
      enabled: true,
      host: "irc.example.com",
      port: 6697,
      tls: true,
      nick: "openclaw-bot",
      channels: ["#openclaw"],
    },
  },
}
Для координации ботов предпочитайте частный IRC-сервер. Если вы намеренно используете публичную IRC-сеть, распространенные варианты включают Libera.Chat, OFTC и Snoonet. Избегайте предсказуемых публичных каналов для обратного канала ботов или роя.
  1. Запустите или перезапустите Gateway:
openclaw gateway run

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

  • IRC использует необработанные TCP/TLS-сокеты вне маршрутизации через forward proxy, управляемый оператором OpenClaw. В развертываниях, где весь исходящий трафик должен проходить через этот forward proxy, задайте channels.irc.enabled=false, если прямой исходящий IRC-трафик явно не одобрен.
  • 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" разрешает ненастроенные каналы (по умолчанию все равно требуется упоминание)
Записи списка разрешенных должны использовать стабильные идентификаторы отправителей (nick!user@host). Сопоставление только по нику изменяемо и включается только при 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:.
  • Побеждает первая совпавшая политика отправителя; "*" является резервным wildcard-вариантом.
Подробнее о групповом доступе и ограничении по упоминанию (и о том, как они взаимодействуют) см.: /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
IRC_HOST нельзя задать из .env рабочей области; см. файлы .env рабочей области.

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

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

Связанные разделы