Commandes Slash
Les commandes sont gérées par la Gateway. La plupart des commandes doivent être envoyées sous forme de message autonome commençant par /. La commande bash réservée à l'hôte utilise ! <cmd> (avec /bash <cmd> comme alias). Il existe deux systèmes liés :
- Commandes : messages autonomes
/.... - Directives :
/think,/verbose,/reasoning,/elevated,/exec,/model,/queue.- Les directives sont supprimées du message avant que le modèle ne le voie.
- Dans les messages de chat normaux (pas uniquement des directives), elles sont traitées comme des "indications en ligne" et ne persistent pas les paramètres de session.
- Dans les messages uniquement composés de directives (le message ne contient que des directives), elles persistent pour la session et répondent avec un accusé de réception.
- Les directives ne sont appliquées que pour les expéditeurs autorisés. Si
commands.allowFromest défini, c'est la seule liste d'autorisation utilisée ; sinon l'autorisation provient des listes d'autorisation/jumelage de canal pluscommands.useAccessGroups. Les expéditeurs non autorisés voient les directives traitées comme du texte brut.
Il existe aussi quelques raccourcis en ligne (expéditeurs autorisés uniquement) : /help, /commands, /status, /whoami (/id). Ils s'exécutent immédiatement, sont supprimés avant que le modèle ne voie le message, et le texte restant poursuit le flux normal.
Configuration
{
commands: {
native: "auto",
nativeSkills: "auto",
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
debug: false,
restart: false,
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
},
useAccessGroups: true,
},
}
commands.text(par défauttrue) active l'analyse de/...dans les messages de chat.- Sur les surfaces sans commandes natives (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), les commandes texte fonctionnent toujours même si vous définissez ceci à
false.
- Sur les surfaces sans commandes natives (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), les commandes texte fonctionnent toujours même si vous définissez ceci à
commands.native(par défaut"auto") enregistre les commandes natives.- Auto : activé pour Discord/Telegram ; désactivé pour Slack (jusqu'à ce que vous ajoutiez des commandes slash) ; ignoré pour les fournisseurs sans support natif.
- Définissez
channels.discord.commands.native,channels.telegram.commands.native, ouchannels.slack.commands.nativepour remplacer par fournisseur (booléen ou"auto"). falseefface les commandes précédemment enregistrées sur Discord/Telegram au démarrage. Les commandes Slack sont gérées dans l'application Slack et ne sont pas supprimées automatiquement.
commands.nativeSkills(par défaut"auto") enregistre les commandes de compétence de manière native quand c'est supporté.- Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack nécessite de créer une commande slash par compétence).
- Définissez
channels.discord.commands.nativeSkills,channels.telegram.commands.nativeSkills, ouchannels.slack.commands.nativeSkillspour remplacer par fournisseur (booléen ou"auto").
commands.bash(par défautfalse) active! <cmd>pour exécuter des commandes shell hôte (/bash <cmd>est un alias ; nécessite les listes d'autorisationtools.elevated).commands.bashForegroundMs(par défaut2000) contrôle combien de temps bash attend avant de passer en mode arrière-plan (0passe en arrière-plan immédiatement).commands.config(par défautfalse) active/config(lit/écritopenclaw.json).commands.debug(par défautfalse) active/debug(remplacements uniquement à l'exécution).commands.allowFrom(optionnel) définit une liste d'autorisation par fournisseur pour l'autorisation des commandes. Quand configuré, c'est la seule source d'autorisation pour les commandes et directives (les listes d'autorisation/jumelage de canal etcommands.useAccessGroupssont ignorés). Utilisez"*"pour une valeur par défaut globale ; les clés spécifiques au fournisseur la remplacent.commands.useAccessGroups(par défauttrue) applique les listes d'autorisation/politiques pour les commandes quandcommands.allowFromn'est pas défini.
Liste des commandes
Texte + natif (quand activé) :
/help/commands/skill <nom> [entrée](exécuter une compétence par son nom)/status(afficher le statut actuel ; inclut l'utilisation/quota du fournisseur pour le fournisseur de modèle actuel quand disponible)/allowlist(lister/ajouter/supprimer des entrées de liste d'autorisation)/approve <id> allow-once|allow-always|deny(résoudre les invites d'approbation d'exécution)/context [list|detail|json](expliquer le "contexte" ;detailmontre la taille par fichier + par outil + par compétence + prompt système)/export-session [chemin](alias :/export) (exporter la session actuelle en HTML avec le prompt système complet)/whoami(afficher votre identifiant d'expéditeur ; alias :/id)/session idle <durée|off>(gérer l'auto-défocalisation par inactivité pour les liaisons de fil focalisées)/session max-age <durée|off>(gérer l'auto-défocalisation par durée maximale stricte pour les liaisons de fil focalisées)/subagents list|kill|log|info|send|steer|spawn(inspecter, contrôler, ou lancer des exécutions de sous-agents pour la session actuelle)/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions(inspecter et contrôler les sessions d'exécution ACP)/agents(lister les agents liés au fil pour cette session)/focus <cible>(Discord : lier ce fil, ou un nouveau fil, à une cible de session/sous-agent)/unfocus(Discord : supprimer la liaison de fil actuelle)/kill <id|#|all>(interrompre immédiatement un ou tous les sous-agents en cours d'exécution pour cette session ; pas de message de confirmation)/steer <id|#> <message>(diriger immédiatement un sous-agent en cours d'exécution : en cours d'exécution quand possible, sinon interrompre le travail actuel et redémarrer sur le message de direction)/tell <id|#> <message>(alias pour/steer)/config show|get|set|unset(persister la configuration sur disque, propriétaire uniquement ; nécessitecommands.config: true)/debug show|set|unset|reset(remplacements à l'exécution, propriétaire uniquement ; nécessitecommands.debug: true)/usage off|tokens|full|cost(pied de page d'utilisation par réponse ou résumé des coûts locaux)/tts off|always|inbound|tagged|status|provider|limit|summary|audio(contrôler la TTS ; voir /tts)- Discord : la commande native est
/voice(Discord réserve/tts) ; le texte/ttsfonctionne toujours.
- Discord : la commande native est
/stop/restart/dock-telegram(alias :/dock_telegram) (basculer les réponses vers Telegram)/dock-discord(alias :/dock_discord) (basculer les réponses vers Discord)/dock-slack(alias :/dock_slack) (basculer les réponses vers Slack)/activation mention|always(groupes uniquement)/send on|off|inherit(propriétaire uniquement)/resetou/new [modèle](indication de modèle optionnelle ; le reste est transmis)/think <off|minimal|low|medium|high|xhigh>(choix dynamiques par modèle/fournisseur ; alias :/thinking,/t)/verbose on|full|off(alias :/v)/reasoning on|off|stream(alias :/reason; quand activé, envoie un message séparé préfixéReasoning:;stream= brouillon Telegram uniquement)/elevated on|off|ask|full(alias :/elev;fullignore les approbations d'exécution)/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>(envoyer/execpour afficher l'état actuel)/model <nom>(alias :/models; ou/<alias>depuisagents.defaults.models.*.alias)/queue <mode>(plus des options commedebounce:2s cap:25 drop:summarize; envoyer/queuepour voir les paramètres actuels)/bash <commande>(hôte uniquement ; alias pour! <commande>; nécessitecommands.bash: true+ listes d'autorisationtools.elevated)
Texte uniquement :
/compact [instructions](voir /concepts/compaction)! <commande>(hôte uniquement ; une à la fois ; utiliser!poll+!stoppour les tâches longues)!poll(vérifier la sortie / statut ; accepte unsessionIdoptionnel ;/bash pollfonctionne aussi)!stop(arrêter la tâche bash en cours d'exécution ; accepte unsessionIdoptionnel ;/bash stopfonctionne aussi)
Notes :
- Les commandes acceptent un
:optionnel entre la commande et les arguments (ex :/think: high,/send: on,/help:). /new <modèle>accepte un alias de modèle,fournisseur/modèle, ou un nom de fournisseur (correspondance approximative) ; si aucune correspondance, le texte est traité comme corps du message.- Pour une répartition complète de l'utilisation par fournisseur, utilisez
openclaw status --usage. /allowlist add|removenécessitecommands.config=trueet respecteconfigWritesdu canal./usagecontrôle le pied de page d'utilisation par réponse ;/usage costaffiche un résumé des coûts locaux à partir des journaux de session OpenClaw./restartest activé par défaut ; définissezcommands.restart: falsepour le désactiver.- Commande native Discord uniquement :
/vc join|leave|statuscontrôle les canaux vocaux (nécessitechannels.discord.voiceet les commandes natives ; non disponible en texte). - Les commandes de liaison de fil Discord (
/focus,/unfocus,/agents,/session idle,/session max-age) nécessitent que les liaisons de fil effectives soient activées (session.threadBindings.enabledet/ouchannels.discord.threadBindings.enabled). - Référence des commandes ACP et comportement d'exécution : ACP Agents.
/verboseest destiné au débogage et à une visibilité supplémentaire ; gardez-le désactivé en utilisation normale.- Les résumés d'échec d'outil sont toujours affichés quand c'est pertinent, mais le texte détaillé de l'échec n'est inclus que quand
/verboseestonoufull. /reasoning(et/verbose) sont risqués dans les paramètres de groupe : ils peuvent révéler un raisonnement interne ou une sortie d'outil que vous ne souhaitiez pas exposer. Préférez les laisser désactivés, surtout dans les chats de groupe.- Chemin rapide : les messages uniquement composés de commandes provenant d'expéditeurs autorisés sont traités immédiatement (contourne la file d'attente + le modèle).
- Porte de mention de groupe : les messages uniquement composés de commandes provenant d'expéditeurs autorisés contournent les exigences de mention.
- Raccourcis en ligne (expéditeurs autorisés uniquement) : certaines commandes fonctionnent aussi quand elles sont intégrées dans un message normal et sont supprimées avant que le modèle ne voie le texte restant.
- Exemple :
hey /statusdéclenche une réponse de statut, et le texte restant poursuit le flux normal.
- Exemple :
- Actuellement :
/help,/commands,/status,/whoami(/id). - Les messages uniquement composés de commandes non autorisés sont ignorés silencieusement, et les jetons
/...en ligne sont traités comme du texte brut. - Commandes de compétence : les compétences
user-invocablesont exposées comme commandes slash. Les noms sont assainis ena-z0-9_(max 32 caractères) ; les collisions reçoivent des suffixes numériques (ex :_2)./skill <nom> [entrée]exécute une compétence par son nom (utile quand les limites de commandes natives empêchent les commandes par compétence).- Par défaut, les commandes de compétence sont transmises au modèle comme une requête normale.
- Les compétences peuvent optionnellement déclarer
command-dispatch: toolpour acheminer la commande directement vers un outil (déterministe, pas de modèle). - Exemple :
/prose(plugin OpenProse) — voir OpenProse.
- Arguments des commandes natives : Discord utilise l'autocomplétion pour les options dynamiques (et les menus de boutons quand vous omettez les arguments requis). Telegram et Slack affichent un menu de boutons quand une commande supporte des choix et que vous omettez l'argument.
Surfaces d'utilisation (ce qui s'affiche où)
- Utilisation/quota du fournisseur (exemple : "Claude 80% restant") apparaît dans
/statuspour le fournisseur de modèle actuel quand le suivi d'utilisation est activé. - Jetons/coût par réponse est contrôlé par
/usage off|tokens|full(ajouté aux réponses normales). /model statusconcerne les modèles/auth/points de terminaison, pas l'utilisation.
Sélection de modèle (/model)
/model est implémenté comme une directive. Exemples :
/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status
Notes :
/modelet/model listaffichent un sélecteur compact numéroté (famille de modèle + fournisseurs disponibles).- Sur Discord,
/modelet/modelsouvrent un sélecteur interactif avec des menus déroulants de fournisseur et de modèle plus une étape de soumission. /model <#>sélectionne dans ce sélecteur (et préfère le fournisseur actuel quand c'est possible)./model statusaffiche la vue détaillée, incluant le point de terminaison du fournisseur configuré (baseUrl) et le mode API (api) quand disponible.
Remplacements de débogage
/debug permet de définir des remplacements de configuration uniquement à l'exécution (mémoire, pas disque). Propriétaire uniquement. Désactivé par défaut ; activez avec commands.debug: true. Exemples :
/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset
Notes :
- Les remplacements s'appliquent immédiatement aux nouvelles lectures de configuration, mais n'écrivent pas dans
openclaw.json. - Utilisez
/debug resetpour effacer tous les remplacements et revenir à la configuration sur disque.
Mises à jour de configuration
/config écrit dans votre configuration sur disque (openclaw.json). Propriétaire uniquement. Désactivé par défaut ; activez avec commands.config: true. Exemples :
/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix
Notes :
- La configuration est validée avant l'écriture ; les changements invalides sont rejetés.
- Les mises à jour
/configpersistent après les redémarrages.
Notes sur les surfaces
- Commandes texte s'exécutent dans la session de chat normale (les MPs partagent
main, les groupes ont leur propre session). - Commandes natives utilisent des sessions isolées :
- Discord :
agent:<agentId>:discord:slash:<userId> - Slack :
agent:<agentId>:slack:slash:<userId>(préfixe configurable viachannels.slack.slashCommand.sessionPrefix) - Telegram :
telegram:slash:<userId>(cible la session de chat viaCommandTargetSessionKey)
- Discord :
/stopcible la session de chat active pour pouvoir interrompre l'exécution en cours.- Slack :
channels.slack.slashCommandest toujours supporté pour une seule commande de type/openclaw. Si vous activezcommands.native, vous devez créer une commande slash Slack par commande intégrée (mêmes noms que/help). Les menus d'arguments de commande pour Slack sont livrés sous forme de boutons Block Kit éphémères.- Exception native Slack : enregistrez
/agentstatus(pas/status) car Slack réserve/status. Le texte/statusfonctionne toujours dans les messages Slack.
- Exception native Slack : enregistrez