Hooks
Les hooks fournissent un système extensible piloté par événements pour automatiser des actions en réponse aux commandes et aux événements de l’agent. Les hooks sont automatiquement découverts à partir de répertoires et peuvent être gérés via des commandes CLI, de manière similaire au fonctionnement des Skills dans OpenClaw.Getting Oriented
Les hooks sont de petits scripts qui s’exécutent lorsqu’un événement se produit. Il en existe deux types :- Hooks (cette page) : s’exécutent à l’intérieur de la Gateway (passerelle) lorsque des événements d’agent se déclenchent, comme
/new,/reset,/stop, ou des événements du cycle de vie. - Webhooks : webhooks HTTP externes permettant à d’autres systèmes de déclencher du travail dans OpenClaw. Voir Webhook Hooks ou utiliser
openclaw webhookspour les commandes d’assistance Gmail.
- Enregistrer un instantané de mémoire lorsque vous réinitialisez une session
- Conserver une piste d’audit des commandes pour le dépannage ou la conformité
- Déclencher des automatisations de suivi lorsqu’une session démarre ou se termine
- Écrire des fichiers dans l’espace de travail de l’agent ou appeler des API externes lorsque des événements se produisent
Overview
Le système de hooks vous permet de :- Enregistrer le contexte de session en mémoire lorsque
/newest émis - Journaliser toutes les commandes à des fins d’audit
- Déclencher des automatisations personnalisées lors des événements du cycle de vie de l’agent
- Étendre le comportement d’OpenClaw sans modifier le code cœur
Démarrage
Hooks inclus
OpenClaw est livré avec quatre hooks intégrés qui sont automatiquement découverts :- 💾 session-memory : enregistre le contexte de session dans l’espace de travail de votre agent (par défaut
~/.openclaw/workspace/memory/) lorsque vous émettez/new - 😈 soul-evil : remplace le contenu injecté
SOUL.mdparSOUL_EVIL.mdpendant une fenêtre de purge ou de manière aléatoire - 📝 command-logger : journalise tous les événements de commande dans
~/.openclaw/logs/commands.log - 🚀 boot-md : exécute
BOOT.mdlorsque la gateway (passerelle) démarre (nécessite l’activation des hooks internes)
Onboarding
Lors de la prise en main (openclaw onboard), il vous sera proposé d’activer les hooks recommandés. L’assistant découvre automatiquement les hooks éligibles et vous les présente pour sélection.
Découverte des hooks
Les hooks sont automatiquement découverts à partir de trois répertoires (par ordre de priorité) :- Hooks d’espace de travail :
<workspace>/hooks/(par agent, priorité la plus élevée) - Hooks gérés :
~/.openclaw/hooks/(installés par l’utilisateur, partagés entre les espaces de travail) - Hooks intégrés :
<openclaw>/dist/hooks/bundled/(fournis avec OpenClaw)
Packs de hooks (npm/archives)
Les packs de hooks sont des packages npm standards qui exportent un ou plusieurs hooks viaopenclaw.hooks dans
package.json. Installez-les avec :
package.json :
HOOK.md et handler.ts (ou index.ts).
Les packs de hooks peuvent inclure des dépendances ; elles seront installées sous ~/.openclaw/hooks/<id>.
Note de sécurité : openclaw hooks install installe les dépendances avec npm install --ignore-scripts
(sans scripts de cycle de vie). Conservez des arbres de dépendances de hook pack « pure JS/TS » et évitez les packages qui reposent
sur des builds postinstall.
Hook Structure
HOOK.md Format
Le fichierHOOK.md contient des métadonnées en frontmatter YAML ainsi que de la documentation Markdown :
Metadata Fields
L’objetmetadata.openclaw prend en charge :
emoji: emoji d’affichage pour la CLI (par ex."💾")- Prise en main
export: export nommé à utiliser (par défaut"default")homepage: URL de documentationrequires: exigences optionnellesbins: binaires requis sur le PATH (par ex.["git", "node"])anyBins: au moins un de ces binaires doit être présentenv: variables d’environnement requises- soul-evil
os: plateformes requises (par ex.["darwin", "linux"])
always: contourner les vérifications d’éligibilité (booléen)install: méthodes d’installation (pour les hooks intégrés :[{"id":"bundled","kind":"bundled"}])
Handler Implementation
Le fichierhandler.ts exporte une fonction HookHandler :
Event Context
Chaque événement inclut :Event Types
Command Events
Déclenchés lorsque des commandes de l’agent sont émises :command: tous les événements de commande (écouteur général)command:new: lorsque la commande/newest émisecommand:reset: lorsque la commande/resetest émisecommand:stop: lorsque la commande/stopest émise
Agent Events
agent:bootstrap: avant que les fichiers de bootstrap de l’espace de travail ne soient injectés (les hooks peuvent modifiercontext.bootstrapFiles)
Gateway Events
Déclenchés lorsque la gateway (passerelle) démarre :gateway:startup: après le démarrage des canaux et le chargement des hooks
Tool Result Hooks (Plugin API)
Ces hooks ne sont pas des écouteurs de flux d’événements ; ils permettent aux plugins d’ajuster de manière synchrone les résultats des outils avant qu’OpenClaw ne les persiste.tool_result_persist: transformer les résultats des outils avant qu’ils ne soient écrits dans la transcription de session. Doit être synchrone ; retourner la charge utile du résultat d’outil mise à jour ouundefinedpour la conserver telle quelle. Voir Agent Loop.
Future Events
Types d’événements planifiés :session:start: lorsqu’une nouvelle session commencesession:end: lorsqu’une session se termineagent:error: lorsqu’un agent rencontre une erreurmessage:sent: lorsqu’un message est envoyémessage:received: lorsqu’un message est reçu
Creating Custom Hooks
1. Choose Location
- Hooks d’espace de travail (
<workspace>/hooks/) : par agent, priorité la plus élevée - Hooks gérés (
~/.openclaw/hooks/) : partagés entre les espaces de travail
2. Create Directory Structure
3. Create HOOK.md
4. Create handler.ts
5. Enable and Test
Configuration
New Config Format (Recommended)
Per-Hook Configuration
Les hooks peuvent avoir une configuration personnalisée :Extra Directories
Charger des hooks depuis des répertoires supplémentaires :Legacy Config Format (Still Supported)
L’ancien format de configuration fonctionne toujours pour assurer la rétrocompatibilité :module doit être un chemin relatif au workspace. Les chemins absolus et les parcours en dehors du workspace sont rejetés.
Migration : utilisez le nouveau système basé sur la découverte pour les nouveaux hooks. Les handlers hérités sont chargés après les hooks basés sur des répertoires.
CLI Commands
List Hooks
Hook Information
Check Eligibility
Enable/Disable
Bundled hook reference
session-memory
Enregistre le contexte de session en mémoire lorsque vous émettez/new.
Events : command:new
Requirements : workspace.dir doit être configuré
Output : <workspace>/memory/YYYY-MM-DD-slug.md (par défaut ~/.openclaw/workspace)
What it does :
- Utilise l’entrée de session pré-réinitialisation pour localiser la transcription correcte
- Extrait les 15 dernières lignes de la conversation
- Utilise un LLM pour générer un slug de nom de fichier descriptif
- Enregistre les métadonnées de session dans un fichier de mémoire daté
2026-01-16-vendor-pitch.md2026-01-16-api-design.md2026-01-16-1430.md(horodatage de secours si la génération du slug échoue)
bootstrap-extra-files
Remplace le contenu injectéSOUL.md par SOUL_EVIL.md pendant une fenêtre de purge ou de manière aléatoire.
Events : agent:bootstrap
Requirements : workspace.dir doit être configuré
Output : Aucun fichier écrit ; les échanges se font uniquement en mémoire.
Config :
- Les chemins sont résolus par rapport au workspace.
- Les fichiers doivent rester dans le workspace (vérifiés via realpath).
- Seuls les noms de base bootstrap reconnus sont chargés.
- La liste blanche des sous-agents est préservée (
AGENTS.mdetTOOLS.mduniquement).
command-logger
Journalise tous les événements de commande dans un fichier d’audit centralisé. Events :command
Requirements : Aucun
Output : ~/.openclaw/logs/commands.log
What it does :
- Capture les détails de l’événement (action de commande, horodatage, clé de session, ID de l’expéditeur, source)
- Ajoute au fichier de log au format JSONL
- S’exécute silencieusement en arrière-plan
boot-md
ExécuteBOOT.md lorsque la gateway (passerelle) démarre (après le démarrage des canaux).
Les hooks internes doivent être activés pour que cela s’exécute.
Events : gateway:startup
Intégration initiale
What it does :
- Lit
BOOT.mddepuis votre espace de travail - Exécute les instructions via l’agent runner
- Envoie tout message sortant demandé via l’outil de messagerie
Best Practices
Keep Handlers Fast
Les hooks s’exécutent pendant le traitement des commandes. Gardez-les légers :Handle Errors Gracefully
Encapsulez toujours les opérations risquées :Filter Events Early
Retournez tôt si l’événement n’est pas pertinent :Use Specific Event Keys
Spécifiez des événements précis dans les métadonnées lorsque c’est possible :Debugging
Enable Hook Logging
La gateway (passerelle) journalise le chargement des hooks au démarrage :Check Discovery
Lister tous les hooks découverts :Check Registration
Dans votre handler, journalisez lorsqu’il est appelé :Verify Eligibility
Vérifiez pourquoi un hook n’est pas éligible :Testing
Gateway Logs
Surveillez les logs de la gateway pour voir l’exécution des hooks :Test Hooks Directly
Testez vos handlers de manière isolée :Architecture
Core Components
src/hooks/types.ts: définitions de typessrc/hooks/workspace.ts: analyse et chargement des répertoiressrc/hooks/frontmatter.ts: analyse des métadonnées HOOK.mdsrc/hooks/config.ts: vérification de l’éligibilitésrc/hooks/hooks-status.ts: reporting de statutsrc/hooks/loader.ts: chargeur de modules dynamiquesrc/cli/hooks-cli.ts: commandes CLIsrc/gateway/server-startup.ts: charge les hooks au démarrage de la gatewaysrc/auto-reply/reply/commands-core.ts: déclenche les événements de commande
Discovery Flow
Event Flow
Troubleshooting
Hook Not Discovered
-
Vérifiez la structure des répertoires :
-
Vérifiez le format de HOOK.md :
-
Listez tous les hooks découverts :
Hook Not Eligible
Vérifiez les exigences :- Binaires (vérifiez le PATH)
- Variables d’environnement
- Valeurs de configuration
- Compatibilité du système d’exploitation
Hook Not Executing
-
Vérifiez que le hook est activé :
- Redémarrez le processus de la gateway afin que les hooks soient rechargés.
-
Vérifiez les logs de la gateway pour des erreurs :
Handler Errors
Vérifiez les erreurs TypeScript/import :Migration Guide
From Legacy Config to Discovery
Avant :-
Créez le répertoire du hook :
-
Créez HOOK.md :
-
Mettez à jour la configuration :
-
Vérifiez et redémarrez le processus de la gateway :
- Découverte automatique
- Gestion via la CLI
- Vérification de l’éligibilité
- Meilleure documentation
- Structure cohérente