Passer au contenu principal

IRC

Utilisez IRC lorsque vous voulez OpenClaw dans des canaux classiques (#room) et des messages directs. IRC est fourni comme plugin d’extension, mais il se configure dans la configuration principale sous channels.irc.

Démarrage rapide

  1. Activez la configuration IRC dans ~/.openclaw/openclaw.json.
  2. Définissez au minimum :
{
  channels: {
    irc: {
      enabled: true,
      host: "irc.example.com",
      port: 6697,
      tls: true,
      nick: "openclaw-bot",
      channels: ["#openclaw"],
    },
  },
}
Préférez un serveur IRC privé pour la coordination du bot. Si vous utilisez volontairement un réseau IRC public, les choix courants incluent Libera.Chat, OFTC et Snoonet. Évitez les canaux publics prévisibles pour le trafic de coordination de bot ou d’essaim.
  1. Démarrez/redémarrez la gateway :
openclaw gateway run

Valeurs de sécurité par défaut

  • channels.irc.dmPolicy a pour valeur par défaut "pairing".
  • channels.irc.groupPolicy a pour valeur par défaut "allowlist".
  • Avec groupPolicy="allowlist", définissez channels.irc.groups pour définir les canaux autorisés.
  • Utilisez TLS (channels.irc.tls=true) sauf si vous acceptez volontairement un transport en clair.

Contrôle d’accès

Il existe deux « barrières » distinctes pour les canaux IRC :
  1. Accès au canal (groupPolicy + groups) : détermine si le bot accepte ou non des messages d’un canal.
  2. Accès de l’expéditeur (groupAllowFrom / groups["#channel"].allowFrom par canal) : détermine qui est autorisé à déclencher le bot dans ce canal.
Clés de configuration :
  • Liste d’autorisation DM (accès de l’expéditeur en DM) : channels.irc.allowFrom
  • Liste d’autorisation des expéditeurs de groupe (accès des expéditeurs du canal) : channels.irc.groupAllowFrom
  • Contrôles par canal (canal + expéditeur + règles de mention) : channels.irc.groups["#channel"]
  • channels.irc.groupPolicy="open" autorise les canaux non configurés (toujours soumis au déclenchement par mention par défaut)
Les entrées de liste d’autorisation doivent utiliser des identités d’expéditeur stables (nick!user@host). La correspondance par simple pseudonyme est modifiable et n’est activée que lorsque channels.irc.dangerouslyAllowNameMatching: true.

Piège courant : allowFrom concerne les DM, pas les canaux

Si vous voyez des journaux comme :
  • irc: drop group sender alice!ident@host (policy=allowlist)
…cela signifie que l’expéditeur n’était pas autorisé pour les messages de groupe/canal. Corrigez cela en :
  • définissant channels.irc.groupAllowFrom (global pour tous les canaux), ou
  • définissant des listes d’autorisation d’expéditeurs par canal : channels.irc.groups["#channel"].allowFrom
Exemple (autoriser n’importe qui dans #tuirc-dev à parler au bot) :
{
  channels: {
    irc: {
      groupPolicy: "allowlist",
      groups: {
        "#tuirc-dev": { allowFrom: ["*"] },
      },
    },
  },
}

Déclenchement des réponses (mentions)

Même si un canal est autorisé (via groupPolicy + groups) et que l’expéditeur est autorisé, OpenClaw utilise par défaut le déclenchement par mention dans les contextes de groupe. Cela signifie que vous pouvez voir des journaux comme drop channel … (missing-mention) à moins que le message inclue un motif de mention qui correspond au bot. Pour que le bot réponde dans un canal IRC sans nécessiter de mention, désactivez le déclenchement par mention pour ce canal :
{
  channels: {
    irc: {
      groupPolicy: "allowlist",
      groups: {
        "#tuirc-dev": {
          requireMention: false,
          allowFrom: ["*"],
        },
      },
    },
  },
}
Ou, pour autoriser tous les canaux IRC (sans liste d’autorisation par canal) et continuer à répondre sans mentions :
{
  channels: {
    irc: {
      groupPolicy: "open",
      groups: {
        "*": { requireMention: false, allowFrom: ["*"] },
      },
    },
  },
}

Note de sécurité (recommandée pour les canaux publics)

Si vous autorisez allowFrom: ["*"] dans un canal public, n’importe qui peut solliciter le bot. Pour réduire le risque, limitez les outils pour ce canal.

Les mêmes outils pour tout le monde dans le canal

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

Des outils différents selon l’expéditeur (le propriétaire a plus de pouvoir)

Utilisez toolsBySender pour appliquer une politique plus stricte à "*" et une politique plus souple à votre pseudonyme :
{
  channels: {
    irc: {
      groups: {
        "#tuirc-dev": {
          allowFrom: ["*"],
          toolsBySender: {
            "*": {
              deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
            },
            "id:eigen": {
              deny: ["gateway", "nodes", "cron"],
            },
          },
        },
      },
    },
  },
}
Remarques :
  • Les clés toolsBySender doivent utiliser id: pour les valeurs d’identité d’expéditeur IRC : id:eigen ou id:eigen!~eigen@174.127.248.171 pour une correspondance plus forte.
  • Les anciennes clés sans préfixe sont toujours acceptées et correspondent uniquement comme id:.
  • La première politique d’expéditeur correspondante l’emporte ; "*" est la solution de repli générique.
Pour en savoir plus sur l’accès aux groupes par rapport au déclenchement par mention (et sur leur interaction), consultez : /channels/groups.

NickServ

Pour vous identifier auprès de NickServ après la connexion :
{
  channels: {
    irc: {
      nickserv: {
        enabled: true,
        service: "NickServ",
        password: "your-nickserv-password",
      },
    },
  },
}
Enregistrement unique facultatif à la connexion :
{
  channels: {
    irc: {
      nickserv: {
        register: true,
        registerEmail: "bot@example.com",
      },
    },
  },
}
Désactivez register après l’enregistrement du pseudonyme afin d’éviter des tentatives répétées de REGISTER.

Variables d’environnement

Le compte par défaut prend en charge :
  • IRC_HOST
  • IRC_PORT
  • IRC_TLS
  • IRC_NICK
  • IRC_USERNAME
  • IRC_REALNAME
  • IRC_PASSWORD
  • IRC_CHANNELS (séparés par des virgules)
  • IRC_NICKSERV_PASSWORD
  • IRC_NICKSERV_REGISTER_EMAIL

Dépannage

  • Si le bot se connecte mais ne répond jamais dans les canaux, vérifiez channels.irc.groups et si le déclenchement par mention rejette les messages (missing-mention). Si vous voulez qu’il réponde sans sollicitation, définissez requireMention:false pour le canal.
  • Si la connexion échoue, vérifiez la disponibilité du pseudonyme et le mot de passe du serveur.
  • Si TLS échoue sur un réseau personnalisé, vérifiez l’hôte/le port et la configuration du certificat.
  • Channels Overview — tous les canaux pris en charge
  • Pairing — authentification DM et flux de pairing
  • Groups — comportement des discussions de groupe et déclenchement par mention
  • Channel Routing — routage de session pour les messages
  • Security — modèle d’accès et durcissement