Slash Commands

Commands werden vom Gateway verarbeitet. Die meisten Commands müssen als eigenständige Nachricht gesendet werden, die mit / beginnt. Der Host-only Bash-Chat-Command verwendet ! <cmd> (mit /bash <cmd> als Alias).

Es gibt zwei verwandte Systeme:

  • Commands: eigenständige /... Nachrichten.
  • Directives: /think, /verbose, /reasoning, /elevated, /exec, /model, /queue.
    • Directives werden aus der Nachricht entfernt, bevor das Modell sie sieht.
    • In normalen Chat-Nachrichten (nicht nur Directives) werden sie als “Inline-Hinweise” behandelt und speichern keine Session-Einstellungen dauerhaft.
    • In reinen Directive-Nachrichten (die Nachricht enthält nur Directives) werden sie in der Session gespeichert und mit einer Bestätigung beantwortet.
    • Directives werden nur für autorisierte Absender angewendet (Channel-Allowlists/Pairing plus commands.useAccessGroups). Nicht autorisierte Absender sehen Directives als normalen Text.

Es gibt auch ein paar Inline-Shortcuts (nur für Absender auf der Allowlist): /help, /commands, /status, /whoami (/id). Sie werden sofort ausgeführt, vor dem Modell entfernt, und der restliche Text wird normal weiterverarbeitet.

Config

{
  commands: {
    native: "auto",
    nativeSkills: "auto",
    text: true,
    bash: false,
    bashForegroundMs: 2000,
    config: false,
    debug: false,
    restart: false,
    useAccessGroups: true,
  },
}
  • commands.text (Standard true) aktiviert das Parsen von /... in Chat-Nachrichten.
    • Auf Plattformen ohne native Commands (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams) funktionieren Text-Commands auch, wenn du das auf false setzt.
  • commands.native (Standard "auto") registriert native Commands.
    • Auto: an für Discord/Telegram; aus für Slack (bis du Slash Commands hinzufügst); ignoriert für Provider ohne native Unterstützung.
    • Setze channels.discord.commands.native, channels.telegram.commands.native oder channels.slack.commands.native, um pro Provider zu überschreiben (bool oder "auto").
    • false löscht zuvor registrierte Commands auf Discord/Telegram beim Start. Slack-Commands werden in der Slack-App verwaltet und nicht automatisch entfernt.
  • commands.nativeSkills (Standard "auto") registriert Skill-Commands nativ, wenn unterstützt.
    • Auto: an für Discord/Telegram; aus für Slack (Slack erfordert einen Slash Command pro Skill).
    • Setze channels.discord.commands.nativeSkills, channels.telegram.commands.nativeSkills oder channels.slack.commands.nativeSkills, um pro Provider zu überschreiben (bool oder "auto").
  • commands.bash (Standard false) aktiviert ! <cmd> zum Ausführen von Host-Shell-Befehlen (/bash <cmd> ist ein Alias; erfordert tools.elevated Allowlists).
  • commands.bashForegroundMs (Standard 2000) steuert, wie lange Bash wartet, bevor es in den Hintergrundmodus wechselt (0 = sofort im Hintergrund).
  • commands.config (Standard false) aktiviert /config (liest/schreibt openclaw.json).
  • commands.debug (Standard false) aktiviert /debug (nur Runtime-Overrides).
  • commands.useAccessGroups (Standard true) erzwingt Allowlists/Policies für Commands.

Command-Liste

