Developer and self-hosted

IRC

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

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

  1. Установите Plugin:
bash
openclaw plugins install @openclaw/irc
  1. Включите конфигурацию IRC в ~/.openclaw/openclaw.json.
  2. Задайте как минимум:
json5
{  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:
bash
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 общаться с ботом):

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

Запуск ответов (упоминания)

Даже если канал разрешен (через groupPolicy + groups) и отправитель разрешен, OpenClaw по умолчанию использует ограничение по упоминанию в групповых контекстах.

Это означает, что вы можете видеть журналы вроде drop channel … (missing-mention), если сообщение не содержит шаблон упоминания, совпадающий с ботом.

Чтобы бот отвечал в IRC-канале без необходимости упоминания, отключите ограничение по упоминанию для этого канала:

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

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

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

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

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

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

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

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

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

json5
{  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 после подключения:

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

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

json5
{  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 не работает в пользовательской сети, проверьте хост/порт и настройку сертификата.

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

Was this useful?
On this page

On this page