Aller au contenu
Guides

Le routage des canaux d’OpenClaw

Les réponses repartent d’où elles viennent, comment un agent est choisi, les formes de clés de session, les portées des messages privés et des groupes, les préfixes de cibles, et où sont stockées les sessions

6 min de lecture

Où part une réponse, et quel cerveau l’écrit ? Dans OpenClaw, les deux réponses sont déterministes et appartiennent à la configuration de l’hôte : les réponses repartent vers le canal d’où vient le message, le modèle ne choisit pas de canal, et sous la portée par défaut des messages privés, les messages privés de tous les canaux convergent vers la session principale de l’agent. Voici les termes, la règle des préfixes de cibles, les formes et portées des clés de session, les règles d’épinglage et d’enregistrement gardé, le routage ordonné qui choisit un agent, la place des groupes de diffusion, la forme de la configuration, le stockage, et ce qu’ajoutent WebChat et le contexte de réponse.

Termes et cibles

  • Un canal est une extension de canal comme Discord, Google Chat, iMessage, IRC, LINE, Signal, Slack, Telegram ou WhatsApp, WebChat étant le canal interne de l’interface qui n’est pas un canal sortant configurable ; un identifiant de compte est une instance de compte par canal, et un compte par défaut de canal choisit lequel est utilisé quand un chemin sortant n’en nomme aucun, ce que les configurations multi-comptes devraient fixer explicitement plutôt que de laisser le routage de repli choisir le premier identifiant normalisé.
  • Un identifiant d’agent est un espace de travail isolé plus un magasin de sessions, un cerveau ; une clé de session est le compartiment qui stocke le contexte et contrôle la concurrence.
  • Les cibles sortantes explicites peuvent porter un préfixe de fournisseur, comme un préfixe Telegram devant un identifiant ; le cœur ne le traite comme indication de sélection de canal que quand le canal choisi vaut dernier ou reste non résolu et que l’extension chargée annonce ce préfixe, et si un canal a déjà été choisi, le préfixe doit lui correspondre, si bien qu’une livraison WhatsApp vers un identifiant préfixé Telegram échoue avant toute normalisation par l’extension. Les préfixes de type de cible et de service comme canal, utilisateur, salon, fil, identifiant iMessage ou numéro SMS restent dans la grammaire du canal choisi et ne sélectionnent jamais le fournisseur.
  • Clés de session : les messages privés se replient par défaut sur la clé principale de l’agent ; un réglage de portée des messages privés peut les garder par correspondant, par canal et correspondant, ou par compte, canal et correspondant, et une liaison de route peut surcharger la portée pour ses correspondants. Même quand l’historique des messages privés est partagé avec la session principale, le bac à sable et la politique d’outils utilisent une clé d’exécution dérivée par compte pour les messages privés externes, afin que les messages issus des canaux ne soient pas traités comme des exécutions locales de la session principale.
Le modèle ne choisit pas de canal ; le routage est déterministe et contrôlé par la configuration de l’hôte.

Groupes, épinglage, l’ordre de routage

Avec la portée par groupe par défaut, les groupes et les canaux restent isolés par canal avec des clés de groupe et de canal, les fils Slack et Discord ajoutent un suffixe de fil et les sujets de forum Telegram embarquent un identifiant de sujet ; une portée de groupe principale route tous les correspondants non directs vers la session principale, globalement ou par liaison, en ne changeant que le contexte partagé tandis que le filtrage par mention et les réponses utilisent toujours le salon d’origine. Quand la portée des messages privés vaut principale, OpenClaw déduit un propriétaire épinglé de la liste d’autorisation quand elle a exactement une entrée non joker qui se normalise en identifiant d’expéditeur concret, et un message privé de quiconque d’autre enregistre encore les métadonnées entrantes sans écraser la dernière route de la session principale. Les extensions de canaux peuvent marquer un enregistrement entrant comme ne-pas-créer pour qu’un chemin gardé mette à jour une session existante sans créer d’entrée de route seule parce qu’un message a été observé. Le routage ordinaire choisit alors un agent dans l’ordre : correspondance exacte de correspondant, correspondance du correspondant parent pour l’héritage des fils, joker de correspondant, guilde plus rôles Discord, guilde Discord, équipe Slack, correspondance de compte, correspondance de canal avec n’importe quel compte, et enfin un propriétaire de repli fourni par l’appelant ou le seul agent configuré ; plusieurs agents sans propriétaire exigent une liaison correspondante, et le routage ne choisit jamais la première entrée de la liste. Une liaison à plusieurs champs ne s’applique que si tous correspondent, et l’agent retenu détermine l’espace de travail et le magasin de sessions.