Text + nativ (wenn aktiviert):

  • /help
  • /commands
  • /skill <name> [input] (führt einen Skill nach Namen aus)
  • /status (zeigt aktuellen Status; enthält Provider-Nutzung/Quota für den aktuellen Model-Provider, wenn verfügbar)
  • /allowlist (Allowlist-Einträge auflisten/hinzufügen/entfernen)
  • /approve <id> allow-once|allow-always|deny (löst Exec-Approval-Prompts auf)
  • /context [list|detail|json] (erklärt “Context”; detail zeigt pro Datei + pro Tool + pro Skill + System-Prompt-Größe)
  • /whoami (zeigt deine Sender-ID; Alias: /id)
  • /subagents list|stop|log|info|send (inspiziert, stoppt, loggt oder sendet Nachrichten an Sub-Agent-Runs für die aktuelle Session)
  • /config show|get|set|unset (speichert Config auf Disk, nur Owner; erfordert commands.config: true)
  • /debug show|set|unset|reset (Runtime-Overrides, nur Owner; erfordert commands.debug: true)
  • /usage off|tokens|full|cost (Nutzungs-Footer pro Antwort oder lokale Kostenzusammenfassung)
  • /tts off|always|inbound|tagged|status|provider|limit|summary|audio (steuert TTS; siehe /tts)
    • Discord: nativer Command ist /voice (Discord reserviert /tts); Text /tts funktioniert weiterhin.
  • /stop
  • /restart
  • /dock-telegram (Alias: /dock_telegram) (schaltet Antworten auf Telegram um)
  • /dock-discord (Alias: /dock_discord) (schaltet Antworten auf Discord um)
  • /dock-slack (Alias: /dock_slack) (schaltet Antworten auf Slack um)
  • /activation mention|always (nur Gruppen)
  • /send on|off|inherit (nur Owner)
  • /reset oder /new [model] (optionaler Model-Hinweis; Rest wird durchgereicht)
  • /think <off|minimal|low|medium|high|xhigh> (dynamische Auswahl nach Model/Provider; Aliase: /thinking, /t)
  • /verbose on|full|off (Alias: /v)
  • /reasoning on|off|stream (Alias: /reason; wenn an, sendet eine separate Nachricht mit Präfix Reasoning:; stream = nur Telegram-Draft)
  • /elevated on|off|ask|full (Alias: /elev; full überspringt Exec-Approvals)
  • /exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id> (sende /exec, um aktuelle Einstellungen zu sehen)
  • /model <name> (Alias: /models; oder /<alias> aus agents.defaults.models.*.alias)
  • /queue <mode> (plus Optionen wie debounce:2s cap:25 drop:summarize; sende /queue, um aktuelle Einstellungen zu sehen)
  • /bash <command> (nur Host; Alias für ! <command>; erfordert commands.bash: true + tools.elevated Allowlists)

Nur Text:

  • /compact [instructions] (siehe /concepts/compaction)
  • ! <command> (nur Host; einer zur Zeit; nutze !poll + !stop für lang laufende Jobs)
  • !poll (prüft Output/Status; akzeptiert optionale sessionId; /bash poll funktioniert auch)
  • !stop (stoppt den laufenden Bash-Job; akzeptiert optionale sessionId; /bash stop funktioniert auch)

Hinweise:

  • Commands akzeptieren ein optionales : zwischen Command und Args (z. B. /think: high, /send: on, /help:).
  • /new <model> akzeptiert einen Model-Alias, provider/model oder einen Provider-Namen (Fuzzy-Match); wenn kein Match, wird der Text als Nachrichteninhalt behandelt.
  • Für eine vollständige Provider-Nutzungsaufschlüsselung nutze openclaw status --usage.
  • /allowlist add|remove erfordert commands.config=true und respektiert Channel-configWrites.
  • /usage steuert den Nutzungs-Footer pro Antwort; /usage cost gibt eine lokale Kostenzusammenfassung aus OpenClaw-Session-Logs aus.
  • /restart ist standardmäßig deaktiviert; setze commands.restart: true, um es zu aktivieren.
  • /verbose ist für Debugging und zusätzliche Sichtbarkeit gedacht; lass es im normalen Betrieb aus.
  • /reasoning (und /verbose) sind riskant in Gruppeneinstellungen: sie können internes Reasoning oder Tool-Output offenlegen, das du nicht teilen wolltest. Lass sie besser aus, besonders in Gruppenchats.
  • Fast Path: reine Command-Nachrichten von Absendern auf der Allowlist werden sofort verarbeitet (umgehen Queue + Model).
  • Gruppen-Mention-Gating: reine Command-Nachrichten von Absendern auf der Allowlist umgehen Mention-Anforderungen.
  • Inline-Shortcuts (nur Absender auf Allowlist): bestimmte Commands funktionieren auch eingebettet in einer normalen Nachricht und werden entfernt, bevor das Modell den restlichen Text sieht.
    • Beispiel: hey /status löst eine Status-Antwort aus, und der restliche Text wird normal weiterverarbeitet.
  • Aktuell: /help, /commands, /status, /whoami (/id).
  • Nicht autorisierte reine Command-Nachrichten werden stillschweigend ignoriert, und Inline-/...-Tokens werden als normaler Text behandelt.
  • Skill-Commands: user-invocable Skills werden als Slash Commands bereitgestellt. Namen werden auf a-z0-9_ bereinigt (max. 32 Zeichen); Kollisionen erhalten numerische Suffixe (z. B. _2).
    • /skill <name> [input] führt einen Skill nach Namen aus (nützlich, wenn native Command-Limits pro-Skill-Commands verhindern).
    • Standardmäßig werden Skill-Commands als normale Anfrage an das Modell weitergeleitet.
    • Skills können optional command-dispatch: tool deklarieren, um den Command direkt an ein Tool zu routen (deterministisch, kein Modell).
    • Beispiel: /prose (OpenProse-Plugin) — siehe OpenProse.
  • Native Command-Argumente: Discord nutzt Autocomplete für dynamische Optionen (und Button-Menüs, wenn du erforderliche Args weglässt). Telegram und Slack zeigen ein Button-Menü, wenn ein Command Auswahlmöglichkeiten unterstützt und du das Arg weglässt.

