Comandos slash
Los comandos son gestionados por el Gateway. La mayoría de los comandos deben enviarse como un mensaje independiente que comienza con /.
El comando bash solo para host usa ! <cmd> (con /bash <cmd> como alias).
Hay dos sistemas relacionados:
- Comandos: mensajes independientes
/.... - Directivas:
/think,/fast,/verbose,/reasoning,/elevated,/exec,/model,/queue.- Las directivas se eliminan del mensaje antes de que el modelo las vea.
- En mensajes de chat normales (no solo directivas), se tratan como “indicaciones inline” y no persisten la configuración de sesión.
- En mensajes que solo contienen directivas (el mensaje contiene únicamente directivas), persisten en la sesión y responden con una confirmación.
- Las directivas solo se aplican para remitentes autorizados. Si
commands.allowFromestá configurado, es la única lista de permitidos usada; de lo contrario la autorización viene de listas de permitidos/emparejamiento del canal máscommands.useAccessGroups. Los remitentes no autorizados ven las directivas tratadas como texto plano.
También hay algunos atajos inline (solo remitentes en lista de permitidos/autorizados): /help, /commands, /status, /whoami (/id).
Se ejecutan inmediatamente, se eliminan antes de que el modelo vea el mensaje, y el texto restante continúa por el flujo normal.
Configuración
{
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(por defectotrue) habilita el parseo de/...en mensajes de chat.- En superficies sin comandos nativos (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), los comandos de texto siguen funcionando aunque pongas esto en
false.
- En superficies sin comandos nativos (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), los comandos de texto siguen funcionando aunque pongas esto en
commands.native(por defecto"auto") registra comandos nativos.- Auto: habilitado para Discord/Telegram; deshabilitado para Slack (hasta que agregues comandos slash); ignorado para proveedores sin soporte nativo.
- Configura
channels.discord.commands.native,channels.telegram.commands.native, ochannels.slack.commands.nativepara sobreescribir por proveedor (bool o"auto"). falselimpia comandos previamente registrados en Discord/Telegram al iniciar. Los comandos de Slack se gestionan en la app de Slack y no se eliminan automáticamente.
commands.nativeSkills(por defecto"auto") registra comandos de skills nativamente cuando está admitido.- Auto: habilitado para Discord/Telegram; deshabilitado para Slack (Slack requiere crear un comando slash por skill).
- Configura
channels.discord.commands.nativeSkills,channels.telegram.commands.nativeSkills, ochannels.slack.commands.nativeSkillspara sobreescribir por proveedor (bool o"auto").
commands.bash(por defectofalse) habilita! <cmd>para ejecutar comandos de shell del host (/bash <cmd>es un alias; requiere listas de permitidos detools.elevated).commands.bashForegroundMs(por defecto2000) controla cuánto tiempo espera bash antes de cambiar a modo segundo plano (0pasa a segundo plano inmediatamente).commands.config(por defectofalse) habilita/config(lee/escribeopenclaw.json).commands.debug(por defectofalse) habilita/debug(sobreescrituras solo en runtime).commands.allowFrom(opcional) configura una lista de permitidos por proveedor para autorización de comandos. Cuando está configurado, es la única fuente de autorización para comandos y directivas (se ignoran listas de permitidos/emparejamiento del canal ycommands.useAccessGroups). Usa"*"para un valor global por defecto; las claves específicas por proveedor lo sobreescriben.commands.useAccessGroups(por defectotrue) aplica listas de permitidos/políticas para comandos cuandocommands.allowFromno está configurado.
Lista de comandos
Texto + nativos (cuando están habilitados):
/help/commands/skill <name> [input](ejecuta un skill por nombre)/status(muestra el estado actual; incluye uso/cuota del proveedor para el proveedor de modelo actual cuando está disponible)/allowlist(listar/agregar/eliminar entradas de la lista de permitidos)/approve <id> allow-once|allow-always|deny(resolver prompts de aprobación de exec)/context [list|detail|json](explicar “contexto”;detailmuestra tamaño por archivo + por herramienta + por skill + prompt del sistema)/export-session [path](alias:/export) (exportar sesión actual a HTML con prompt del sistema completo)/whoami(muestra tu id de remitente; alias:/id)/session idle <duration|off>(gestionar auto-unfocus por inactividad para vinculaciones de hilo enfocadas)/session max-age <duration|off>(gestionar auto-unfocus por edad máxima para vinculaciones de hilo enfocadas)/subagents list|kill|log|info|send|steer|spawn(inspeccionar, controlar o generar ejecuciones de sub-agente para la sesión actual)/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions(inspeccionar y controlar sesiones del runtime ACP)/agents(listar agentes vinculados a hilos para esta sesión)/focus <target>(Discord: vincular este hilo, o un nuevo hilo, a un destino de sesión/subagente)/unfocus(Discord: eliminar la vinculación del hilo actual)/kill <id|#|all>(abortar inmediatamente uno o todos los sub-agentes en ejecución para esta sesión; sin mensaje de confirmación)/steer <id|#> <message>(dirigir un sub-agente en ejecución inmediatamente: en ejecución cuando es posible, de lo contrario aborta el trabajo actual y reinicia con el mensaje de dirección)/tell <id|#> <message>(alias de/steer)/config show|get|set|unset(persistir config en disco, solo propietario; requierecommands.config: true)/debug show|set|unset|reset(sobreescrituras en runtime, solo propietario; requierecommands.debug: true)/usage off|tokens|full|cost(pie de uso por respuesta o resumen de costos local)/tts off|always|inbound|tagged|status|provider|limit|summary|audio(controlar TTS; consulta /tts)- Discord: el comando nativo es
/voice(Discord reserva/tts); el texto/ttssigue funcionando.
- Discord: el comando nativo es
/stop/restart/dock-telegram(alias:/dock_telegram) (cambiar respuestas a Telegram)/dock-discord(alias:/dock_discord) (cambiar respuestas a Discord)/dock-slack(alias:/dock_slack) (cambiar respuestas a Slack)/activation mention|always(solo grupos)/send on|off|inherit(solo propietario)/reseto/new [model](indicación de modelo opcional; el resto se pasa como mensaje)/think <off|minimal|low|medium|high|xhigh>(opciones dinámicas por modelo/proveedor; aliases:/thinking,/t)/fast status|on|off(omitir el argumento muestra el estado actual del modo rápido)/verbose on|full|off(alias:/v)/reasoning on|off|stream(alias:/reason; cuando está habilitado, envía un mensaje separado con prefijoReasoning:;stream= solo borrador de Telegram)/elevated on|off|ask|full(alias:/elev;fullomite aprobaciones de exec)/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>(envía/execpara ver la configuración actual)/model <name>(alias:/models; o/<alias>desdeagents.defaults.models.*.alias)/queue <mode>(más opciones comodebounce:2s cap:25 drop:summarize; envía/queuepara ver la configuración actual)/bash <command>(solo host; alias de! <command>; requierecommands.bash: true+ listas de permitidos detools.elevated)
Solo texto:
/compact [instructions](consulta /concepts/compaction)! <command>(solo host; uno a la vez; usa!poll+!stoppara trabajos de larga duración)!poll(verificar salida / estado; aceptasessionIdopcional;/bash polltambién funciona)!stop(detener el trabajo bash en ejecución; aceptasessionIdopcional;/bash stoptambién funciona)
Notas:
- Los comandos aceptan un
:opcional entre el comando y los argumentos (ej./think: high,/send: on,/help:). /new <model>acepta un alias de modelo,provider/model, o un nombre de proveedor (coincidencia difusa); si no hay coincidencia, el texto se trata como cuerpo del mensaje.- Para el desglose completo de uso del proveedor, usa
openclaw status --usage. /allowlist add|removerequierecommands.config=truey respetaconfigWritesdel canal.- En canales multi-cuenta,
/allowlist --account <id>y/config set channels.<provider>.accounts.<id>...dirigidos a configuración también respetanconfigWritesde la cuenta destino. /usagecontrola el pie de uso por respuesta;/usage costimprime un resumen de costos local desde los logs de sesión de OpenClaw./restartestá habilitado por defecto; configuracommands.restart: falsepara desactivarlo.- Comando nativo solo de Discord:
/vc join|leave|statuscontrola canales de voz (requierechannels.discord.voicey comandos nativos; no disponible como texto). - Los comandos de vinculación de hilos de Discord (
/focus,/unfocus,/agents,/session idle,/session max-age) requieren que las vinculaciones de hilos efectivas estén habilitadas (session.threadBindings.enabledy/ochannels.discord.threadBindings.enabled). - Referencia de comandos ACP y comportamiento del runtime: Agentes ACP.
/verboseestá pensado para depuración y mayor visibilidad; mantenlo desactivado en uso normal./fast on|offpersiste una sobreescritura de sesión. Usa la opcióninheritde la UI de Sesiones para limpiarla y volver a los valores por defecto de configuración.- Los resúmenes de fallos de herramientas se siguen mostrando cuando son relevantes, pero el texto detallado de fallos solo se incluye cuando
/verboseesonofull. /reasoning(y/verbose) son riesgosos en entornos grupales: pueden revelar razonamiento interno o salida de herramientas que no pretendías exponer. Prefiere dejarlos desactivados, especialmente en chats grupales.- Ruta rápida: los mensajes que solo contienen comandos de remitentes en lista de permitidos se gestionan inmediatamente (omiten cola + modelo).
- Control de mención en grupos: los mensajes que solo contienen comandos de remitentes en lista de permitidos omiten los requisitos de mención.
- Atajos inline (solo remitentes en lista de permitidos): ciertos comandos también funcionan cuando están incrustados en un mensaje normal y se eliminan antes de que el modelo vea el texto restante.
- Ejemplo:
hey /statusdispara una respuesta de estado, y el texto restante continúa por el flujo normal.
- Ejemplo:
- Actualmente:
/help,/commands,/status,/whoami(/id). - Los mensajes no autorizados que solo contienen comandos se ignoran silenciosamente, y los tokens
/...inline se tratan como texto plano. - Comandos de skills: los skills
user-invocablese exponen como comandos slash. Los nombres se sanitizan aa-z0-9_(máx. 32 caracteres); las colisiones obtienen sufijos numéricos (ej._2)./skill <name> [input]ejecuta un skill por nombre (útil cuando los límites de comandos nativos impiden comandos por skill).- Por defecto, los comandos de skills se reenvían al modelo como una solicitud normal.
- Los skills pueden opcionalmente declarar
command-dispatch: toolpara enrutar el comando directamente a una herramienta (determinista, sin modelo). - Ejemplo:
/prose(plugin OpenProse) — consulta OpenProse.
- Argumentos de comandos nativos: Discord usa autocompletado para opciones dinámicas (y menús de botones cuando omites argumentos obligatorios). Telegram y Slack muestran un menú de botones cuando un comando admite opciones y omites el argumento.
Superficies de uso (qué se muestra dónde)
- Uso/cuota del proveedor (ejemplo: “Claude 80% left”) se muestra en
/statuspara el proveedor de modelo actual cuando el seguimiento de uso está habilitado. - Tokens/costo por respuesta se controla con
/usage off|tokens|full(adjunto a respuestas normales). /model statuses sobre modelos/auth/endpoints, no sobre uso.
Selección de modelo (/model)
/model está implementado como una directiva.
Ejemplos:
/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status
Notas:
/modely/model listmuestran un selector compacto y numerado (familia de modelo + proveedores disponibles).- En Discord,
/modely/modelsabren un selector interactivo con dropdowns de proveedor y modelo más un paso de Enviar. /model <#>selecciona de ese selector (y prefiere el proveedor actual cuando es posible)./model statusmuestra la vista detallada, incluyendo endpoint del proveedor configurado (baseUrl) y modo de API (api) cuando está disponible.
Sobreescrituras de debug
/debug te permite configurar sobreescrituras de configuración solo en runtime (memoria, no disco). Solo propietario. Deshabilitado por defecto; habilítalo con commands.debug: true.
Ejemplos:
/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset
Notas:
- Las sobreescrituras se aplican inmediatamente a nuevas lecturas de configuración, pero no escriben en
openclaw.json. - Usa
/debug resetpara limpiar todas las sobreescrituras y volver a la configuración en disco.
Actualizaciones de configuración
/config escribe en tu configuración en disco (openclaw.json). Solo propietario. Deshabilitado por defecto; habilítalo con commands.config: true.
Ejemplos:
/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix
Notas:
- La configuración se valida antes de escribir; los cambios inválidos se rechazan.
- Las actualizaciones de
/configpersisten entre reinicios.
Notas de superficie
- Los comandos de texto se ejecutan en la sesión de chat normal (DMs comparten
main, los grupos tienen su propia sesión). - Los comandos nativos usan sesiones aisladas:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(prefijo configurable conchannels.slack.slashCommand.sessionPrefix) - Telegram:
telegram:slash:<userId>(apunta a la sesión del chat conCommandTargetSessionKey)
- Discord:
/stopapunta a la sesión de chat activa para poder abortar la ejecución actual.- Slack:
channels.slack.slashCommandsigue admitido para un solo comando estilo/openclaw. Si habilitascommands.native, debes crear un comando slash de Slack por cada comando integrado (mismos nombres que/help). Los menús de argumentos de comandos para Slack se entregan como botones efímeros de Block Kit.- Excepción de Slack nativo: registra
/agentstatus(no/status) porque Slack reserva/status. El texto/statussigue funcionando en mensajes de Slack.
- Excepción de Slack nativo: registra