Clés de configuration par canal sousDocumentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
channels.*. Couvre l’accès aux DM et aux groupes,
les configurations multi-comptes, le filtrage par mention et les clés par canal pour Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage et les autres plugins de canaux groupés.
Pour les agents, les outils, le runtime du Gateway et les autres clés de premier niveau, consultez
Référence de configuration.
Canaux
Chaque canal démarre automatiquement lorsque sa section de configuration existe (sauf sienabled: false).
Accès aux DM et aux groupes
Tous les canaux prennent en charge les politiques de DM et les politiques de groupe :| Politique de DM | Comportement |
|---|---|
pairing (default) | Les expéditeurs inconnus reçoivent un code d’appairage unique ; le propriétaire doit approuver |
allowlist | Uniquement les expéditeurs dans allowFrom (ou le magasin d’autorisation appairé) |
open | Autorise tous les DM entrants (nécessite allowFrom: ["*"]) |
disabled | Ignore tous les DM entrants |
| Politique de groupe | Comportement |
|---|---|
allowlist (default) | Uniquement les groupes correspondant à la liste d’autorisation configurée |
open | Contourne les listes d’autorisation de groupes (le filtrage par mention s’applique toujours) |
disabled | Bloque tous les messages de groupe/salon |
channels.defaults.groupPolicy définit la valeur par défaut lorsque le groupPolicy d’un fournisseur n’est pas défini.
Les codes d’appairage expirent après 1 heure. Les demandes d’appairage DM en attente sont limitées à 3 par canal.
Si un bloc fournisseur est entièrement manquant (channels.<provider> absent), la politique de groupe au runtime revient à allowlist (échec fermé) avec un avertissement au démarrage.Remplacements de modèle par canal
Utilisezchannels.modelByChannel pour associer des ID de canal spécifiques à un modèle. Les valeurs acceptent provider/model ou des alias de modèle configurés. La correspondance de canal s’applique lorsqu’une session ne dispose pas déjà d’un remplacement de modèle (par exemple, défini via /model).
Valeurs par défaut des canaux et Heartbeat
Utilisezchannels.defaults pour le comportement partagé de politique de groupe et de Heartbeat entre fournisseurs :
channels.defaults.groupPolicy: politique de groupe de repli lorsqu’ungroupPolicyau niveau du fournisseur n’est pas défini.channels.defaults.contextVisibility: mode de visibilité par défaut du contexte supplémentaire pour tous les canaux. Valeurs :all(par défaut, inclut tout le contexte cité/fil/historique),allowlist(inclut uniquement le contexte provenant d’expéditeurs autorisés),allowlist_quote(identique à allowlist, mais conserve le contexte de citation/réponse explicite). Remplacement par canal :channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: inclut les statuts de canaux sains dans la sortie de Heartbeat.channels.defaults.heartbeat.showAlerts: inclut les statuts dégradés/en erreur dans la sortie de Heartbeat.channels.defaults.heartbeat.useIndicator: affiche une sortie Heartbeat compacte de type indicateur.
WhatsApp multi-comptes
WhatsApp multi-comptes
- Les commandes sortantes utilisent par défaut le compte
defaults’il est présent ; sinon le premier ID de compte configuré (trié). - L’option
channels.whatsapp.defaultAccountremplace cette sélection de compte par défaut de repli lorsqu’elle correspond à un ID de compte configuré. - L’ancien répertoire d’authentification Baileys à compte unique est migré par
openclaw doctorverswhatsapp/default. - Remplacements par compte :
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Jeton du bot :
channels.telegram.botTokenouchannels.telegram.tokenFile(fichier standard uniquement ; liens symboliques rejetés), avecTELEGRAM_BOT_TOKENcomme repli pour le compte par défaut. apiRootest uniquement la racine de l’API Telegram Bot. Utilisezhttps://api.telegram.orgou votre racine auto-hébergée/proxy, pashttps://api.telegram.org/bot<TOKEN>;openclaw doctor --fixsupprime un suffixe final/bot<TOKEN>accidentel.- L’option
channels.telegram.defaultAccountremplace la sélection du compte par défaut lorsqu’elle correspond à un ID de compte configuré. - Dans les configurations multi-comptes (2 ID de compte ou plus), définissez explicitement une valeur par défaut (
channels.telegram.defaultAccountouchannels.telegram.accounts.default) afin d’éviter le routage de repli ;openclaw doctoravertit lorsque celle-ci est manquante ou invalide. configWrites: falsebloque les écritures de configuration initiées par Telegram (migrations d’ID de supergroupe,/config set|unset).- Les entrées de premier niveau
bindings[]avectype: "acp"configurent des liaisons ACP persistantes pour les sujets de forum (utilisez le format canoniquechatId:topic:topicIddansmatch.peer.id). La sémantique des champs est partagée dans Agents ACP. - Les aperçus de flux Telegram utilisent
sendMessage+editMessageText(fonctionne dans les discussions directes et de groupe). - Politique de réessai : consultez Politique de réessai.
Discord
- Jeton :
channels.discord.token, avecDISCORD_BOT_TOKENcomme solution de repli pour le compte par défaut. - Les appels sortants directs qui fournissent un
tokenDiscord explicite utilisent ce jeton pour l’appel ; les paramètres de nouvelle tentative/de politique du compte proviennent toujours du compte sélectionné dans l’instantané d’exécution actif. channels.discord.defaultAccountfacultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.- Utilisez
user:<id>(DM) ouchannel:<id>(canal de guilde) pour les cibles de livraison ; les identifiants numériques nus sont rejetés. - Les slugs de guilde sont en minuscules, avec les espaces remplacés par
-; les clés de canal utilisent le nom slugifié (sans#). Préférez les identifiants de guilde. - Les messages rédigés par des bots sont ignorés par défaut.
allowBots: trueles active ; utilisezallowBots: "mentions"pour n’accepter que les messages de bots qui mentionnent le bot (les propres messages restent filtrés). channels.discord.guilds.<id>.ignoreOtherMentions(et les remplacements par canal) supprime les messages qui mentionnent un autre utilisateur ou rôle mais pas le bot (hors @everyone/@here).channels.discord.mentionAliasesassocie le texte sortant stable@handleaux identifiants d’utilisateurs Discord avant l’envoi, afin que les coéquipiers connus puissent être mentionnés de façon déterministe même lorsque le cache de répertoire transitoire est vide. Les remplacements par compte se trouvent souschannels.discord.accounts.<accountId>.mentionAliases.maxLinesPerMessage(17 par défaut) fractionne les messages longs même sous 2 000 caractères.channels.discord.threadBindingscontrôle le routage Discord lié aux fils :enabled: remplacement Discord pour les fonctionnalités de session liées aux fils (/focus,/unfocus,/agents,/session idle,/session max-age, et livraison/routage liés)idleHours: remplacement Discord pour la suppression automatique du focus après inactivité, en heures (0désactive)maxAgeHours: remplacement Discord pour l’âge maximal strict, en heures (0désactive)spawnSessions: commutateur poursessions_spawn({ thread: true })et la création/liaison automatique de fils lors du démarrage de fils ACP (par défaut :true)defaultSpawnContext: contexte natif de sous-agent pour les démarrages liés aux fils ("fork"par défaut)
- Les entrées
bindings[]de premier niveau avectype: "acp"configurent des liaisons ACP persistantes pour les canaux et les fils (utilisez l’identifiant de canal/fil dansmatch.peer.id). La sémantique des champs est partagée dans Agents ACP. channels.discord.ui.components.accentColordéfinit la couleur d’accentuation des conteneurs Discord components v2.channels.discord.voiceactive les conversations dans les canaux vocaux Discord, avec auto-join facultatif et remplacements LLM + TTS. Les configurations Discord texte uniquement laissent la voix désactivée par défaut ; définissezchannels.discord.voice.enabled=truepour l’activer.channels.discord.voice.modelremplace facultativement le modèle LLM utilisé pour les réponses dans les canaux vocaux Discord.channels.discord.voice.daveEncryptionetchannels.discord.voice.decryptionFailureTolerancesont transmis aux options DAVE de@discordjs/voice(trueet24par défaut).channels.discord.voice.connectTimeoutMscontrôle l’attente Ready initiale de@discordjs/voicepour/vc joinet les tentatives d’auto-join (30000par défaut).channels.discord.voice.reconnectGraceMscontrôle le délai pendant lequel une session vocale déconnectée peut entrer en signalisation de reconnexion avant qu’OpenClaw ne la détruise (15000par défaut).- La lecture vocale Discord n’est pas interrompue par l’événement de début de parole d’un autre utilisateur. Pour éviter les boucles de rétroaction, OpenClaw ignore les nouvelles captures vocales pendant la lecture TTS.
- OpenClaw tente également une récupération de réception vocale en quittant/rejoignant une session vocale après des échecs de déchiffrement répétés.
channels.discord.streamingest la clé canonique du mode flux. Discord utilise par défautstreaming.mode: "progress"afin que la progression des outils/du travail apparaisse dans un seul message d’aperçu modifié ; définissezstreaming.mode: "off"pour le désactiver. Les anciens champsstreamModeet les valeurs booléennesstreamingrestent des alias d’exécution ; exécutezopenclaw doctor --fixpour réécrire la configuration persistée.channels.discord.autoPresenceassocie la disponibilité d’exécution à la présence du bot (healthy => online, degraded => idle, exhausted => dnd) et autorise des remplacements facultatifs du texte de statut.channels.discord.dangerouslyAllowNameMatchingréactive la correspondance mutable par nom/tag (mode de compatibilité d’urgence).channels.discord.execApprovals: livraison d’approbations d’exécution native Discord et autorisation des approbateurs.enabled:true,falseou"auto"(par défaut). En mode auto, les approbations d’exécution s’activent lorsque les approbateurs peuvent être résolus depuisapproversoucommands.ownerAllowFrom.approvers: identifiants d’utilisateurs Discord autorisés à approuver les demandes d’exécution. Se replie surcommands.ownerAllowFromlorsqu’il est omis.agentFilter: liste d’autorisation facultative d’identifiants d’agents. Omettez-la pour transférer les approbations de tous les agents.sessionFilter: motifs facultatifs de clés de session (sous-chaîne ou expression régulière).target: où envoyer les invites d’approbation."dm"(par défaut) envoie aux DM des approbateurs,"channel"envoie au canal d’origine,"both"envoie aux deux. Lorsque la cible inclut"channel", les boutons ne sont utilisables que par les approbateurs résolus.cleanupAfterResolve: lorsquetrue, supprime les DM d’approbation après approbation, refus ou expiration du délai.
off (aucune), own (messages du bot, par défaut), all (tous les messages), allowlist (depuis guilds.<id>.users sur tous les messages).
Google Chat
- JSON de compte de service : en ligne (
serviceAccount) ou basé sur un fichier (serviceAccountFile). - Le SecretRef de compte de service est également pris en charge (
serviceAccountRef). - Solutions de repli d’environnement :
GOOGLE_CHAT_SERVICE_ACCOUNTouGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Utilisez
spaces/<spaceId>ouusers/<userId>pour les cibles de livraison. channels.googlechat.dangerouslyAllowNameMatchingréactive la correspondance mutable des principaux d’e-mail (mode de compatibilité d’urgence).
Slack
- Le mode Socket nécessite à la fois
botTokenetappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENpour la solution de repli d’environnement du compte par défaut). - Le mode HTTP nécessite
botTokenplussigningSecret(à la racine ou par compte). socketModetransmet le réglage du transport Socket Mode du SDK Slack à l’API publique du récepteur Bolt. Utilisez-le uniquement lors de l’analyse des délais ping/pong ou d’un comportement websocket obsolète.botToken,appToken,signingSecretetuserTokenacceptent des chaînes en texte clair ou des objets SecretRef.- Les instantanés de compte Slack exposent des champs source/statut par identifiant, comme
botTokenSource,botTokenStatus,appTokenStatuset, en mode HTTP,signingSecretStatus.configured_unavailablesignifie que le compte est configuré via SecretRef, mais que le chemin de commande/d’exécution actuel n’a pas pu résoudre la valeur du secret. configWrites: falsebloque les écritures de configuration initiées par Slack.channels.slack.defaultAccountfacultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.channels.slack.streaming.modeest la clé canonique du mode flux Slack.channels.slack.streaming.nativeTransportcontrôle le transport de streaming natif de Slack. Les anciens champsstreamMode, les valeurs booléennesstreamingetnativeStreamingrestent des alias d’exécution ; exécutezopenclaw doctor --fixpour réécrire la configuration persistée.unfurlLinksetunfurlMediatransmettent les booléens de dépliage de liens et de médias dechat.postMessagede Slack pour les réponses de bot. Omettez-les pour conserver le comportement par défaut de Slack ; définissez-les danschannels.slack.accounts.<accountId>pour remplacer la valeur par défaut de premier niveau pour un compte.- Utilisez
user:<id>(DM) ouchannel:<id>pour les cibles de livraison.
off, own (par défaut), all, allowlist (depuis reactionAllowlist).
Isolation des sessions de fil : thread.historyScope est propre à chaque fil (par défaut) ou partagé dans le canal. thread.inheritParent copie la transcription du canal parent vers les nouveaux fils.
- Le streaming natif Slack avec le statut de fil « is typing… » de type assistant Slack nécessite une cible de fil de réponse. Les DM de premier niveau restent hors fil par défaut, afin qu’ils puissent toujours diffuser via des aperçus de brouillon Slack publiés puis modifiés au lieu d’afficher l’aperçu de flux/statut natif de style fil.
typingReactionajoute une réaction temporaire au message Slack entrant pendant l’exécution d’une réponse, puis la supprime à la fin. Utilisez un shortcode d’emoji Slack tel que"hourglass_flowing_sand".channels.slack.execApprovals: livraison d’approbations d’exécution native Slack et autorisation des approbateurs. Même schéma que Discord :enabled(true/false/"auto"),approvers(identifiants d’utilisateurs Slack),agentFilter,sessionFilterettarget("dm","channel"ou"both").
| Groupe d’actions | Par défaut | Notes |
|---|---|---|
| reactions | activé | Réagir + lister les réactions |
| messages | activé | Lire/envoyer/modifier/supprimer |
| pins | activé | Épingler/désépingler/lister |
| memberInfo | activé | Infos du membre |
| emojiList | activé | Liste d’emojis personnalisés |
Mattermost
Mattermost est fourni comme Plugin groupé dans les versions actuelles d’OpenClaw. Les versions plus anciennes ou personnalisées peuvent installer un package npm actuel avecopenclaw plugins install @openclaw/mattermost. Consultez
npmjs.com/package/@openclaw/mattermost
pour connaître les dist-tags actuels avant d’épingler une version.
oncall (répond lors d’une @-mention, par défaut), onmessage (chaque message), onchar (messages commençant par un préfixe déclencheur).
Lorsque les commandes natives Mattermost sont activées :
commands.callbackPathdoit être un chemin (par exemple/api/channels/mattermost/command), et non une URL complète.commands.callbackUrldoit résoudre vers le point de terminaison du Gateway OpenClaw et être accessible depuis le serveur Mattermost.- Les rappels slash natifs sont authentifiés avec les jetons propres à chaque commande renvoyés
par Mattermost lors de l’enregistrement des commandes slash. Si l’enregistrement échoue ou si aucune
commande n’est activée, OpenClaw rejette les rappels avec
Unauthorized: invalid command token. - Pour les hôtes de rappel privés/tailnet/internes, Mattermost peut exiger que
ServiceSettings.AllowedUntrustedInternalConnectionsinclue l’hôte ou le domaine de rappel. Utilisez des valeurs d’hôte ou de domaine, et non des URL complètes. channels.mattermost.configWrites: autoriser ou refuser les écritures de configuration initiées par Mattermost.channels.mattermost.requireMention: exiger@mentionavant de répondre dans les canaux.channels.mattermost.groups.<channelId>.requireMention: remplacement du filtrage par mention propre au canal ("*"par défaut).channels.mattermost.defaultAccountfacultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
Signal
off, own (par défaut), all, allowlist (depuis reactionAllowlist).
channels.signal.account: associer le démarrage du canal à une identité de compte Signal spécifique.channels.signal.configWrites: autoriser ou refuser les écritures de configuration initiées par Signal.channels.signal.defaultAccountfacultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
iMessage
OpenClaw lanceimsg rpc (JSON-RPC sur stdio). Aucun démon ni port requis. C’est le chemin privilégié pour les nouvelles configurations iMessage OpenClaw lorsque l’hôte peut accorder les autorisations de base de données Messages et d’automatisation.
La prise en charge de BlueBubbles a été supprimée. channels.bluebubbles n’est pas une surface de configuration d’exécution prise en charge dans la version actuelle d’OpenClaw. Migrez les anciennes configurations vers channels.imessage ; utilisez Suppression de BlueBubbles et chemin iMessage imsg pour la version courte et Migrer depuis BlueBubbles pour la table de correspondance complète.
Si le Gateway ne s’exécute pas sur le Mac Messages connecté, conservez channels.imessage.enabled=true et définissez channels.imessage.cliPath sur un wrapper SSH qui exécute imsg "$@" sur ce Mac. Le chemin local imsg par défaut est propre à macOS.
-
channels.imessage.defaultAccountfacultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré. - Nécessite l’accès complet au disque pour la base de données Messages.
-
Préférez les cibles
chat_id:<id>. Utilisezimsg chats --limit 20pour lister les discussions. -
cliPathpeut pointer vers un wrapper SSH ; définissezremoteHost(hostouuser@host) pour la récupération des pièces jointes par SCP. -
attachmentRootsetremoteAttachmentRootslimitent les chemins des pièces jointes entrantes (par défaut :/Users/*/Library/Messages/Attachments). -
SCP utilise une vérification stricte des clés d’hôte ; assurez-vous donc que la clé de l’hôte relais existe déjà dans
~/.ssh/known_hosts. -
channels.imessage.configWrites: autoriser ou refuser les écritures de configuration initiées par iMessage. -
channels.imessage.actions.*: activer les actions d’API privées qui sont également contrôlées parimsg status/openclaw channels status --probe. -
channels.imessage.includeAttachmentsest désactivé par défaut ; définissez-le surtrueavant d’attendre des médias entrants dans les tours de l’agent. -
channels.imessage.catchup.enabled: activer la relecture des messages entrants arrivés pendant que le Gateway était arrêté. -
channels.imessage.groups: registre de groupes et paramètres par groupe. AvecgroupPolicy: "allowlist", configurez soit des cléschat_idexplicites, soit une entrée générique"*"afin que les messages de groupe puissent franchir le contrôle du registre. -
Les entrées
bindings[]de premier niveau avectype: "acp"peuvent lier des conversations iMessage à des sessions ACP persistantes. Utilisez un identifiant normalisé ou une cible de discussion explicite (chat_id:*,chat_guid:*,chat_identifier:*) dansmatch.peer.id. Sémantique des champs partagés : Agents ACP.
Exemple de wrapper SSH iMessage
Exemple de wrapper SSH iMessage
Matrix
Matrix est adossé à un Plugin et configuré souschannels.matrix.
- L’authentification par jeton utilise
accessToken; l’authentification par mot de passe utiliseuserId+password. channels.matrix.proxyachemine le trafic HTTP Matrix via un proxy HTTP(S) explicite. Les comptes nommés peuvent le remplacer avecchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkautorise les homeservers privés/internes.proxyet cette activation réseau sont des contrôles indépendants.channels.matrix.defaultAccountsélectionne le compte préféré dans les configurations multicomptes.channels.matrix.autoJoinvautoffpar défaut ; les salons sur invitation et les nouvelles invitations de type DM sont donc ignorés jusqu’à ce que vous définissiezautoJoin: "allowlist"avecautoJoinAllowlistouautoJoin: "always".channels.matrix.execApprovals: livraison d’approbations d’exécution natives Matrix et autorisation des approbateurs.enabled:true,falseou"auto"(par défaut). En mode auto, les approbations d’exécution s’activent lorsque les approbateurs peuvent être résolus depuisapproversoucommands.ownerAllowFrom.approvers: identifiants utilisateur Matrix (par exemple@owner:example.org) autorisés à approuver les demandes d’exécution.agentFilter: liste d’autorisation facultative d’identifiants d’agent. Omettez-la pour transférer les approbations pour tous les agents.sessionFilter: motifs facultatifs de clés de session (sous-chaîne ou expression régulière).target: destination des invites d’approbation."dm"(par défaut),"channel"(salon d’origine) ou"both".- Remplacements par compte :
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrôle la manière dont les DM Matrix sont regroupés en sessions :per-user(par défaut) partage par pair routé, tandis queper-roomisole chaque salon DM.- Les sondes d’état Matrix et les recherches d’annuaire en direct utilisent la même politique de proxy que le trafic d’exécution.
- La configuration complète de Matrix, les règles de ciblage et les exemples de configuration sont documentés dans Matrix.
Microsoft Teams
Microsoft Teams est adossé à un Plugin et configuré souschannels.msteams.
- Chemins de clés principaux couverts ici :
channels.msteams,channels.msteams.configWrites. - La configuration complète de Teams (identifiants, webhook, politique DM/groupe, remplacements par équipe/par canal) est documentée dans Microsoft Teams.
IRC
IRC est adossé à un Plugin et configuré souschannels.irc.
- Chemins de clés principaux couverts ici :
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountfacultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.- La configuration complète du canal IRC (hôte/port/TLS/canaux/listes d’autorisation/filtrage par mention) est documentée dans IRC.
Multicomptes (tous les canaux)
Exécutez plusieurs comptes par canal (chacun avec son propreaccountId) :
defaultest utilisé lorsqueaccountIdest omis (CLI + routage).- Les jetons d’environnement s’appliquent uniquement au compte par défaut.
- Les paramètres de canal de base s’appliquent à tous les comptes, sauf remplacement par compte.
- Utilisez
bindings[].match.accountIdpour router chaque compte vers un agent différent. - Si vous ajoutez un compte autre que celui par défaut via
openclaw channels add(ou l’onboarding du canal) alors que vous êtes encore sur une configuration de canal de premier niveau à compte unique, OpenClaw promeut d’abord les valeurs de compte unique de premier niveau propres au compte dans la carte de comptes du canal afin que le compte d’origine continue de fonctionner. La plupart des canaux les déplacent danschannels.<channel>.accounts.default; Matrix peut préserver à la place une cible nommée/par défaut correspondante existante. - Les liaisons existantes limitées au canal (sans
accountId) continuent de correspondre au compte par défaut ; les liaisons propres à un compte restent facultatives. openclaw doctor --fixrépare également les formes mixtes en déplaçant les valeurs de compte unique de premier niveau propres au compte vers le compte promu choisi pour ce canal. La plupart des canaux utilisentaccounts.default; Matrix peut préserver à la place une cible nommée/par défaut correspondante existante.
Autres canaux Plugin
De nombreux canaux Plugin sont configurés commechannels.<id> et documentés dans leurs pages de canal dédiées (par exemple Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat et Twitch).
Consultez l’index complet des canaux : Canaux.
Filtrage par mention dans les discussions de groupe
Les messages de groupe exigent par défaut une mention obligatoire (mention de métadonnées ou motifs regex sûrs). S’applique aux discussions de groupe WhatsApp, Telegram, Discord, Google Chat et iMessage. Les réponses visibles sont contrôlées séparément. Les salons de groupe/canal utilisent par défautmessages.groupChat.visibleReplies: "message_tool" : OpenClaw traite toujours le tour, mais les réponses finales normales restent privées et la sortie visible dans le salon nécessite message(action=send). Définissez "automatic" uniquement lorsque vous souhaitez le comportement hérité où les réponses normales sont publiées dans le salon. Pour appliquer le même comportement de réponse visible uniquement par outil aux conversations directes aussi, définissez messages.visibleReplies: "message_tool" ; le harnais Codex utilise également ce comportement uniquement par outil comme valeur par défaut non définie pour les conversations directes.
Les réponses visibles uniquement par outil nécessitent un modèle/runtime qui appelle les outils de façon fiable. Si
le journal de session affiche du texte d’assistant avec didSendViaMessagingTool: false, le
modèle a produit une réponse finale privée au lieu d’appeler l’outil de messagerie.
Passez à un modèle plus robuste pour l’appel d’outils sur ce canal, ou définissez
messages.groupChat.visibleReplies: "automatic" pour rétablir les réponses finales visibles
héritées.
Si l’outil de messagerie n’est pas disponible avec la stratégie d’outils active, OpenClaw revient aux réponses visibles automatiques au lieu de supprimer silencieusement la réponse. openclaw doctor signale cet écart.
Le Gateway recharge à chaud la configuration messages après l’enregistrement du fichier. Redémarrez uniquement lorsque la surveillance des fichiers ou le rechargement de la configuration est désactivé dans le déploiement.
Types de mentions :
- Mentions de métadonnées : @-mentions natives de la plateforme. Ignorées en mode auto-conversation WhatsApp.
- Motifs textuels : motifs regex sûrs dans
agents.list[].groupChat.mentionPatterns. Les motifs invalides et les répétitions imbriquées non sûres sont ignorés. - Le filtrage par mention n’est appliqué que lorsque la détection est possible (mentions natives ou au moins un motif).
messages.groupChat.historyLimit définit la valeur globale par défaut. Les canaux peuvent la remplacer avec channels.<channel>.historyLimit (ou par compte). Définissez 0 pour désactiver.
messages.visibleReplies est la valeur globale par défaut pour les tours source ; messages.groupChat.visibleReplies la remplace pour les tours source de groupe/canal. Lorsque messages.visibleReplies n’est pas défini, un harnais peut fournir sa propre valeur par défaut directe/source ; le harnais Codex utilise par défaut message_tool. Les listes d’autorisation de canal et le filtrage par mention déterminent toujours si un tour est traité.
Limites d’historique des MP
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Mode auto-conversation
Incluez votre propre numéro dansallowFrom pour activer le mode auto-conversation (ignore les @-mentions natives, répond uniquement aux motifs textuels) :
Commandes (gestion des commandes de chat)
Détails des commandes
Détails des commandes
- Ce bloc configure les surfaces de commande. Pour le catalogue de commandes intégré + fourni actuel, consultez Commandes slash.
- Cette page est une référence des clés de configuration, pas le catalogue complet des commandes. Les commandes propres aux canaux/Plugins comme QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, l’association d’appareil/pair, la mémoire/dreaming, le contrôle de téléphone/phoneet Talk/voicesont documentées dans leurs pages de canal/Plugin ainsi que dans Commandes slash. - Les commandes textuelles doivent être des messages autonomes commençant par
/. native: "auto"active les commandes natives pour Discord/Telegram, laisse Slack désactivé.nativeSkills: "auto"active les commandes Skills natives pour Discord/Telegram, laisse Slack désactivé.- Remplacement par canal :
channels.discord.commands.native(booléen ou"auto"). Pour Discord,falseignore l’enregistrement et le nettoyage des commandes natives au démarrage. - Remplacez l’enregistrement des Skills natives par canal avec
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsajoute des entrées supplémentaires au menu du bot Telegram.bash: trueactive! <cmd>pour le shell hôte. Nécessitetools.elevated.enabledet un expéditeur danstools.elevated.allowFrom.<channel>.config: trueactive/config(lit/écritopenclaw.json). Pour les clients Gatewaychat.send, les écritures persistantes/config set|unsetnécessitent aussioperator.admin;/config showen lecture seule reste disponible pour les clients opérateurs normaux avec portée d’écriture.mcp: trueactive/mcppour la configuration de serveur MCP gérée par OpenClaw sousmcp.servers.plugins: trueactive/pluginspour la découverte, l’installation et les contrôles d’activation/désactivation des Plugins.channels.<provider>.configWritescontrôle les mutations de configuration par canal (par défaut : true).- Pour les canaux multi-comptes,
channels.<provider>.accounts.<id>.configWritescontrôle aussi les écritures ciblant ce compte (par exemple/allowlist --config --account <id>ou/config set channels.<provider>.accounts.<id>...). restart: falsedésactive/restartet les actions de l’outil de redémarrage du Gateway. Par défaut :true.ownerAllowFromest la liste d’autorisation explicite du propriétaire pour les commandes/outils réservés au propriétaire. Elle est séparée deallowFrom.ownerDisplay: "hash"hache les identifiants de propriétaire dans le prompt système. DéfinissezownerDisplaySecretpour contrôler le hachage.allowFromest défini par fournisseur. Lorsqu’il est défini, c’est la seule source d’autorisation (les listes d’autorisation/associations de canal etuseAccessGroupssont ignorées).useAccessGroups: falseautorise les commandes à contourner les stratégies de groupe d’accès lorsqueallowFromn’est pas défini.- Carte de la documentation des commandes :
- catalogue intégré + fourni : Commandes slash
- surfaces de commande propres aux canaux : Canaux
- commandes QQ Bot : QQ Bot
- commandes d’association : Association
- commande de carte LINE : LINE
- Dreaming de mémoire : Dreaming
Associé
- Référence de configuration — clés de premier niveau
- Configuration — agents
- Vue d’ensemble des canaux