Hooks
Hooks bieden een uitbreidbaar gebeurtenisgestuurd systeem voor het automatiseren van acties als reactie op agentopdrachten en gebeurtenissen. Hooks worden automatisch ontdekt vanuit mappen en kunnen via CLI-opdrachten worden beheerd, vergelijkbaar met hoe Skills werken in OpenClaw.Gearchiveerd krijgen
Hooks zijn kleine scripts die worden uitgevoerd wanneer er iets gebeurt. Er zijn twee soorten:- Hooks (deze pagina): draaien binnen de Gateway wanneer agentgebeurtenissen plaatsvinden, zoals
/new,/reset,/stopof levenscyclusgebeurtenissen. - Webhooks: externe HTTP-webhooks waarmee andere systemen werk kunnen triggeren in OpenClaw. Zie Webhook Hooks of gebruik
openclaw webhooksvoor Gmail-helperopdrachten.
- Een geheugensnapshot opslaan wanneer je een sessie reset
- Een audittrail van opdrachten bijhouden voor probleemoplossing of compliance
- Vervolgautomatisering triggeren wanneer een sessie start of eindigt
- Bestanden schrijven in de agent-werkruimte of externe API’s aanroepen wanneer gebeurtenissen plaatsvinden
Overzicht
Het hooks-systeem stelt je in staat om:- Sessiecontext op te slaan in het geheugen wanneer
/newwordt uitgegeven - Alle opdrachten te loggen voor auditing
- Aangepaste automatiseringen te triggeren bij levenscyclusgebeurtenissen van agents
- Het gedrag van OpenClaw uit te breiden zonder de kerncode te wijzigen
Aan de slag
Gebundelde hooks
OpenClaw wordt geleverd met vier gebundelde hooks die automatisch worden ontdekt:- 💾 session-memory: Slaat sessiecontext op in je agent-werkruimte (standaard
~/.openclaw/workspace/memory/) wanneer je/newuitvoert - 😈 soul-evil: Verwisselt geïnjecteerde
SOUL.md-inhoud metSOUL_EVIL.mdtijdens een purge-venster of met willekeurige kans - 📝 command-logger: Logt alle opdrachtevents naar
~/.openclaw/logs/commands.log - 🚀 boot-md: Voert
BOOT.mduit wanneer de gateway start (vereist interne hooks ingeschakeld)
Onboarding
Tijdens onboarding (openclaw onboard) word je gevraagd aanbevolen hooks in te schakelen. De wizard ontdekt automatisch in aanmerking komende hooks en presenteert ze ter selectie.
Hook-detectie
Hooks worden automatisch ontdekt vanuit drie mappen (in volgorde van prioriteit):- Werkruimte-hooks:
<workspace>/hooks/(per agent, hoogste prioriteit) - Beheerde hooks:
~/.openclaw/hooks/(door de gebruiker geïnstalleerd, gedeeld over werkruimtes) - Gebundelde hooks:
<openclaw>/dist/hooks/bundled/(meegeleverd met OpenClaw)
Hook Packs (npm/archieven)
Hook packs zijn standaard npm-pakketten die één of meer hooks exporteren viaopenclaw.hooks in
package.json. Installeer ze met:
package.json:
HOOK.md en handler.ts (of index.ts).
Hook packs kunnen afhankelijkheden meeleveren; deze worden geïnstalleerd onder ~/.openclaw/hooks/<id>.
Beveiligingsopmerking: openclaw hooks install installeert afhankelijkheden met npm install --ignore-scripts
(geen lifecycle-scripts). Houd dependency trees van hook-pakketten “pure JS/TS” en vermijd pakketten die afhankelijk zijn
van postinstall-builds.
Hookstructuur
HOOK.md-indeling
Het bestandHOOK.md bevat metadata in YAML-frontmatter plus Markdown-documentatie:
Metadatavelden
Het objectmetadata.openclaw ondersteunt:
emoji: Weergave-emoji voor de CLI (bijv."💾")events: Array van gebeurtenissen om naar te luisteren (bijv.["command:new", "command:reset"])export: Benoemde export om te gebruiken (standaard"default")homepage: Documentatie-URLrequires: Optionele vereistenbins: Vereiste binaries op PATH (bijv.["git", "node"])anyBins: Ten minste één van deze binaries moet aanwezig zijnenv: Vereiste omgevingsvariabelenconfig: Vereiste configpaden (bijv.["workspace.dir"])os: Vereiste platforms (bijv.["darwin", "linux"])
always: Geschiktheidscontroles omzeilen (boolean)install: Installatiemethoden (voor gebundelde hooks:[{"id":"bundled","kind":"bundled"}])
Handler-implementatie
Het bestandhandler.ts exporteert een functie HookHandler:
Gebeurteniscontext
Elke gebeurtenis bevat:Gebeurtenistypen
Opdrachtevents
Getriggerd wanneer agentopdrachten worden uitgevoerd:command: Alle opdrachtevents (algemene listener)command:new: Wanneer de opdracht/newwordt uitgevoerdcommand:reset: Wanneer de opdracht/resetwordt uitgevoerdcommand:stop: Wanneer de opdracht/stopwordt uitgevoerd
Agentgebeurtenissen
agent:bootstrap: Vóórdat bootstrapbestanden in de werkruimte worden geïnjecteerd (hooks kunnencontext.bootstrapFilesmuteren)
Gateway-gebeurtenissen
Getriggerd wanneer de gateway start:gateway:startup: Nadat kanalen zijn gestart en hooks zijn geladen
Toolresultaat-hooks (Plugin-API)
Deze hooks zijn geen event-streamlisteners; ze stellen plugins in staat toolresultaten synchroon aan te passen voordat OpenClaw ze opslaat.tool_result_persist: Transformeert toolresultaten voordat ze naar het sessietranscript worden geschreven. Moet synchroon zijn; retourneer de bijgewerkte toolresultaat-payload ofundefinedom deze ongewijzigd te laten. Zie Agent Loop.
Toekomstige gebeurtenissen
Geplande gebeurtenistypen:session:start: Wanneer een nieuwe sessie begintsession:end: Wanneer een sessie eindigtagent:error: Wanneer een agent een fout tegenkomtmessage:sent: Wanneer een bericht wordt verzondenmessage:received: Wanneer een bericht wordt ontvangen
Aangepaste hooks maken
1. Locatie kiezen
- Werkruimte-hooks (
<workspace>/hooks/): Per agent, hoogste prioriteit - Beheerde hooks (
~/.openclaw/hooks/): Gedeeld over werkruimtes
2. Mapstructuur maken
3. HOOK.md maken
4. handler.ts maken
5. Inschakelen en testen
Configuratie
Nieuw configformaat (aanbevolen)
Per-hookconfiguratie
Hooks kunnen een aangepaste configuratie hebben:Extra mappen
Laad hooks uit aanvullende mappen:Verouderd configformaat (nog ondersteund)
Het oude configformaat werkt nog steeds voor achterwaartse compatibiliteit:module moet een workspace-relatief pad zijn. Absolute paden en traversals buiten de workspace worden afgewezen.
Migratie: Gebruik het nieuwe op detectie gebaseerde systeem voor nieuwe hooks. Verouderde handlers worden geladen na mapgebaseerde hooks.
CLI-opdrachten
Hooks weergeven
Hookinformatie
Geschiktheid controleren
In-/uitschakelen
Referentie voor gebundelde hooks
session-memory
Slaat sessiecontext op in het geheugen wanneer je/new uitvoert.
Gebeurtenissen: command:new
Documentatie: SOUL Evil Hook
Uitvoer: <workspace>/memory/YYYY-MM-DD-slug.md (standaard ~/.openclaw/workspace)
Wat het doet:
- Gebruikt de pre-reset sessie-entry om het juiste transcript te vinden
- Extraheert de laatste 15 regels van het gesprek
- Gebruikt een LLM om een beschrijvende bestandsnaam-slug te genereren
- Slaat sessiemetadata op in een gedateerd geheugenbestand
2026-01-16-vendor-pitch.md2026-01-16-api-design.md2026-01-16-1430.md(fallback-tijdstempel als slug-generatie mislukt)
bootstrap-extra-files
Verwisselt geïnjecteerdeSOUL.md-inhoud met SOUL_EVIL.md tijdens een purge-venster of met willekeurige kans.
Gebeurtenissen: agent:bootstrap
Vereisten: workspace.dir moet zijn geconfigureerd
Uitvoer: Er worden geen bestanden geschreven; verwisselingen gebeuren alleen in het geheugen.
Config:
- Paden worden relatief ten opzichte van de workspace opgelost.
- Bestanden moeten binnen de workspace blijven (realpath-gecontroleerd).
- Alleen herkende bootstrap-basenamen worden geladen.
- Subagent-allowlist blijft behouden (
AGENTS.mdenTOOLS.mdalleen).
command-logger
Logt alle opdrachtevents naar een gecentraliseerd auditbestand. Gebeurtenissen:command
Vereisten: Geen
Uitvoer: ~/.openclaw/logs/commands.log
Wat het doet:
- Legt gebeurtenisdetails vast (opdrachtactie, tijdstempel, sessiesleutel, afzender-ID, bron)
- Voegt toe aan het logbestand in JSONL-formaat
- Draait stil op de achtergrond
boot-md
VoertBOOT.md uit wanneer de gateway start (nadat kanalen zijn gestart).
Interne hooks moeten zijn ingeschakeld om dit te laten werken.
Gebeurtenissen: gateway:startup
Vereisten: workspace.dir moet zijn geconfigureerd
Wat het doet:
- Leest
BOOT.mduit je werkruimte - Voert de instructies uit via de agent-runner
- Verstuurt eventuele gevraagde uitgaande berichten via de message-tool
Best practices
Houd handlers snel
Hooks draaien tijdens de verwerking van opdrachten. Houd ze lichtgewicht:Ga netjes om met fouten
Omwikkel risicovolle bewerkingen altijd:Filter gebeurtenissen vroegtijdig
Keer vroegtijdig terug als de gebeurtenis niet relevant is:Gebruik specifieke gebeurtenissleutels
Specificeer waar mogelijk exacte gebeurtenissen in de metadata:Debuggen
Hook-logging inschakelen
De gateway logt het laden van hooks bij het opstarten:Detectie controleren
Toon alle ontdekte hooks:Registratie controleren
Log in je handler wanneer deze wordt aangeroepen:Geschiktheid verifiëren
Controleer waarom een hook niet geschikt is:Testen
Gateway-logs
Monitor gateway-logs om de uitvoering van hooks te zien:Hooks direct testen
Test je handlers geïsoleerd:Architectuur
Kerncomponenten
src/hooks/types.ts: Typedefinitiessrc/hooks/workspace.ts: Mappen scannen en ladensrc/hooks/frontmatter.ts: Parsing van HOOK.md-metadatasrc/hooks/config.ts: Geschiktheidscontrolesrc/hooks/hooks-status.ts: Statusrapportagesrc/hooks/loader.ts: Dynamische moduleloadersrc/cli/hooks-cli.ts: CLI-opdrachtensrc/gateway/server-startup.ts: Laadt hooks bij het starten van de gatewaysrc/auto-reply/reply/commands-core.ts: Triggert opdrachtevents
Ontdekking Flow
Gebeurtenis flow
Problemen oplossen
Hook niet ontdekt
-
Controleer de mapstructuur:
-
Verifieer het HOOK.md-formaat:
-
Alle ontdekte hooks weergeven:
Hook wordt niet uitgevoerd
Controleer vereisten:- Binaries (controleer PATH)
- Omgevingsvariabelen
- Configwaarden
- OS-compatibiliteit
Hook niet geschikt
-
Verifieer dat de hook is ingeschakeld:
- Start je gatewayproces opnieuw zodat hooks opnieuw worden geladen.
-
Controleer gateway-logs op fouten:
Handlerfouten
Controleer op TypeScript-/importfouten:Migratiegids
Van verouderde config naar detectie
Aan de slag-
Maak een hookmap:
-
Maak HOOK.md:
-
Config bijwerken:
-
Verifieer en start je gatewayproces opnieuw:
- Automatische detectie
- CLI-beheer
- Geschiktheidscontrole
- Betere documentatie
- Consistente structuur