Utilisez IRC quand vous souhaitez OpenClaw dans des canaux classiques (#room) et des messages prives.
IRC est fourni comme plugin d’extension, mais il se configure dans la configuration principale sous channels.irc.
Demarrage rapide
- Activez la configuration IRC dans
~/.openclaw/openclaw.json. - Definissez au minimum :
{
"channels": {
"irc": {
"enabled": true,
"host": "irc.libera.chat",
"port": 6697,
"tls": true,
"nick": "openclaw-bot",
"channels": ["#openclaw"]
}
}
}
- Demarrez/redemarrez la gateway :
openclaw gateway run
Valeurs de securite par defaut
channels.irc.dmPolicyest par defaut"pairing".channels.irc.groupPolicyest par defaut"allowlist".- Avec
groupPolicy="allowlist", definissezchannels.irc.groupspour specifier les canaux autorises. - Utilisez TLS (
channels.irc.tls=true) sauf si vous acceptez intentionnellement le transport en clair.
Controle d’acces
Il y a deux « portes » separees pour les canaux IRC :
- Acces au canal (
groupPolicy+groups) : si le bot accepte les messages d’un canal. - Acces expediteur (
groupAllowFrom/ par canalgroups["#channel"].allowFrom) : qui peut declencher le bot dans ce canal.
Cles de configuration :
- Liste d’autorisation DM (acces DM) :
channels.irc.allowFrom - Liste d’autorisation expediteur groupe (acces expediteur canal) :
channels.irc.groupAllowFrom - Controles par canal (canal + expediteur + regles de mention) :
channels.irc.groups["#channel"] channels.irc.groupPolicy="open"autorise les canaux non configures (toujours avec filtrage par mention par defaut)
Les entrees de liste d’autorisation doivent utiliser des identites d’expediteur stables (nick!user@host).
La correspondance par pseudo nu est mutable et n’est activee que lorsque channels.irc.dangerouslyAllowNameMatching: true.
Piege courant : allowFrom concerne les DMs, pas les canaux
Si vous voyez des logs comme :
irc: drop group sender alice!ident@host (policy=allowlist)
…cela signifie que l’expediteur n’etait pas autorise pour les messages de groupe/canal. Corrigez en :
- definissant
channels.irc.groupAllowFrom(global pour tous les canaux), ou - definissant des listes d’autorisation par canal :
channels.irc.groups["#channel"].allowFrom
Exemple (autoriser n’importe qui dans #tuirc-dev a parler au bot) :
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": { allowFrom: ["*"] },
},
},
},
}
Declenchement des reponses (mentions)
Meme si un canal est autorise (via groupPolicy + groups) et que l’expediteur est autorise, OpenClaw applique par defaut le filtrage par mention dans les contextes de groupe.
Cela signifie que vous pouvez voir des logs comme drop channel ... (missing-mention) sauf si le message inclut un pattern de mention correspondant au bot.
Pour que le bot reponde dans un canal IRC sans necessiter de mention, desactivez le filtrage par mention pour ce canal :
{
channels: {
irc: {
groupPolicy: "allowlist",
groups: {
"#tuirc-dev": {
requireMention: false,
allowFrom: ["*"],
},
},
},
},
}
Ou pour autoriser tous les canaux IRC (sans liste par canal) tout en repondant sans mentions :
{
channels: {
irc: {
groupPolicy: "open",
groups: {
"*": { requireMention: false, allowFrom: ["*"] },
},
},
},
}
Remarque de securite (recommande pour les canaux publics)
Si vous autorisez allowFrom: ["*"] dans un canal public, n’importe qui peut interagir avec le bot.
Pour reduire les risques, restreignez les outils pour ce canal.
Memes outils pour tous dans le canal
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
tools: {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
},
},
},
},
}
Outils differents par expediteur (le proprietaire a plus de pouvoir)
Utilisez toolsBySender pour appliquer une politique plus stricte a "*" et une plus souple a votre pseudo :
{
channels: {
irc: {
groups: {
"#tuirc-dev": {
allowFrom: ["*"],
toolsBySender: {
"*": {
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
},
"id:eigen": {
deny: ["gateway", "nodes", "cron"],
},
},
},
},
},
},
}
Remarques :
- Les cles
toolsBySenderdoivent utiliserid:pour les valeurs d’identite des expediteurs IRC :id:eigenouid:[email protected]pour une correspondance plus forte. - Les cles legacy non prefixees sont toujours acceptees et correspondent uniquement a
id:. - La premiere politique d’expediteur correspondante l’emporte ;
"*"est le repli joker.
Pour en savoir plus sur l’acces aux groupes vs le filtrage par mention (et comment ils interagissent), voir : /channels/groups.
NickServ
Pour s’identifier aupres de NickServ apres connexion :
{
"channels": {
"irc": {
"nickserv": {
"enabled": true,
"service": "NickServ",
"password": "your-nickserv-password"
}
}
}
}
Enregistrement unique optionnel a la connexion :
{
"channels": {
"irc": {
"nickserv": {
"register": true,
"registerEmail": "[email protected]"
}
}
}
}
Desactivez register apres l’enregistrement du pseudo pour eviter les tentatives REGISTER repetees.
Variables d’environnement
Le compte par defaut prend en charge :
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(separees par des virgules)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
Depannage
- Si le bot se connecte mais ne repond jamais dans les canaux, verifiez
channels.irc.groupset si le filtrage par mention rejette les messages (missing-mention). Si vous voulez qu’il reponde sans ping, definissezrequireMention:falsepour le canal. - Si la connexion echoue, verifiez la disponibilite du pseudo et le mot de passe du serveur.
- Si TLS echoue sur un reseau personnalise, verifiez l’hote/port et la configuration du certificat.