Developer and self-hosted

IRC

Використовуйте IRC, коли потрібен OpenClaw у класичних каналах (#room) і прямих повідомленнях. IRC постачається як вбудований plugin, але налаштовується в основній конфігурації в channels.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-сокети поза маршрутизацією через керований оператором OpenClaw прямий проксі. У розгортаннях, де весь вихідний трафік має проходити через цей прямий проксі, задайте 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): кому дозволено запускати бота всередині цього каналу.

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

  • Список дозволених для DM (доступ відправника DM): channels.irc.allowFrom
  • Список дозволених відправників групи (доступ відправника каналу): channels.irc.groupAllowFrom
  • Поканальні керування (правила каналу, відправника й згадок): channels.irc.groups["#channel"]
  • channels.irc.groupPolicy="open" дозволяє неналаштовані канали (за замовчуванням усе одно обмежено згадками)

Записи списку дозволених мають використовувати стабільні ідентичності відправників (nick!user@host). Зіставлення лише за ніком є змінним і вмикається тільки коли channels.irc.dangerouslyAllowNameMatching: true.

Типова пастка: allowFrom призначено для DM, а не каналів

Якщо ви бачите журнали на кшталт:

  • 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:[email protected] для сильнішого зіставлення.
  • Застарілі ключі без префікса все ще приймаються й зіставляються лише як id:.
  • Перемагає перша політика відправника, що збігається; "*" є резервним wildcard.

Докладніше про доступ груп і обмеження згадками (і як вони взаємодіють) див.: /channels/groups.

NickServ

Щоб ідентифікуватися через NickServ після підключення:

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

Необов’язкова одноразова реєстрація під час підключення:

{
  channels: {
    irc: {
      nickserv: {
        register: true,
        registerEmail: "[email protected]",
      },
    },
  },
}

Вимкніть 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 не можна задавати з workspace .env; див. Файли workspace .env.

Усунення несправностей

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

Пов’язане