Diffusion, configuration, stockage

  • Les fils de groupes d’agents utilisent la configuration de diffusion de premier niveau pour faire tourner plusieurs agents sur un message admis, une clé qualifiée canal et correspondant l’emportant sur une clé WhatsApp non qualifiée ; le routage ordinaire fournit toujours la route de conversation, le coordinateur donne à chaque participant sa propre session, les entrées qualifiées valent par défaut une sélection explicite par mention avec un tour et un passage par agent, les listes d’autorisation des canaux s’appliquent toujours, et les liaisons ACP configurées restent exclusives et contournent la diffusion.
  • La configuration a deux parties : des définitions d’agents nommées sous les entrées d’agents, et des liaisons qui associent canaux, comptes et correspondants à des agents, avec éventuellement une surcharge de portée de session ; l’exemple de la documentation lie une équipe Slack et un canal Slack précis à un agent de support, le second avec la portée de groupe principale.
  • Les lignes de sessions et les transcriptions vivent dans la base SQLite de chaque agent sous le répertoire d’état ; les installations anciennes avec des transcriptions JSONL et un magasin de sessions JSON doivent arrêter la passerelle, sauvegarder et lancer la correction du doctor avant de redémarrer, parce que le démarrage n’importe pas les anciens fichiers et refuse d’être prêt quand il en trouve un. Le chemin du magasin accepte un gabarit par identifiant d’agent, les fichiers de magasin découverts doivent être des fichiers ordinaires dans la racine résolue de l’agent, et la découverte des sessions ACP lit les métadonnées SQLite et les joint aux entrées de sessions.

Les sessions d’OpenClaw explique les clés dont ces formes sont bâties, et OpenClaw à plusieurs utilisateurs les configurations où les portées et l’épinglage décident qui partage quoi.

WebChat et contexte de réponse

WebChat s’attache à l’agent choisi et prend par défaut sa session principale, ce qui explique qu’il montre en un seul endroit le contexte de tous les canaux pour cet agent. Les réponses entrantes incluent l’identifiant, le corps et l’expéditeur du message cité quand ils existent, et le contexte cité est ajouté au corps sous forme de bloc de réponse, de façon cohérente entre canaux. Les groupes de diffusion d’OpenClaw couvre la diffusion qui se superpose à ce routage, et OpenClaw doctor la migration qui déplace les anciens fichiers de sessions vers SQLite.

Sur Diali

Sur Diali, la même règle vaut : un message sur WhatsApp reçoit sa réponse sur WhatsApp, un fil Telegram sur Telegram, et le chat du tableau de bord est la vue WebChat de la session principale de l’assistant. OpenClaw hébergé sur Diali est l’assistant et Connecter votre premier canal en cinq minutes la façon dont les canaux qui alimentent ce routage sont reliés.

  • Les réponses reviennent à leur canal ; le modèle n’en choisit jamais.
  • Neuf correspondances ordonnées choisissent un agent.
  • Les préfixes sont des indications, jamais un moyen de changer de fournisseur.
Commencer

Arrêtez de lire, construisez le vôtre

Configurez un agent, choisissez un canal, et faites-le travailler dans l’application que vous gardez déjà ouverte.