Hooks
हुक्स एक विस्तारयोग्य इवेंट-ड्रिवन सिस्टम प्रदान करते हैं, जो एजेंट कमांड्स और इवेंट्स के जवाब में क्रियाओं को स्वचालित करता है। हुक्स को डायरेक्टरीज़ से अपने आप खोज लिया जाता है और इन्हें CLI कमांड्स के ज़रिए प्रबंधित किया जा सकता है, ठीक वैसे ही जैसे OpenClaw में स्किल्स काम करती हैं।Getting Oriented
हुक्स छोटे स्क्रिप्ट होते हैं जो किसी घटना के होने पर चलते हैं। दो प्रकार होते हैं:- Hooks (यह पृष्ठ): Gateway के अंदर चलते हैं जब एजेंट इवेंट्स ट्रिगर होते हैं, जैसे
/new,/reset,/stop, या लाइफसाइकल इवेंट्स। - वेबहुक्स: बाहरी HTTP वेबहुक्स जो अन्य सिस्टम्स को OpenClaw में काम ट्रिगर करने देते हैं। Webhook Hooks देखें या Gmail हेल्पर कमांड्स के लिए
openclaw webhooksका उपयोग करें।
- सत्र रीसेट करने पर मेमोरी स्नैपशॉट सहेजना
- समस्या-निवारण या अनुपालन के लिए कमांड्स का ऑडिट ट्रेल रखना
- सत्र शुरू या समाप्त होने पर फॉलो-अप स्वचालन ट्रिगर करना
- इवेंट्स के होने पर एजेंट वर्कस्पेस में फाइलें लिखना या बाहरी APIs कॉल करना
Overview
Hooks सिस्टम आपको यह करने देता है:/newजारी होने पर सत्र संदर्भ को मेमोरी में सहेजना- ऑडिटिंग के लिए सभी कमांड्स को लॉग करना
- एजेंट लाइफसाइकल इवेंट्स पर कस्टम स्वचालन ट्रिगर करना
- कोर कोड में संशोधन किए बिना OpenClaw के व्यवहार का विस्तार करना
Getting Started
Bundled Hooks
OpenClaw चार बंडल्ड hooks के साथ आता है जो स्वतः खोजे जाते हैं:- 💾 session-memory: जब आप
/newजारी करते हैं, तो सत्र संदर्भ को आपके एजेंट वर्कस्पेस (डिफ़ॉल्ट~/.openclaw/workspace/memory/) में सहेजता है - 📝 command-logger: सभी कमांड इवेंट्स को
~/.openclaw/logs/commands.logमें लॉग करता है - 🚀 boot-md: Gateway शुरू होने पर
BOOT.mdचलाता है (आंतरिक hooks सक्षम होना आवश्यक) - 😈 soul-evil: purge विंडो के दौरान या यादृच्छिक संभावना से injected
SOUL.mdसामग्री कोSOUL_EVIL.mdसे बदल देता है
Onboarding
ऑनबोर्डिंग (openclaw onboard) के दौरान, आपको अनुशंसित हुक्स सक्षम करने के लिए कहा जाएगा। विज़ार्ड अपने आप योग्य हुक्स खोजता है और चयन के लिए उन्हें प्रस्तुत करता है।
Hook Discovery
Hooks तीन डायरेक्टरीज़ से स्वतः खोजे जाते हैं (प्राथमिकता क्रम में):- Workspace hooks:
<workspace>/hooks/(प्रति-एजेंट, सर्वोच्च प्राथमिकता) - Managed hooks:
~/.openclaw/hooks/(उपयोगकर्ता-इंस्टॉल्ड, वर्कस्पेसेज़ में साझा) - Bundled hooks:
<openclaw>/dist/hooks/bundled/(OpenClaw के साथ वितरित)
Hook Packs (npm/archives)
हुक पैक्स मानक npm पैकेज होते हैं जोpackage.json में openclaw.hooks के माध्यम से एक या अधिक हुक्स एक्सपोर्ट करते हैं। इन्हें इस तरह इंस्टॉल करें:
package.json:
HOOK.md और handler.ts (या index.ts) होता है।
हुक पैक्स डिपेंडेंसीज़ के साथ आ सकते हैं; इन्हें ~/.openclaw/hooks/<id> के अंतर्गत इंस्टॉल किया जाएगा।
सुरक्षा नोट: openclaw hooks install निर्भरताओं को npm install --ignore-scripts के साथ इंस्टॉल करता है
(कोई lifecycle scripts नहीं)। हुक पैक की निर्भरता ट्री को “pure JS/TS” रखें और उन पैकेजों से बचें जो postinstall बिल्ड पर निर्भर करते हैं।
Hook Structure
HOOK.md Format
HOOK.md फ़ाइल में YAML frontmatter में मेटाडेटा और साथ में Markdown दस्तावेज़ीकरण होता है:
Metadata Fields
metadata.openclaw ऑब्जेक्ट निम्न का समर्थन करता है:
emoji: CLI के लिए डिस्प्ले इमोजी (उदा.,"💾")events: सुनने के लिए इवेंट्स की array (उदा.,["command:new", "command:reset"])export: उपयोग करने के लिए named export (डिफ़ॉल्ट"default")homepage: दस्तावेज़ीकरण URLrequires: वैकल्पिक आवश्यकताएँbins: PATH पर आवश्यक binaries (उदा.,["git", "node"])anyBins: इनमें से कम से कम एक binary मौजूद होनी चाहिएenv: आवश्यक environment variablesconfig: आवश्यक config paths (उदा.,["workspace.dir"])os: आवश्यक प्लेटफ़ॉर्म्स (उदा.,["darwin", "linux"])
always: पात्रता जाँच को बायपास करें (boolean)install: इंस्टॉलेशन विधियाँ (बंडल्ड hooks के लिए:[{"id":"bundled","kind":"bundled"}])
Handler Implementation
handler.ts फ़ाइल एक HookHandler फ़ंक्शन एक्सपोर्ट करती है:
Event Context
प्रत्येक इवेंट में शामिल होता है:Event Types
Command Events
एजेंट कमांड्स जारी होने पर ट्रिगर होते हैं:agent:bootstrap: वर्कस्पेस bootstrap फाइलें inject होने से पहले (hookscontext.bootstrapFilesको mutate कर सकते हैं)command:new: जब/newकमांड जारी की जाती हैcommand:reset: जब/resetकमांड जारी की जाती हैcommand:stop: जब/stopकमांड जारी की जाती है
Agent Events
agent:bootstrap: वर्कस्पेस bootstrap फाइलें inject होने से पहले (hookscontext.bootstrapFilesको mutate कर सकते हैं)
Gateway Events
Gateway के शुरू होने पर ट्रिगर होते हैं:gateway:startup: चैनल्स शुरू होने और hooks लोड होने के बाद
Tool Result Hooks (Plugin API)
ये hooks इवेंट-स्ट्रीम लिसनर्स नहीं होते; ये plugins को OpenClaw द्वारा persist किए जाने से पहले टूल परिणामों को synchronously समायोजित करने देते हैं।tool_result_persist: टूल परिणामों को सेशन ट्रांसक्रिप्ट में लिखे जाने से पहले रूपांतरित करें। सिंक्रोनस होना चाहिए; अपडेट किया गया टूल परिणाम पेलोड लौटाएँ या जैसा है वैसा रखने के लिएundefinedलौटाएँ। Agent Loop देखें।
Future Events
योजना किए गए इवेंट प्रकार:session:start: जब एक नया सत्र शुरू होता हैsession:end: जब एक सत्र समाप्त होता हैagent:error: जब कोई एजेंट त्रुटि का सामना करता हैmessage:sent: जब कोई संदेश भेजा जाता हैmessage:received: जब कोई संदेश प्राप्त होता है
Creating Custom Hooks
1. स्थान चुनें
- Workspace hooks (
<workspace>/hooks/): प्रति-एजेंट, सर्वोच्च प्राथमिकता - Managed hooks (
~/.openclaw/hooks/): वर्कस्पेसेज़ में साझा
2. डायरेक्टरी संरचना बनाएँ
3. HOOK.md बनाएँ
4. handler.ts बनाएँ
5. सक्षम करें और परीक्षण करें
Configuration
New Config Format (Recommended)
Per-Hook Configuration
Hooks के पास कस्टम विन्यास हो सकता है:Extra Directories
अतिरिक्त डायरेक्टरीज़ से hooks लोड करें:Legacy Config Format (Still Supported)
माइग्रेशन: नए हुक्स के लिए नए डिस्कवरी-आधारित सिस्टम का उपयोग करें। लीगेसी हैंडलर्स को डायरेक्टरी-आधारित हुक्स के बाद लोड किया जाता है।module एक workspace-सापेक्ष पथ होना चाहिए। workspace के बाहर के absolute पथ और traversal अस्वीकार किए जाते हैं।
माइग्रेशन: नए हुक्स के लिए नए डिस्कवरी-आधारित सिस्टम का उपयोग करें। लीगेसी हैंडलर्स को डायरेक्टरी-आधारित हुक्स के बाद लोड किया जाता है।
CLI Commands
List Hooks
Hook Information
Check Eligibility
Enable/Disable
Bundled hook reference
session-memory
Output:<workspace>/memory/YYYY-MM-DD-slug.md (डिफ़ॉल्ट ~/.openclaw/workspace)
Events: command:new
Requirements: workspace.dir कॉन्फ़िगर होना चाहिए
Output: <workspace>/memory/YYYY-MM-DD-slug.md (डिफ़ॉल्ट ~/.openclaw/workspace)
What it does:
- सही ट्रांसक्रिप्ट खोजने के लिए pre-reset सत्र प्रविष्टि का उपयोग करता है
- बातचीत की अंतिम 15 पंक्तियाँ निकालता है
- वर्णनात्मक फ़ाइलनाम slug जनरेट करने के लिए LLM का उपयोग करता है
- दिनांकित मेमोरी फ़ाइल में सत्र मेटाडेटा सहेजता है
2026-01-16-vendor-pitch.md2026-01-16-api-design.md2026-01-16-1430.md(यदि slug जनरेशन विफल हो जाए तो fallback टाइमस्टैम्प)
bootstrap-extra-files
agent:bootstrap के दौरान अतिरिक्त bootstrap फ़ाइलें (उदाहरण के लिए monorepo-स्थानीय AGENTS.md / TOOLS.md) इंजेक्ट करता है।
Events: agent:bootstrap
Requirements: workspace.dir कॉन्फ़िगर होना चाहिए
आउटपुट: कोई फ़ाइल नहीं लिखी जाती; bootstrap कॉन्टेक्स्ट केवल इन-मेमोरी संशोधित होता है।
Config:
- पथ workspace के सापेक्ष resolve किए जाते हैं।
- फ़ाइलें workspace के अंदर ही रहनी चाहिए (realpath-checked)।
- केवल मान्यता प्राप्त bootstrap basenames लोड किए जाते हैं।
- Subagent allowlist संरक्षित रहती है (
AGENTS.mdऔरTOOLS.mdही)।
command-logger
सभी कमांड इवेंट्स को एक केंद्रीकृत ऑडिट फ़ाइल में लॉग करता है। Events:command
Output: कोई फ़ाइल नहीं लिखी जाती; swapping केवल मेमोरी में होती है।
Output: ~/.openclaw/logs/commands.log
What it does:
- इवेंट विवरण कैप्चर करता है (command action, timestamp, session key, sender ID, source)
- JSONL फ़ॉर्मेट में लॉग फ़ाइल में append करता है
- बैकग्राउंड में चुपचाप चलता है
boot-md
Gateway के शुरू होने पर (चैनल्स शुरू होने के बाद)BOOT.md चलाता है।
इसे चलाने के लिए आंतरिक हुक्स सक्षम होने चाहिए।
Events: gateway:startup
आवश्यकताएँ: workspace.dir कॉन्फ़िगर होना चाहिए
What it does:
- आपके वर्कस्पेस से
BOOT.mdपढ़ता है - एजेंट रनर के माध्यम से निर्देश चलाता है
- message टूल के माध्यम से अनुरोधित outbound संदेश भेजता है
Best Practices
Keep Handlers Fast
हुक्स कमांड प्रोसेसिंग के दौरान चलते हैं। उन्हें हल्का रखें:Handle Errors Gracefully
हमेशा जोखिम भरे ऑपरेशन्स को wrap करें:Filter Events Early
इसके बजाय:Use Specific Event Keys
जहाँ संभव हो, मेटाडेटा में सटीक इवेंट्स निर्दिष्ट करें:Debugging
Enable Hook Logging
Gateway स्टार्टअप पर hook लोडिंग को लॉग करता है:Check Discovery
सभी खोजे गए hooks की सूची देखें:Check Registration
आउटपुट में missing requirements देखें।Verify Eligibility
Hook निष्पादन देखने के लिए Gateway logs मॉनिटर करें:Testing
Gateway Logs
Hook निष्पादन देखने के लिए Gateway logs मॉनिटर करें:Test Hooks Directly
अपने handlers को अलग-थलग करके परीक्षण करें:Architecture
Core Components
src/hooks/types.ts: Type परिभाषाएँsrc/hooks/workspace.ts: डायरेक्टरी स्कैनिंग और लोडिंगsrc/hooks/frontmatter.ts: HOOK.md मेटाडेटा पार्सिंगsrc/hooks/config.ts: पात्रता जाँचsrc/hooks/hooks-status.ts: स्थिति रिपोर्टिंगsrc/hooks/loader.ts: डायनेमिक मॉड्यूल लोडरsrc/cli/hooks-cli.ts: CLI कमांड्सsrc/gateway/server-startup.ts: Gateway स्टार्ट पर hooks लोड करता हैsrc/auto-reply/reply/commands-core.ts: कमांड इवेंट्स ट्रिगर करता है
Discovery Flow
Event Flow
Troubleshooting
Hook Not Discovered
-
Binaries (PATH जाँचें)
-
HOOK.md फ़ॉर्मेट सत्यापित करें:
-
Config मान
Hook Not Eligible
आवश्यकताएँ जाँचें:- Binaries (PATH जाँचें)
- Environment variables
- Config मान
- OS संगतता
Hook Not Executing
-
सुनिश्चित करें कि hook सक्षम है:
- hooks के पुनः लोड होने के लिए अपना Gateway प्रोसेस पुनः आरंभ करें।
-
त्रुटियों के लिए Gateway logs जाँचें:
Handler Errors
TypeScript/import त्रुटियों की जाँच करें:Migration Guide
From Legacy Config to Discovery
Before:-
hook डायरेक्टरी बनाएँ:
-
HOOK.md बनाएँ:
-
config अपडेट करें:
-
सत्यापित करें और अपना Gateway प्रोसेस पुनः आरंभ करें:
- स्वतः discovery
- CLI प्रबंधन
- पात्रता जाँच
- बेहतर दस्तावेज़ीकरण
- सुसंगत संरचना