Hooks
Los hooks proporcionan un sistema extensible basado en eventos para automatizar acciones en respuesta a comandos y eventos del agente. Los hooks se descubren automáticamente desde directorios y se pueden gestionar mediante comandos de la CLI, de forma similar a cómo funcionan las skills en OpenClaw.Orientación inicial
Los hooks son pequeños scripts que se ejecutan cuando ocurre algo. Hay dos tipos:- Hooks (esta página): se ejecutan dentro del Gateway cuando se disparan eventos del agente, como
/new,/reset,/stopo eventos del ciclo de vida. - Webhooks: webhooks HTTP externos que permiten que otros sistemas activen trabajo en OpenClaw. Consulte Webhook Hooks o use
openclaw webhookspara comandos auxiliares de Gmail.
- Guardar una instantánea de memoria cuando se restablece una sesión
- Mantener un rastro de auditoría de comandos para solución de problemas o cumplimiento
- Activar automatizaciones de seguimiento cuando una sesión comienza o termina
- Escribir archivos en el espacio de trabajo del agente o llamar a API externas cuando se disparan eventos
Descripción general
El sistema de hooks le permite:- Guardar el contexto de la sesión en memoria cuando se emite
/new - Registrar todos los comandos para auditoría
- Activar automatizaciones personalizadas en eventos del ciclo de vida del agente
- Extender el comportamiento de OpenClaw sin modificar el código principal
Comenzando
Hooks incluidos
OpenClaw incluye cuatro hooks integrados que se descubren automáticamente:- 💾 session-memory: Guarda el contexto de la sesión en el espacio de trabajo de su agente (predeterminado
~/.openclaw/workspace/memory/) cuando emite/new - 😈 soul-evil: Intercambia contenido inyectado de
SOUL.mdconSOUL_EVIL.mddurante una ventana de purga o por probabilidad aleatoria - 📝 command-logger: Registra todos los eventos de comandos en
~/.openclaw/logs/commands.log - 🚀 boot-md: Ejecuta
BOOT.mdcuando se inicia el Gateway (requiere hooks internos habilitados)
Embarque
Durante la incorporación (openclaw onboard), se le pedirá que habilite hooks recomendados. El asistente descubre automáticamente los hooks elegibles y los presenta para su selección.
Descubrimiento de hooks
Los hooks se descubren automáticamente desde tres directorios (en orden de precedencia):- Hooks del espacio de trabajo:
<workspace>/hooks/(por agente, mayor precedencia) - Hooks gestionados:
~/.openclaw/hooks/(instalados por el usuario, compartidos entre espacios de trabajo) - Hooks incluidos:
<openclaw>/dist/hooks/bundled/(incluidos con OpenClaw)
Paquetes de hooks (npm/archivos)
Los paquetes de hooks son paquetes npm estándar que exportan uno o más hooks medianteopenclaw.hooks en
package.json. Instálelos con:
package.json:
HOOK.md y handler.ts (o index.ts).
Los paquetes de hooks pueden incluir dependencias; se instalarán en ~/.openclaw/hooks/<id>.
Nota de seguridad: openclaw hooks install instala dependencias con npm install --ignore-scripts
(sin scripts de ciclo de vida). Mantén los árboles de dependencias del paquete de hooks “pure JS/TS” y evita paquetes que dependan
de compilaciones postinstall.
Estructura de un hook
Formato de HOOK.md
El archivoHOOK.md contiene metadatos en frontmatter YAML más documentación en Markdown:
Campos de metadatos
El objetometadata.openclaw admite:
emoji: Emoji de visualización para la CLI (p. ej.,"💾")events: Arreglo de eventos a escuchar (p. ej.,["command:new", "command:reset"])export: Exportación con nombre a usar (predeterminado"default")homepage: URL de documentaciónrequires: Requisitos opcionalesbins: Binarios requeridos en PATH (p. ej.,["git", "node"])anyBins: Al menos uno de estos binarios debe estar presenteenv: Variables de entorno requeridasconfig: Rutas de configuración requeridas (p. ej.,["workspace.dir"])os: Plataformas requeridas (p. ej.,["darwin", "linux"])
always: Omitir comprobaciones de elegibilidad (booleano)install: Métodos de instalación (para hooks incluidos:[{"id":"bundled","kind":"bundled"}])
Implementación del handler
El archivohandler.ts exporta una función HookHandler:
Contexto del evento
Cada evento incluye:Tipos de eventos
Eventos de comandos
Se activan cuando se emiten comandos del agente:command: Todos los eventos de comandos (escucha general)command:new: Cuando se emite el comando/newcommand:reset: Cuando se emite el comando/resetcommand:stop: Cuando se emite el comando/stop
Eventos del agente
agent:bootstrap: Antes de que se inyecten los archivos de arranque del espacio de trabajo (los hooks pueden mutarcontext.bootstrapFiles)
Eventos del Gateway
Se activan cuando se inicia el Gateway:gateway:startup: Después de que los canales se inician y los hooks se cargan
Hooks de resultados de herramientas (API de plugins)
Estos hooks no son escuchas de flujos de eventos; permiten que los plugins ajusten de forma síncrona los resultados de las herramientas antes de que OpenClaw los persista.tool_result_persist: Transformar resultados de herramientas antes de que se escriban en la transcripción de la sesión. Debe ser síncrono; devuelva la carga útil actualizada del resultado de la herramienta oundefinedpara mantenerla sin cambios. Consulte Agent Loop.
Eventos futuros
Tipos de eventos planificados:session:start: Cuando comienza una nueva sesiónsession:end: Cuando finaliza una sesiónagent:error: Cuando un agente encuentra un errormessage:sent: Cuando se envía un mensajemessage:received: Cuando se recibe un mensaje
Creación de hooks personalizados
1. Elegir ubicación
- Hooks del espacio de trabajo (
<workspace>/hooks/): Por agente, mayor precedencia - Hooks gestionados (
~/.openclaw/hooks/): Compartidos entre espacios de trabajo
2. Crear la estructura de directorios
3. Crear HOOK.md
4. Crear handler.ts
5. Habilitar y probar
Configuración
Nuevo formato de configuración (recomendado)
Configuración por hook
Los hooks pueden tener configuración personalizada:Directorios adicionales
Cargar hooks desde directorios adicionales:Formato de configuración heredado (aún compatible)
El formato de configuración antiguo sigue funcionando por compatibilidad hacia atrás:module debe ser una ruta relativa al workspace. Las rutas absolutas y la navegación fuera del workspace son rechazadas.
Migración: Use el nuevo sistema basado en descubrimiento para hooks nuevos. Los handlers heredados se cargan después de los hooks basados en directorios.
Comandos de la CLI
Listar hooks
Información del hook
Verificar elegibilidad
Habilitar/deshabilitar
Referencia de hooks incluidos
session-memory
Guarda el contexto de la sesión en memoria cuando emite/new.
Eventos: command:new
Salida: No se escriben archivos; los intercambios ocurren solo en memoria.
Salida: <workspace>/memory/YYYY-MM-DD-slug.md (predeterminado ~/.openclaw/workspace)
Qué hace:
- Usa la entrada de la sesión previa al restablecimiento para localizar la transcripción correcta
- Extrae las últimas 15 líneas de la conversación
- Usa un LLM para generar un slug descriptivo de nombre de archivo
- Guarda los metadatos de la sesión en un archivo de memoria con fecha
2026-01-16-vendor-pitch.md2026-01-16-api-design.md2026-01-16-1430.md(marca de tiempo de respaldo si falla la generación del slug)
bootstrap-extra-files
Intercambia contenido inyectado deSOUL.md con SOUL_EVIL.md durante una ventana de purga o por probabilidad aleatoria.
Eventos: agent:bootstrap
Requisitos: workspace.dir debe estar configurado
Salida: No se escriben archivos; el contexto de bootstrap se modifica solo en memoria.
Configuración:
- Las rutas se resuelven en relación con el workspace.
- Los archivos deben permanecer dentro del workspace (verificados con realpath).
- Solo se cargan los basenames de bootstrap reconocidos.
- Se mantiene la lista blanca de subagentes (
AGENTS.mdyTOOLS.mdúnicamente).
command-logger
Registra todos los eventos de comandos en un archivo centralizado de auditoría. Eventos:command
Requisitos: Ninguno
Salida: ~/.openclaw/logs/commands.log
Qué hace:
- Captura detalles del evento (acción del comando, marca de tiempo, clave de sesión, ID del remitente, origen)
- Agrega al archivo de registro en formato JSONL
- Se ejecuta silenciosamente en segundo plano
boot-md
EjecutaBOOT.md cuando se inicia el Gateway (después de que los canales se inician).
Los hooks internos deben estar habilitados para que esto se ejecute.
Eventos: gateway:startup
Requisitos: workspace.dir debe estar configurado
Qué hace:
- Lee
BOOT.mddesde su espacio de trabajo - Ejecuta las instrucciones mediante el ejecutor del agente
- Envía cualquier mensaje saliente solicitado mediante la herramienta de mensajes
Mejores prácticas
Mantenga los handlers rápidos
Los hooks se ejecutan durante el procesamiento de comandos. Manténgalos livianos:Maneje los errores con elegancia
Siempre envuelva las operaciones riesgosas:Filtre eventos temprano
Regrese temprano si el evento no es relevante:Use claves de eventos específicas
Especifique eventos exactos en los metadatos cuando sea posible:Depuración
Habilitar registro de hooks
El Gateway registra la carga de hooks al inicio:Comprobar descubrimiento
Liste todos los hooks descubiertos:Comprobar registro
En su handler, registre cuando se llame:Comprobación de elegibilidad
Compruebe por qué un hook no es elegible:Pruebas
Registros del Gateway
Monitoree los registros del Gateway para ver la ejecución de hooks:Prueba Hooks Directamente
Pruebe sus handlers de forma aislada:Arquitectura
Componentes principales
src/hooks/types.ts: Definiciones de tipossrc/hooks/workspace.ts: Escaneo y carga de directoriossrc/hooks/frontmatter.ts: Análisis de metadatos de HOOK.mdsrc/hooks/config.ts: Comprobación de elegibilidadsrc/hooks/hooks-status.ts: Reporte de estadosrc/hooks/loader.ts: Cargador dinámico de módulossrc/cli/hooks-cli.ts: Comandos de la CLIsrc/gateway/server-startup.ts: Carga hooks al iniciar el Gatewaysrc/auto-reply/reply/commands-core.ts: Dispara eventos de comandos
Flujo de descubrimiento
Flujo de eventos
Solución de problemas
Hook no descubierto
-
Verifique la estructura de directorios:
-
Verifique el formato de HOOK.md:
-
Liste todos los hooks descubiertos:
Hook no se ejecuta
Compruebe los requisitos:- Binarios (verifique PATH)
- Variables de entorno
- Valores de configuración
- Compatibilidad del SO
Hook no elegible
-
Verifique que el hook esté habilitado:
- Reinicie su proceso del Gateway para que los hooks se recarguen.
-
Revise los registros del Gateway en busca de errores:
Errores del handler
Revise errores de TypeScript/importación:Guía de migración
De configuración heredada a descubrimiento
Antes:-
Cree el directorio del hook:
-
Cree HOOK.md:
-
Actualice la configuración:
-
Verifique y reinicie su proceso del Gateway:
- Descubrimiento automático
- Gestión mediante CLI
- Comprobar elegibilidad
- Mejor documentación
- Estructura consistente