Skip to main content

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, /stop of levenscyclusgebeurtenissen.
  • Webhooks: externe HTTP-webhooks waarmee andere systemen werk kunnen triggeren in OpenClaw. Zie Webhook Hooks of gebruik openclaw webhooks voor Gmail-helperopdrachten.
Hooks kunnen ook worden gebundeld in plugins; zie Plugins. Veelvoorkomende toepassingen:
  • 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
Als je een kleine TypeScript-functie kunt schrijven, kun je een hook schrijven. Hooks worden automatisch ontdekt en je schakelt ze in of uit via de CLI.

Overzicht

Het hooks-systeem stelt je in staat om:
  • Sessiecontext op te slaan in het geheugen wanneer /new wordt 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 /new uitvoert
  • 😈 soul-evil: Verwisselt geïnjecteerde SOUL.md-inhoud met SOUL_EVIL.md tijdens een purge-venster of met willekeurige kans
  • 📝 command-logger: Logt alle opdrachtevents naar ~/.openclaw/logs/commands.log
  • 🚀 boot-md: Voert BOOT.md uit wanneer de gateway start (vereist interne hooks ingeschakeld)
Beschikbare hooks weergeven:
Een hook inschakelen:
Hookstatus controleren:
Gedetailleerde informatie ophalen:

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):
  1. Werkruimte-hooks: <workspace>/hooks/ (per agent, hoogste prioriteit)
  2. Beheerde hooks: ~/.openclaw/hooks/ (door de gebruiker geïnstalleerd, gedeeld over werkruimtes)
  3. Gebundelde hooks: <openclaw>/dist/hooks/bundled/ (meegeleverd met OpenClaw)
Beheerde hookmappen kunnen óf een enkele hook zijn óf een hook pack (pakketmap). Elke hook is een map die het volgende bevat:

Hook Packs (npm/archieven)

Hook packs zijn standaard npm-pakketten die één of meer hooks exporteren via openclaw.hooks in package.json. Installeer ze met:
Npm-specificaties zijn alleen registry-gebaseerd (pakketnaam + optionele versie/tag). Git/URL/file-specificaties worden afgewezen. Voorbeeld package.json:
Elke entry verwijst naar een hookmap met 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 bestand HOOK.md bevat metadata in YAML-frontmatter plus Markdown-documentatie:

Metadatavelden

Het object metadata.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-URL
  • requires: Optionele vereisten
    • bins: Vereiste binaries op PATH (bijv. ["git", "node"])
    • anyBins: Ten minste één van deze binaries moet aanwezig zijn
    • env: Vereiste omgevingsvariabelen
    • config: 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 bestand handler.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 /new wordt uitgevoerd
  • command:reset: Wanneer de opdracht /reset wordt uitgevoerd
  • command:stop: Wanneer de opdracht /stop wordt uitgevoerd

Agentgebeurtenissen

  • agent:bootstrap: Vóórdat bootstrapbestanden in de werkruimte worden geïnjecteerd (hooks kunnen context.bootstrapFiles muteren)

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 of undefined om deze ongewijzigd te laten. Zie Agent Loop.

Toekomstige gebeurtenissen

Geplande gebeurtenistypen:
  • session:start: Wanneer een nieuwe sessie begint
  • session:end: Wanneer een sessie eindigt
  • agent:error: Wanneer een agent een fout tegenkomt
  • message:sent: Wanneer een bericht wordt verzonden
  • message: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:
Opmerking: 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:
  1. Gebruikt de pre-reset sessie-entry om het juiste transcript te vinden
  2. Extraheert de laatste 15 regels van het gesprek
  3. Gebruikt een LLM om een beschrijvende bestandsnaam-slug te genereren
  4. Slaat sessiemetadata op in een gedateerd geheugenbestand
Voorbeelduitvoer:
Voorbeelden van bestandsnamen:
  • 2026-01-16-vendor-pitch.md
  • 2026-01-16-api-design.md
  • 2026-01-16-1430.md (fallback-tijdstempel als slug-generatie mislukt)
Inschakelen:

bootstrap-extra-files

Verwisselt geïnjecteerde SOUL.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:
Voor:
  • 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.md en TOOLS.md alleen).
Inschakelen:

command-logger

Logt alle opdrachtevents naar een gecentraliseerd auditbestand. Gebeurtenissen: command Vereisten: Geen Uitvoer: ~/.openclaw/logs/commands.log Wat het doet:
  1. Legt gebeurtenisdetails vast (opdrachtactie, tijdstempel, sessiesleutel, afzender-ID, bron)
  2. Voegt toe aan het logbestand in JSONL-formaat
  3. Draait stil op de achtergrond
Voorbeeldlogregels:
Logs bekijken:
Inschakelen:

boot-md

Voert BOOT.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:
  1. Leest BOOT.md uit je werkruimte
  2. Voert de instructies uit via de agent-runner
  3. Verstuurt eventuele gevraagde uitgaande berichten via de message-tool
Inschakelen:

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:
In plaats van:

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:
Zoek in de uitvoer naar ontbrekende vereisten.

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: Typedefinities
  • src/hooks/workspace.ts: Mappen scannen en laden
  • src/hooks/frontmatter.ts: Parsing van HOOK.md-metadata
  • src/hooks/config.ts: Geschiktheidscontrole
  • src/hooks/hooks-status.ts: Statusrapportage
  • src/hooks/loader.ts: Dynamische moduleloader
  • src/cli/hooks-cli.ts: CLI-opdrachten
  • src/gateway/server-startup.ts: Laadt hooks bij het starten van de gateway
  • src/auto-reply/reply/commands-core.ts: Triggert opdrachtevents

Ontdekking Flow

Gebeurtenis flow

Problemen oplossen

Hook niet ontdekt

  1. Controleer de mapstructuur:
  2. Verifieer het HOOK.md-formaat:
  3. Alle ontdekte hooks weergeven:

Hook wordt niet uitgevoerd

Controleer vereisten:
Zoek naar ontbrekende:
  • Binaries (controleer PATH)
  • Omgevingsvariabelen
  • Configwaarden
  • OS-compatibiliteit

Hook niet geschikt

  1. Verifieer dat de hook is ingeschakeld:
  2. Start je gatewayproces opnieuw zodat hooks opnieuw worden geladen.
  3. Controleer gateway-logs op fouten:

Handlerfouten

Controleer op TypeScript-/importfouten:

Migratiegids

Van verouderde config naar detectie

Aan de slag
Na:
  1. Maak een hookmap:
  2. Maak HOOK.md:
  3. Config bijwerken:
  4. Verifieer en start je gatewayproces opnieuw:
Voordelen van migratie:
  • Automatische detectie
  • CLI-beheer
  • Geschiktheidscontrole
  • Betere documentatie
  • Consistente structuur

Zie ook