Developer and self-hosted
IRC
Используйте IRC, если хотите добавить OpenClaw в классические каналы (#room) и личные сообщения.
Установите официальный плагин IRC, затем настройте его в разделе channels.irc.
Быстрый старт
- Установите плагин:
openclaw plugins install @openclaw/irc- Укажите как минимум хост, псевдоним и каналы для подключения в
~/.openclaw/openclaw.json:
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Запустите или перезапустите Gateway:
openclaw gateway runДля координации ботов рекомендуется использовать частный IRC-сервер. Если вы намеренно используете публичную IRC-сеть, распространённые варианты включают Libera.Chat, OFTC и Snoonet. Не используйте предсказуемые публичные каналы для служебного обмена данными между ботами или роем.
Настройки подключения
| Ключ | По умолчанию | Примечания |
|---|---|---|
host |
нет (обязательно) | Имя хоста IRC-сервера |
port |
6697 с TLS, 6667 без шифрования |
1-65535 |
tls |
true |
Устанавливайте false только при намеренном использовании незашифрованного соединения |
nick |
нет (обязательно) | Псевдоним бота |
username |
псевдоним, иначе openclaw |
Имя пользователя IRC |
realname |
OpenClaw |
Поле настоящего имени/GECOS |
password / passwordFile |
нет | Пароль сервера; файл должен быть обычным файлом |
channels |
нет | Каналы для подключения (["#openclaw"]) |
accounts / defaultAccount |
нет | Настройка нескольких учётных записей; переменные среды заполняют только учётную запись по умолчанию |
Настройки безопасности по умолчанию
- IRC использует необработанные сокеты TCP/TLS вне маршрутизации через прямой прокси-сервер, управляемый оператором OpenClaw. В развёртываниях, где весь исходящий трафик должен проходить через этот прямой прокси-сервер, установите
channels.irc.enabled=false, если прямой исходящий трафик IRC не разрешён явно. - По умолчанию
channels.irc.dmPolicyимеет значение"pairing": неизвестные отправители личных сообщений получают код сопряжения, который вы подтверждаете с помощьюopenclaw pairing approve irc <code>. - По умолчанию
channels.irc.groupPolicyимеет значение"allowlist". - При использовании
groupPolicy="allowlist"задайтеchannels.irc.groups, чтобы определить разрешённые каналы. - Используйте TLS (
channels.irc.tls=true), если только вы намеренно не допускаете передачу данных без шифрования.
Управление доступом
Для каналов IRC существуют два отдельных «барьера»:
- Доступ к каналу (
groupPolicy+groups): принимает ли бот сообщения из канала вообще. - Доступ отправителя (
groupAllowFrom/groups["#channel"].allowFromдля отдельных каналов): кто может активировать бота в этом канале.
Ключи конфигурации:
- Список разрешённых отправителей личных сообщений:
channels.irc.allowFrom - Список разрешённых отправителей группы (доступ отправителей канала):
channels.irc.groupAllowFrom - Настройки отдельных каналов (правила канала, отправителей и упоминаний):
channels.irc.groups["#channel"]сrequireMention,allowFrom,enabled,tools,toolsBySender,skillsиsystemPrompt 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
Пример (разрешить любому пользователю в #openclaw обращаться к боту):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}Активация ответов (упоминания)
Даже если канал разрешён (через groupPolicy + groups) и отправитель допущен, в групповых контекстах OpenClaw по умолчанию требует упоминания. Бот считается упомянутым, если сообщение содержит подключённый псевдоним бота или соответствует настроенным шаблонам упоминаний.
Поэтому в журналах может появляться drop channel … (missing-mention), если сообщение не содержит шаблон упоминания, соответствующий боту.
Чтобы бот отвечал в канале IRC без обязательного упоминания, отключите требование упоминания для этого канала:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}Либо, чтобы разрешить все каналы IRC (без списка разрешённых для отдельных каналов) и при этом отвечать без упоминаний:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}Примечание о безопасности (рекомендуется для публичных каналов)
Если разрешить allowFrom: ["*"] в публичном канале, любой пользователь сможет отправлять боту запросы.
Чтобы снизить риск, ограничьте инструменты для этого канала.
Одинаковые инструменты для всех пользователей канала
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}Разные инструменты для разных отправителей (владелец получает больше полномочий)
Используйте toolsBySender, чтобы применить более строгую политику к "*" и менее строгую — к своему псевдониму:
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}Примечания:
- В ключах
toolsBySenderследует использовать явные префиксы (channel:,id:,e164:,username:,name:). Для IRC используйтеid:со значением идентификатора отправителя:id:aliceилиid:alice!~alice@203.0.113.7для более надёжного сопоставления. - Устаревшие ключи без префиксов по-прежнему принимаются, сопоставляются только как
id:и вызывают предупреждение об устаревании. - Применяется первая соответствующая политика отправителя;
"*"служит универсальным резервным вариантом.
Дополнительные сведения о различиях между групповым доступом и требованием упоминания, а также об их взаимодействии см. в разделе /channels/groups.
NickServ
Чтобы пройти идентификацию в NickServ после подключения:
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}По умолчанию идентификация NickServ выполняется при каждом подключении, если задан пароль (enabled нужно установить в false только для отказа от неё). По умолчанию service имеет значение NickServ; passwordFile можно использовать вместо встроенного password.
Необязательная однократная регистрация при подключении (register: true требует registerEmail):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}После регистрации псевдонима отключите register, чтобы избежать повторных попыток REGISTER.
Переменные среды
Учётная запись по умолчанию поддерживает:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(через запятую)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST нельзя задать из файла .env рабочей области; см. Файлы .env рабочей области.
Устранение неполадок
- Если бот подключается, но не отвечает в каналах, проверьте
channels.irc.groupsи не отбрасываются ли сообщения из-за требования упоминания (missing-mention). Если бот должен отвечать без упоминаний, задайтеrequireMention:falseдля канала. - Если вход завершается с ошибкой, проверьте доступность псевдонима и пароль сервера.
- Если на пользовательской сети не удаётся установить TLS-соединение, проверьте хост, порт и настройку сертификата.
Связанные разделы
- Обзор каналов — все поддерживаемые каналы
- Сопряжение — аутентификация в личных сообщениях и процесс сопряжения
- Группы — поведение групповых чатов и требование упоминания
- Маршрутизация каналов — маршрутизация сеансов для сообщений
- Безопасность — модель доступа и усиление защиты