Nutzungsoberflächen (was wird wo angezeigt)

  • Provider-Nutzung/Quota (Beispiel: “Claude 80% übrig”) wird in /status für den aktuellen Model-Provider angezeigt, wenn Nutzungstracking aktiviert ist.
  • Tokens/Kosten pro Antwort wird durch /usage off|tokens|full gesteuert (an normale Antworten angehängt).
  • /model status zeigt Models/Auth/Endpoints, nicht Nutzung.

Model-Auswahl (/model)

/model ist als Directive implementiert.

Beispiele:

/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status

Hinweise:

  • /model und /model list zeigen einen kompakten, nummerierten Picker (Model-Familie + verfügbare Provider).
  • /model <#> wählt aus diesem Picker aus (und bevorzugt den aktuellen Provider, wenn möglich).
  • /model status zeigt die detaillierte Ansicht, einschließlich konfiguriertem Provider-Endpoint (baseUrl) und API-Modus (api), wenn verfügbar.

Debug-Overrides

/debug ermöglicht nur Runtime-Config-Overrides (Speicher, nicht Disk). Nur Owner. Standardmäßig deaktiviert; aktiviere mit commands.debug: true.

Beispiele:

/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset

Hinweise:

  • Overrides werden sofort auf neue Config-Reads angewendet, schreiben aber nicht in openclaw.json.
  • Nutze /debug reset, um alle Overrides zu löschen und zur On-Disk-Config zurückzukehren.

Config-Updates

/config schreibt in deine On-Disk-Config (openclaw.json). Nur Owner. Standardmäßig deaktiviert; aktiviere mit commands.config: true.

Beispiele:

/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix

Hinweise:

  • Config wird vor dem Schreiben validiert; ungültige Änderungen werden abgelehnt.
  • /config-Updates bleiben über Neustarts hinweg bestehen.

Plattform-Hinweise

  • Text-Commands laufen in der normalen Chat-Session (DMs teilen sich main, Gruppen haben ihre eigene Session).
  • Native Commands nutzen isolierte Sessions:
    • Discord: agent:<agentId>:discord:slash:<userId>
    • Slack: agent:<agentId>:slack:slash:<userId> (Präfix konfigurierbar über channels.slack.slashCommand.sessionPrefix)
    • Telegram: telegram:slash:<userId> (zielt auf die Chat-Session über CommandTargetSessionKey)
  • /stop zielt auf die aktive Chat-Session, damit es den aktuellen Run abbrechen kann.
  • Slack: channels.slack.slashCommand wird weiterhin für einen einzelnen /openclaw-Style-Command unterstützt. Wenn du commands.native aktivierst, musst du einen Slack-Slash-Command pro eingebautem Command erstellen (gleiche Namen wie /help). Command-Argument-Menüs für Slack werden als ephemere Block-Kit-Buttons bereitgestellt.