Hooks
توفر Hooks نظامًا قابلاً للتوسعة قائمًا على الأحداث لأتمتة الإجراءات استجابةً لأوامر الوكيل والأحداث. يتم اكتشاف Hooks تلقائيًا من الأدلة، ويمكن إدارتها عبر أوامر CLI، على نحو مشابه لكيفية عمل Skills في OpenClaw.Getting Oriented
تُعد Hooks سكربتات صغيرة تعمل عند حدوث شيء ما. وهناك نوعان:- Hooks (هذه الصفحة): تعمل داخل Gateway عند إطلاق أحداث الوكيل، مثل
/newو/resetو/stop، أو أحداث دورة الحياة. - Webhooks: Webhooks خارجية عبر HTTP تتيح لأنظمة أخرى تشغيل مهام داخل OpenClaw. راجع Webhook Hooks أو استخدم
openclaw webhooksلأوامر مساعد Gmail.
- حفظ لقطة ذاكرة عند إعادة تعيين جلسة
- الاحتفاظ بسجل تدقيق للأوامر لأغراض استكشاف الأخطاء وإصلاحها أو الامتثال
- تشغيل أتمتة لاحقة عند بدء الجلسة أو انتهائها
- كتابة ملفات داخل مساحة عمل الوكيل أو استدعاء واجهات برمجة تطبيقات خارجية عند إطلاق الأحداث
نظرة عامة
يتيح لك نظام Hooks ما يلي:- حفظ سياق الجلسة في الذاكرة عند إصدار
/new - تسجيل جميع الأوامر لأغراض التدقيق
- تشغيل أتمتة مخصصة عند أحداث دورة حياة الوكيل
- توسيع سلوك OpenClaw دون تعديل الشيفرة الأساسية
البدء
الخطافات المضمنة
يأتي OpenClaw مع أربع Hooks مضمّنة يتم اكتشافها تلقائيًا:- 💾 session-memory: يحفظ سياق الجلسة في مساحة عمل الوكيل (الافتراضي
~/.openclaw/workspace/memory/) عند إصدار/new - 😈 soul-evil: يستبدل محتوى
SOUL.mdالمُحقن بـSOUL_EVIL.mdخلال نافذة تطهير أو باحتمال عشوائي - 📝 command-logger: يسجل جميع أحداث الأوامر إلى
~/.openclaw/logs/commands.log - 🚀 boot-md: يشغّل
BOOT.mdعند بدء Gateway (يتطلب تمكين Hooks الداخلية)
Onboarding
أثناء التهيئة الأولية (openclaw onboard)، سيُطلب منك تمكين Hooks الموصى بها. يقوم معالج الإعداد باكتشاف Hooks المؤهلة تلقائيًا وعرضها للاختيار.
اكتشاف الخطافات
يتم اكتشاف Hooks تلقائيًا من ثلاثة أدلة (حسب أولوية الترتيب):- Workspace hooks:
<workspace>/hooks/(لكل وكيل، أعلى أولوية) - Managed hooks:
~/.openclaw/hooks/(مثبّتة من المستخدم، مشتركة عبر مساحات العمل) - Bundled hooks:
<openclaw>/dist/hooks/bundled/(مضمّنة مع OpenClaw)
حزم الخطافات (npm/الأرشيفات)
حزم Hooks هي حزم npm قياسية تُصدّر Hook واحدة أو أكثر عبرopenclaw.hooks في
package.json. ثبّتها باستخدام:
package.json:
HOOK.md وhandler.ts (أو index.ts).
يمكن لحزم Hooks شحن تبعيات؛ وسيتم تثبيتها ضمن ~/.openclaw/hooks/<id>.
ملاحظة أمنية: يقوم openclaw hooks install بتثبيت التبعيات باستخدام npm install --ignore-scripts
(بدون تشغيل lifecycle scripts). حافظ على أشجار تبعيات حزم hook “pure JS/TS” وتجنب الحزم التي تعتمد على عمليات build عبر postinstall.
Hook Structure
HOOK.md Format
يحتوي ملفHOOK.md على بيانات وصفية في واجهة YAML الأمامية بالإضافة إلى توثيق Markdown:
Metadata Fields
يدعم كائنmetadata.openclaw ما يلي:
emoji: رمز تعبيري للعرض في CLI (مثل"💾")events: مصفوفة بالأحداث المراد الاستماع إليها (مثل["command:new", "command:reset"])export: التصدير المسمّى المراد استخدامه (الافتراضي"default")homepage: رابط التوثيقrequires: متطلبات اختياريةbins: الثنائيات المطلوبة على PATH (مثل["git", "node"])anyBins: يجب توفر واحد على الأقل من هذه الثنائياتenv: متغيرات البيئة المطلوبةconfig: مسارات التهيئة المطلوبة (مثل["workspace.dir"])os: الأنظمة الأساسية المطلوبة (مثل["darwin", "linux"])
always: تجاوز فحوصات الأهلية (قيمة منطقية)install: طرق التثبيت (بالنسبة للـ Hooks المضمّنة:[{"id":"bundled","kind":"bundled"}])
Handler Implementation
يُصدّر ملفhandler.ts دالة HookHandler:
Event Context
يتضمن كل حدث:Event Types
Command Events
تُطلق عند إصدار أوامر الوكيل:command: جميع أحداث الأوامر (مستمع عام)command:new: عند إصدار أمر/newcommand:reset: عند إصدار أمر/resetcommand:stop: عند إصدار أمر/stop
Agent Events
agent:bootstrap: قبل حقن ملفات تهيئة مساحة العمل (قد تُعدّل Hooks context.bootstrapFiles)
Gateway Events
تُطلق عند بدء Gateway:gateway:startup: بعد بدء القنوات وتحميل Hooks
Tool Result Hooks (Plugin API)
هذه Hooks ليست مستمعات لتدفق الأحداث؛ بل تتيح للإضافات تعديل نتائج الأدوات بشكل متزامن قبل أن يحفظها OpenClaw.tool_result_persist: تحويل نتائج الأداة قبل كتابتها في سجل الجلسة. يجب أن تكون متزامنة؛ أعد حمولة نتيجة الأداة المُحدّثة أوundefinedللإبقاء عليها كما هي. راجع Agent Loop.
Future Events
أنواع أحداث مخططة:session:start: عند بدء جلسة جديدةsession:end: عند انتهاء جلسةagent:error: عند مواجهة الوكيل خطأًmessage:sent: عند إرسال رسالةmessage:received: عند استلام رسالة
Creating Custom Hooks
1. Choose Location
- Workspace hooks (
<workspace>/hooks/): لكل وكيل، أعلى أولوية - Managed hooks (
~/.openclaw/hooks/): مشتركة عبر مساحات العمل
2. Create Directory Structure
3. Create HOOK.md
4. Create handler.ts
5. Enable and Test
Configuration
New Config Format (Recommended)
Per-Hook Configuration
يمكن أن تمتلك Hooks تهيئة مخصصة:Extra Directories
تحميل Hooks من أدلة إضافية:Legacy Config Format (Still Supported)
لا يزال تنسيق التهيئة القديم مدعومًا للتوافق العكسي:module مسارًا نسبيًا لمساحة العمل. يتم رفض المسارات المطلقة وأي انتقال خارج مساحة العمل.
الترحيل: استخدم نظام الاكتشاف الجديد المعتمد على الأدلة للـ Hooks الجديدة. يتم تحميل المعالِجات القديمة بعد Hooks المعتمدة على الأدلة.
CLI Commands
List Hooks
Hook Information
Check Eligibility
Enable/Disable
Bundled hook reference
session-memory
يحفظ سياق الجلسة في الذاكرة عند إصدار/new.
Events: command:new
الإعداد الأولي
Output: <workspace>/memory/YYYY-MM-DD-slug.md (الافتراضي ~/.openclaw/workspace)
What it does:
- يستخدم إدخال الجلسة قبل إعادة التعيين لتحديد النص الكامل الصحيح
- يستخرج آخر 15 سطرًا من المحادثة
- يستخدم LLM لتوليد اسم ملف وصفي (slug)
- يحفظ بيانات الجلسة الوصفية في ملف ذاكرة مؤرخ
2026-01-16-vendor-pitch.md2026-01-16-api-design.md2026-01-16-1430.md(طابع زمني احتياطي إذا فشل توليد الاسم)
bootstrap-extra-files
يستبدل محتوىSOUL.md المُحقن بـ SOUL_EVIL.md خلال نافذة تطهير أو باحتمال عشوائي.
Events: agent:bootstrap
Requirements: يجب تهيئة workspace.dir
Output: لا يتم كتابة ملفات؛ تتم عمليات الاستبدال في الذاكرة فقط.
Config:
- يتم تحليل المسارات نسبةً إلى مساحة العمل.
- يجب أن تبقى الملفات داخل مساحة العمل (يتم التحقق عبر realpath).
- يتم تحميل أسماء bootstrap الأساسية المعترف بها فقط.
- يتم الحفاظ على قائمة السماح الخاصة بالوكلاء الفرعيين (
AGENTS.mdوTOOLS.mdفقط).
command-logger
يسجل جميع أحداث الأوامر إلى ملف تدقيق مركزي. Events:command
Requirements: لا شيء
Output: ~/.openclaw/logs/commands.log
What it does:
- يلتقط تفاصيل الحدث (إجراء الأمر، الطابع الزمني، مفتاح الجلسة، معرّف المُرسِل، المصدر)
- يُلحِق السجل بملف بتنسيق JSONL
- يعمل بصمت في الخلفية
boot-md
يشغّلBOOT.md عند بدء Gateway (بعد بدء القنوات).
يجب تمكين Hooks الداخلية لتعمل.
Events: gateway:startup
Requirements: يجب تهيئة workspace.dir
What it does:
- يقرأ
BOOT.mdمن مساحة عملك - ينفّذ التعليمات عبر مُشغّل الوكيل
- يرسل أي رسائل صادرة مطلوبة عبر أداة الرسائل
Best Practices
Keep Handlers Fast
تعمل Hooks أثناء معالجة الأوامر. اجعلها خفيفة:Handle Errors Gracefully
قم دائمًا بتغليف العمليات الخطِرة:Filter Events Early
أعِد الخروج مبكرًا إذا لم يكن الحدث ذا صلة:Use Specific Event Keys
حدّد أحداثًا دقيقة في البيانات الوصفية كلما أمكن:Debugging
Enable Hook Logging
يسجّل Gateway تحميل Hooks عند بدء التشغيل:Check Discovery
اعرض جميع Hooks المكتشفة:Check Registration
في المعالج الخاص بك، سجل عند استدعائه:Verify Eligibility
تحقق من سبب عدم أهلية Hook:Testing
Gateway Logs
راقب سجلات Gateway لرؤية تنفيذ Hooks:Test Hooks Directly
اختبر المعالِجات بشكل معزول:Architecture
Core Components
src/hooks/types.ts: تعريفات الأنواع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: أوامر CLIsrc/gateway/server-startup.ts: تحميل Hooks عند بدء Gatewaysrc/auto-reply/reply/commands-core.ts: إطلاق أحداث الأوامر
Discovery Flow
Event Flow
Troubleshooting
Hook Not Discovered
-
تحقق من بنية الدليل:
-
تحقق من تنسيق HOOK.md:
-
اعرض جميع Hooks المكتشفة:
Hook Not Eligible
تحقق من المتطلبات:- الثنائيات (تحقق من PATH)
- متغيرات البيئة
- قيم التهيئة
- توافق نظام التشغيل
Hook Not Executing
-
تحقق من تمكين Hook:
- أعد تشغيل عملية Gateway لإعادة تحميل Hooks.
-
تحقق من سجلات Gateway بحثًا عن أخطاء:
Handler Errors
تحقق من أخطاء TypeScript/الاستيراد:Migration Guide
From Legacy Config to Discovery
Before:-
أنشئ دليل Hook:
-
أنشئ HOOK.md:
-
تحديث الإعداد:
-
تحقّق وأعد تشغيل عملية Gateway:
- الاكتشاف التلقائي
- إدارة عبر CLI
- التحقق من الأهلية
- توثيق أفضل
- بنية متسقة