tools/slash-commands.md
Befehle werden vom Gateway verarbeitet. Die meisten Befehle müssen als eigenständige Nachricht gesendet werden, die mit/ beginnt.
Der nur für den Host verfügbare Bash-Chat-Befehl verwendet ! <cmd> (mit /bash <cmd> als Alias).
Es gibt zwei verwandte Systeme:
- Befehle: eigenständige
/...-Nachrichten. - Direktiven:
/think,/verbose,/reasoning,/elevated,/exec,/model,/queue.- Direktiven werden aus der Nachricht entfernt, bevor das Modell sie sieht.
- In normalen Chat-Nachrichten (nicht nur Direktiven) werden sie als „Inline-Hinweise“ behandelt und persistieren keine Sitzungseinstellungen.
- In Nachrichten, die nur aus Direktiven bestehen (die Nachricht enthält ausschließlich Direktiven), persistieren sie in der Sitzung und antworten mit einer Bestätigung.
- Direktiven werden nur für autorisierte Absender angewendet. Direktiven werden nur für autorisierte Absender angewendet (Kanal-Allowlists/Pairing plus
commands.useAccessGroups). Nicht autorisierte Absender sehen Direktiven als normalen Text.
/help, /commands, /status, /whoami (/id).
Sie werden sofort ausgeführt, vor dem Modell aus der Nachricht entfernt, und der verbleibende Text durchläuft den normalen Ablauf.
Konfiguration
commands.text(Standardtrue) aktiviert das Parsen von/...in Chat-Nachrichten.- Auf Oberflächen ohne native Befehle (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams) funktionieren Textbefehle weiterhin, selbst wenn Sie dies auf
falsesetzen.
- Auf Oberflächen ohne native Befehle (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams) funktionieren Textbefehle weiterhin, selbst wenn Sie dies auf
commands.native(Standard"auto") registriert native Befehle.- Auto: an für Discord/Telegram; aus für Slack (bis Sie Slash-Befehle hinzufügen); ignoriert für Anbieter ohne native Unterstützung.
- Setzen Sie
channels.discord.commands.native,channels.telegram.commands.nativeoderchannels.slack.commands.native, um pro Anbieter zu überschreiben (bool oder"auto"). falselöscht zuvor registrierte Befehle auf Discord/Telegram beim Start. Slack-Befehle werden in der Slack-App verwaltet und nicht automatisch entfernt.
commands.nativeSkills(Standard"auto") registriert Skill-Befehle nativ, wenn unterstützt.- Auto: an für Discord/Telegram; aus für Slack (Slack erfordert das Erstellen eines Slash-Befehls pro Skill).
- Setzen Sie
channels.discord.commands.nativeSkills,channels.telegram.commands.nativeSkillsoderchannels.slack.commands.nativeSkills, um pro Anbieter zu überschreiben (bool oder"auto").
commands.bash(Standardfalse) aktiviert! <cmd>zum Ausführen von Host-Shell-Befehlen (/bash <cmd>ist ein Alias; erforderttools.elevated-Allowlists).commands.bashForegroundMs(Standard2000) steuert, wie lange Bash wartet, bevor in den Hintergrundmodus gewechselt wird (0geht sofort in den Hintergrund).commands.config(Standardfalse) aktiviert/config(liest/schreibtopenclaw.json).commands.debug(Standardfalse) aktiviert/debug(nur Laufzeit-Overrides).commands.allowFrom(optional) definiert eine anbieterspezifische Allowlist für die Befehlsautorisierung. Wenn konfiguriert, ist es die einzige Autorisierungsquelle für Befehle und Direktiven (Channel-Allowlists/Pairing undcommands.useAccessGroupswerden ignoriert). Verwenden Sie"*"für einen globalen Standard; anbieterspezifische Schlüssel überschreiben diesen.commands.useAccessGroups(Standardtrue) erzwingt Allowlists/Richtlinien für Befehle.
Befehlsliste
Text + nativ (wenn aktiviert):/help/commands/skill <name> [input](führt einen Skill nach Namen aus)/status(zeigt den aktuellen Status; enthält bei Verfügbarkeit die Anbieter-Nutzung/Quote für den aktuellen Modellanbieter)/allowlist(Allowlist-Einträge auflisten/hinzufügen/entfernen)/approve <id> allow-once|allow-always|deny(Exec-Genehmigungsabfragen auflösen)/context [list|detail|json](erklärt „Kontext“;detailzeigt Größe pro Datei + pro Werkzeug + pro Skill + System-Prompt)/whoami(zeigt Ihre Absender-ID; Alias:/id)/subagents list|stop|log|info|send(Untersuchen, stoppen, protokollieren oder Nachrichten an Sub-Agent-Läufe für die aktuelle Sitzung senden)/kill <id|#|all>(bricht einen oder alle laufenden Sub-Agents für diese Sitzung sofort ab; keine Bestätigungsnachricht)/steer <id|#> <message>(steuert einen laufenden Sub-Agent sofort: wenn möglich während der Ausführung, andernfalls wird die aktuelle Arbeit abgebrochen und mit der Steuerungsnachricht neu gestartet)/tell <id|#> <message>(Alias für/steer)/config show|get|set|unset(Konfiguration auf Datenträger persistieren, nur Eigentümer; erfordertcommands.config: true)/debug show|set|unset|reset(Laufzeit-Overrides, nur Eigentümer; erfordertcommands.debug: true)/usage off|tokens|full|cost(Nutzungs-Fußzeile pro Antwort oder lokale Kostenübersicht)/tts off|always|inbound|tagged|status|provider|limit|summary|audio(TTS steuern; siehe /tts)- Discord: nativer Befehl ist
/voice(Discord reserviert/tts); Text/ttsfunktioniert weiterhin.
- Discord: nativer Befehl ist
/stop/restart/dock-telegram(Alias:/dock_telegram) (Antworten zu Telegram wechseln)/dock-discord(Alias:/dock_discord) (Antworten zu Discord wechseln)/dock-slack(Alias:/dock_slack) (Antworten zu Slack wechseln)/activation mention|always(nur Gruppen)/send on|off|inherit(nur Eigentümer)/resetoder/new [model](optionaler Modellhinweis; der Rest wird durchgereicht)/think <off|minimal|low|medium|high|xhigh>(dynamische Auswahl nach Modell/Anbieter; Aliase:/thinking,/t)/verbose on|full|off(Alias:/v)/reasoning on|off|stream(Alias:/reason; wenn aktiviert, wird eine separate Nachricht mit PräfixReasoning:gesendet;stream= nur Telegram-Entwurf)/elevated on|off|ask|full(Alias:/elev;fullüberspringt Exec-Genehmigungen)/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>(senden Sie/exec, um den aktuellen Stand anzuzeigen)/model <name>(Alias:/models; oder/<alias>vonagents.defaults.models.*.alias)/queue <mode>(plus Optionen wiedebounce:2s cap:25 drop:summarize; senden Sie/queue, um die aktuellen Einstellungen zu sehen)/bash <command>(nur Host; Alias für! <command>; erfordertcommands.bash: true+tools.elevated-Allowlists)
/compact [instructions](siehe /concepts/compaction)! <command>(nur Host; jeweils einer; verwenden Sie!poll+!stopfür langlaufende Jobs)!poll(Ausgabe/Status prüfen; akzeptiert optionalsessionId;/bash pollfunktioniert ebenfalls)!stop(den laufenden Bash-Job stoppen; akzeptiert optionalsessionId;/bash stopfunktioniert ebenfalls)
- Befehle akzeptieren ein optionales
:zwischen Befehl und Argumenten (z. B./think: high,/send: on,/help:). /new <model>akzeptiert einen Modell-Alias,provider/modeloder einen Anbieternamen (unscharfe Übereinstimmung); bei keiner Übereinstimmung wird der Text als Nachrichteninhalt behandelt.- Für eine vollständige Aufschlüsselung der Anbieternutzung verwenden Sie
openclaw status --usage. /allowlist add|removeerfordertcommands.config=trueund beachtet die Kanal-configWrites./usagesteuert die Nutzungs-Fußzeile pro Antwort;/usage costgibt eine lokale Kostenübersicht aus OpenClaw-Sitzungsprotokollen aus./restartist standardmäßig deaktiviert; setzen Siecommands.restart: true, um es zu aktivieren./verboseist für Debugging und zusätzliche Transparenz gedacht; lassen Sie es im normalen Betrieb aus./reasoning(und/verbose) sind in Gruppeneinstellungen riskant: Sie können interne Überlegungen oder Werkzeugausgaben offenlegen, die Sie nicht beabsichtigt haben. Bevorzugen Sie, sie deaktiviert zu lassen, insbesondere in Gruppenchats.- Schneller Pfad: reine Befehlsnachrichten von allowlisteten Absendern werden sofort verarbeitet (Umgehung von Warteschlange + Modell).
- Gruppen-Erwähnungs-Gating: reine Befehlsnachrichten von allowlisteten Absendern umgehen Erwähnungsanforderungen.
- Inline-Shortcuts (nur allowlistete Absender): bestimmte Befehle funktionieren auch, wenn sie in eine normale Nachricht eingebettet sind, und werden entfernt, bevor das Modell den verbleibenden Text sieht.
- Beispiel:
hey /statuslöst eine Statusantwort aus, und der verbleibende Text durchläuft den normalen Ablauf.
- Beispiel:
- Aktuell:
/help,/commands,/status,/whoami(/id). - Nicht autorisierte reine Befehlsnachrichten werden stillschweigend ignoriert, und Inline-
/...-Tokens werden als normaler Text behandelt. - Skill-Befehle:
user-invocableSkills werden als Slash-Befehle verfügbar gemacht. Namen werden zua-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 Befehlslimits Befehle pro Skill verhindern).- Standardmäßig werden Skill-Befehle als normale Anfrage an das Modell weitergeleitet.
- Skills können optional
command-dispatch: tooldeklarieren, um den Befehl direkt an ein Werkzeug zu routen (deterministisch, ohne Modell). - Beispiel:
/prose(OpenProse-Plugin) — siehe OpenProse.
- Argumente nativer Befehle: Discord verwendet Autovervollständigung für dynamische Optionen (und Button-Menüs, wenn Sie erforderliche Argumente weglassen). Telegram und Slack zeigen ein Button-Menü, wenn ein Befehl Auswahlmöglichkeiten unterstützt und Sie das Argument weglassen.
Nutzungsoberflächen (was wo angezeigt wird)
- Anbieter-Nutzung/Quote (Beispiel: „Claude 80 % übrig“) wird in
/statusfür den aktuellen Modellanbieter angezeigt, wenn Nutzungsverfolgung aktiviert ist. - Tokens/Kosten pro Antwort werden durch
/usage off|tokens|fullgesteuert (an normale Antworten angehängt). /model statusbetrifft Modelle/Auth/Endpunkte, nicht die Nutzung.
Modellauswahl (/model)
/model ist als Direktive implementiert.
Beispiele:
/modelund/model listzeigen eine kompakte, nummerierte Auswahl (Modellfamilie + verfügbare Anbieter)./model <#>wählt aus dieser Auswahl (und bevorzugt, wenn möglich, den aktuellen Anbieter)./model statuszeigt die Detailansicht, einschließlich des konfigurierten Anbieter-Endpunkts (baseUrl) und des API-Modus (api), sofern verfügbar.
Debug-Overrides
/debug ermöglicht es Ihnen, nur zur Laufzeit Konfigurations-Overrides zu setzen (im Speicher, nicht auf Datenträger). Nur Eigentümer. Standardmäßig deaktiviert; aktivieren Sie es mit commands.debug: true.
Beispiele:
- Overrides gelten sofort für neue Konfigurationslesevorgänge, schreiben jedoch nicht nach
openclaw.json. - Verwenden Sie
/debug reset, um alle Overrides zu löschen und zur On-Disk-Konfiguration zurückzukehren.
Konfigurationsaktualisierungen
/config schreibt in Ihre On-Disk-Konfiguration (openclaw.json). Nur Eigentümer. Standardmäßig deaktiviert; aktivieren Sie es mit commands.config: true.
Beispiele:
- Die Konfiguration wird vor dem Schreiben validiert; ungültige Änderungen werden abgelehnt.
/config-Aktualisierungen bleiben über Neustarts hinweg erhalten.
Oberflächenhinweise
- Textbefehle laufen in der normalen Chat-Sitzung (DMs teilen sich
main, Gruppen haben ihre eigene Sitzung). - Native Befehle verwenden isolierte Sitzungen:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(Präfix konfigurierbar überchannels.slack.slashCommand.sessionPrefix) - Telegram:
telegram:slash:<userId>(zielt überCommandTargetSessionKeyauf die Chat-Sitzung)
- Discord:
/stopzielt auf die aktive Chat-Sitzung, sodass der aktuelle Lauf abgebrochen werden kann.- Slack:
channels.slack.slashCommandwird weiterhin für einen einzelnen/openclaw-artigen Befehl unterstützt. Wenn Siecommands.nativeaktivieren, müssen Sie einen Slack-Slash-Befehl pro eingebautem Befehl erstellen (gleiche Namen wie/help). Befehlsargument-Menüs für Slack werden als ephemere Block-Kit-Buttons ausgeliefert.