نقاط دخول المكونات الإضافية
يصدّر كل مكوّن إضافي كائن دخول افتراضيًا. ويوفر SDK ثلاث أدوات مساعدة لإنشائها.definePluginEntry
الاستيراد: openclaw/plugin-sdk/plugin-entry
لمكونات provider الإضافية، ومكونات الأدوات الإضافية، ومكونات hooks الإضافية، وأي شيء ليس
قناة مراسلة.
| الحقل | النوع | مطلوب | الافتراضي |
|---|---|---|---|
id | string | نعم | — |
name | string | نعم | — |
description | string | نعم | — |
kind | string | لا | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | لا | schema كائن فارغة |
register | (api: OpenClawPluginApi) => void | نعم | — |
- يجب أن يطابق
idملف manifest الخاص بك فيopenclaw.plugin.json. - يُستخدم
kindللفتحات الحصرية:"memory"أو"context-engine". - يمكن أن تكون
configSchemaدالة للتقييم الكسول. - يحل OpenClaw هذه الـ schema ويخزنها مؤقتًا عند أول وصول، لذلك لا تعمل أدوات بناء schema المكلفة إلا مرة واحدة.
defineChannelPluginEntry
الاستيراد: openclaw/plugin-sdk/channel-core
يغلف definePluginEntry بربط خاص بالقنوات. ويستدعي تلقائيًا
api.registerChannel({ plugin })، ويعرض نقطة وصل اختيارية لبيانات CLI الوصفية الخاصة بمساعدة الجذر،
ويقيّد registerFull بحسب وضع التسجيل.
| الحقل | النوع | مطلوب | الافتراضي |
|---|---|---|---|
id | string | نعم | — |
name | string | نعم | — |
description | string | نعم | — |
plugin | ChannelPlugin | نعم | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | لا | schema كائن فارغة |
setRuntime | (runtime: PluginRuntime) => void | لا | — |
registerCliMetadata | (api: OpenClawPluginApi) => void | لا | — |
registerFull | (api: OpenClawPluginApi) => void | لا | — |
- يُستدعى
setRuntimeأثناء التسجيل حتى تتمكن من تخزين مرجع وقت التشغيل (عادةً عبرcreatePluginRuntimeStore). ويُتخطى أثناء التقاط بيانات CLI الوصفية. - تعمل
registerCliMetadataخلال كل منapi.registrationMode === "cli-metadata"وapi.registrationMode === "full". استخدمها بوصفها المكان الرسمي لوصافات CLI المملوكة للقناة حتى تبقى المساعدة الجذرية غير مفعِّلة بينما يظل تسجيل أوامر CLI العادي متوافقًا مع تحميلات المكونات الإضافية الكاملة. - لا تعمل
registerFullإلا عندما يكونapi.registrationMode === "full". وتُتخطى أثناء التحميل الخاص بالإعداد فقط. - مثل
definePluginEntry، يمكن أن تكونconfigSchemaمصنعًا كسولًا ويقوم OpenClaw بتخزين schema المحلولة مؤقتًا عند أول وصول. - بالنسبة إلى أوامر CLI الجذرية المملوكة للمكون الإضافي، فضّل
api.registerCli(..., { descriptors: [...] })عندما تريد أن يبقى الأمر محمَّلًا كسولًا من دون أن يختفي من شجرة تحليل CLI الجذرية. وبالنسبة إلى مكونات القنوات الإضافية، فضّل تسجيل هذه الواصفات منregisterCliMetadata(...)وأبقِregisterFull(...)مركزة على العمل الخاص بوقت التشغيل فقط. - إذا كانت
registerFull(...)تسجل أيضًا طرق Gateway RPC، فأبقها ضمن بادئة خاصة بالمكون الإضافي. أما مساحات أسماء الإدارة الأساسية المحجوزة (config.*,exec.approvals.*,wizard.*,update.*) فستُحوَّل دائمًا إلىoperator.admin.
defineSetupPluginEntry
الاستيراد: openclaw/plugin-sdk/channel-core
مخصص لملف setup-entry.ts الخفيف. ويعيد فقط { plugin } من دون
ربط وقت تشغيل أو CLI.
defineSetupPluginEntry(...) بعائلات مساعدات الإعداد
الضيقة التالية:
openclaw/plugin-sdk/setup-runtimeلمساعدات الإعداد الآمنة وقت التشغيل مثل محولات setup patch الآمنة للاستيراد، ومخرجات lookup-note، وpromptResolvedAllowFrom، وsplitSetupEntries، ووكلاء الإعداد المفوضينopenclaw/plugin-sdk/channel-setupلأسطح الإعداد الخاصة بالتثبيت الاختياريopenclaw/plugin-sdk/setup-toolsلمساعدات CLI/الأرشفة/الوثائق الخاصة بالإعداد/التثبيت
وضع التسجيل
يخبركapi.registrationMode كيف جرى تحميل المكوّن الإضافي:
| الوضع | متى | ما الذي يجب تسجيله |
|---|---|---|
"full" | بدء تشغيل gateway العادي | كل شيء |
"setup-only" | قناة معطلة/غير مهيأة | تسجيل القناة فقط |
"setup-runtime" | تدفق إعداد مع توفر وقت التشغيل | تسجيل القناة بالإضافة إلى وقت التشغيل الخفيف فقط المطلوب قبل تحميل نقطة الدخول الكاملة |
"cli-metadata" | التقاط مساعدة الجذر / بيانات CLI الوصفية | واصفات CLI فقط |
defineChannelPluginEntry هذا التقسيم تلقائيًا. وإذا استخدمت
definePluginEntry مباشرة لقناة، فتحقق من الوضع بنفسك:
"setup-runtime" باعتباره النافذة التي يجب أن توجد فيها
أسطح بدء التشغيل الخاصة بالإعداد فقط من دون إعادة الدخول إلى وقت تشغيل القناة
المجمعة الكامل. ومن الملائم هنا تسجيل القنوات، ومسارات HTTP الآمنة للإعداد،
وطرق gateway الآمنة للإعداد، ومساعدات الإعداد المفوضة. أما الخدمات الخلفية الثقيلة،
ومسجلات CLI، وتهيئة SDKs الخاصة بالمزوّد/العميل فما تزال تنتمي إلى "full".
وبالنسبة إلى مسجلات CLI تحديدًا:
- استخدم
descriptorsعندما يملك المسجل أمرًا جذريًا واحدًا أو أكثر وتريد من OpenClaw تحميل وحدة CLI الفعلية بكسل عند أول استدعاء - تأكد من أن هذه الواصفات تغطي كل جذر أمر من المستوى الأعلى يعرضه المسجل
- استخدم
commandsوحدها فقط لمسارات التوافق المتحمسة
أشكال المكونات الإضافية
يصنف OpenClaw المكونات الإضافية المحمّلة بحسب سلوك التسجيل الخاص بها:| الشكل | الوصف |
|---|---|
| plain-capability | نوع إمكانة واحد (مثل مزوّد فقط) |
| hybrid-capability | عدة أنواع من الإمكانات (مثل مزوّد + speech) |
| hook-only | hooks فقط، من دون إمكانات |
| non-capability | أدوات/أوامر/خدمات لكن من دون إمكانات |
openclaw plugins inspect <id> لرؤية شكل المكوّن الإضافي.
ذو صلة
- SDK Overview — واجهة API الخاصة بالتسجيل ومرجع subpath
- Runtime Helpers —
api.runtimeوcreatePluginRuntimeStore - Setup and Config — manifest، ونقطة دخول الإعداد، والتحميل المؤجل
- Channel Plugins — بناء كائن
ChannelPlugin - Provider Plugins — تسجيل المزوّد وhooks