مرجع لتحزيم Plugin (بياناتDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
package.json الوصفية)، والبيانات التعريفية (openclaw.plugin.json)، وإدخالات الإعداد، ومخططات التهيئة.
بيانات الحزمة الوصفية
يحتاجpackage.json لديك إلى حقل openclaw يوضّح لنظام Plugin ما يوفّره Plugin لديك:
- Channel plugin
- Provider plugin / ClawHub baseline
إذا نشرت Plugin خارجيًا على ClawHub، فحقلا
compat وbuild مطلوبان. توجد مقتطفات النشر المعتمدة في docs/snippets/plugin-publish/.حقول openclaw
ملفات نقطة الدخول (نسبية إلى جذر الحزمة).
إدخال خفيف خاص بالإعداد فقط (اختياري).
بيانات وصفية لفهرس القنوات لواجهات الإعداد، والاختيار، والبدء السريع، والحالة.
معرّفات المزوّدين التي يسجلها هذا Plugin.
تلميحات التثبيت:
npmSpec، وlocalPath، وdefaultChoice، وminHostVersion، وexpectedIntegrity، وallowInvalidConfigRecovery.أعلام سلوك بدء التشغيل.
openclaw.channel
openclaw.channel هو بيانات وصفية خفيفة للحزمة لاكتشاف القنوات وواجهات الإعداد قبل تحميل وقت التشغيل.
| الحقل | النوع | معناه |
|---|---|---|
id | string | معرّف القناة المعتمد. |
label | string | تسمية القناة الرئيسية. |
selectionLabel | string | تسمية أداة الاختيار/الإعداد عندما ينبغي أن تختلف عن label. |
detailLabel | string | تسمية تفاصيل ثانوية لفهارس القنوات الأكثر ثراءً وواجهات الحالة. |
docsPath | string | مسار الوثائق لروابط الإعداد والاختيار. |
docsLabel | string | تسمية بديلة تُستخدم لروابط الوثائق عندما ينبغي أن تختلف عن معرّف القناة. |
blurb | string | وصف قصير للتعريف/الفهرس. |
order | number | ترتيب الفرز في فهارس القنوات. |
aliases | string[] | أسماء مستعارة إضافية للبحث عند اختيار القناة. |
preferOver | string[] | معرّفات Plugins/قنوات ذات أولوية أدنى ينبغي أن تتقدم هذه القناة عليها. |
systemImage | string | اسم اختياري لأيقونة/صورة نظام لفهارس واجهة مستخدم القنوات. |
selectionDocsPrefix | string | نص بادئة قبل روابط الوثائق في واجهات الاختيار. |
selectionDocsOmitLabel | boolean | عرض مسار الوثائق مباشرة بدلًا من رابط وثائق ذي تسمية في نص الاختيار. |
selectionExtras | string[] | سلاسل قصيرة إضافية تُلحق بنص الاختيار. |
markdownCapable | boolean | يعلّم القناة على أنها تدعم Markdown لقرارات التنسيق الصادر. |
exposure | object | عناصر التحكم في ظهور القناة لواجهات الإعداد، والقوائم المهيأة، والوثائق. |
quickstartAllowFrom | boolean | يضم هذه القناة إلى مسار إعداد البدء السريع القياسي allowFrom. |
forceAccountBinding | boolean | يتطلب ربط الحساب صراحة حتى عند وجود حساب واحد فقط. |
preferSessionLookupForAnnounceTarget | boolean | يفضّل البحث عن الجلسة عند حل أهداف الإعلان لهذه القناة. |
exposure ما يلي:
configured: تضمين القناة في واجهات القوائم المهيأة/ذات نمط الحالةsetup: تضمين القناة في أدوات اختيار الإعداد/التهيئة التفاعليةdocs: تعليم القناة على أنها عامة الظهور في واجهات الوثائق/التنقل
لا يزال
showConfigured وshowInSetup مدعومين كأسماء مستعارة قديمة. فضّل exposure.openclaw.install
openclaw.install هو بيانات وصفية للحزمة، وليس بيانات وصفية للبيان التعريفي.
| الحقل | النوع | معناه |
|---|---|---|
clawhubSpec | string | مواصفة ClawHub المعتمدة لمسارات التثبيت/التحديث وتثبيت التعريف عند الطلب. |
npmSpec | string | مواصفة npm المعتمدة لمسارات التثبيت/التحديث الاحتياطية. |
localPath | string | مسار التطوير المحلي أو التثبيت المضمّن. |
defaultChoice | "clawhub" | "npm" | "local" | مصدر التثبيت المفضل عند توفر عدة مصادر. |
minHostVersion | string | أدنى إصدار OpenClaw مدعوم بالصيغة >=x.y.z أو >=x.y.z-prerelease. |
expectedIntegrity | string | سلسلة سلامة توزيعة npm المتوقعة، عادةً sha512-...، للتثبيتات المثبتة بإصدار محدد. |
allowInvalidConfigRecovery | boolean | يتيح لمسارات إعادة تثبيت Plugin المضمّن التعافي من إخفاقات محددة في تهيئة قديمة. |
Onboarding behavior
Onboarding behavior
يستخدم التعريف التفاعلي أيضًا
openclaw.install لواجهات التثبيت عند الطلب. إذا كان Plugin لديك يعرض خيارات مصادقة المزوّد أو بيانات وصفية لإعداد/فهرس القنوات قبل تحميل وقت التشغيل، يمكن للتعريف عرض ذلك الخيار، والمطالبة بتثبيت ClawHub أو npm أو تثبيت محلي، ثم تثبيت Plugin أو تمكينه، ثم متابعة المسار المحدد. تستخدم خيارات تعريف ClawHub clawhubSpec وتُفضّل عند وجودها؛ وتتطلب خيارات npm بيانات وصفية موثوقة للفهرس مع npmSpec للسجل؛ وتكون الإصدارات الدقيقة وexpectedIntegrity اختيارية كتثبيتات npm مثبتة. إذا كان expectedIntegrity موجودًا، تفرضه مسارات التثبيت/التحديث لـ npm. أبقِ بيانات “ما الذي يجب عرضه” الوصفية في openclaw.plugin.json وبيانات “كيفية تثبيته” الوصفية في package.json.minHostVersion enforcement
minHostVersion enforcement
إذا تم تعيين
minHostVersion، فإن كلًا من التثبيت وتحميل سجل البيانات التعريفية غير المضمّن يفرضان ذلك. تتخطى المضيفات الأقدم Plugins الخارجية؛ وتُرفض سلاسل الإصدارات غير الصالحة. يُفترض أن Plugins المصدر المضمّنة متوافقة الإصدار مع نسخة عمل المضيف.Pinned npm installs
Pinned npm installs
بالنسبة إلى تثبيتات npm المثبتة بإصدار محدد، احتفظ بالإصدار الدقيق في
npmSpec وأضف سلامة الأثر المتوقعة:allowInvalidConfigRecovery scope
allowInvalidConfigRecovery scope
لا يُعد
allowInvalidConfigRecovery تجاوزًا عامًا للتهيئات المعطلة. إنه مخصص فقط لاسترداد Plugin المضمّن ضمن نطاق ضيق، بحيث يمكن لإعادة التثبيت/الإعداد إصلاح بقايا ترقية معروفة مثل مسار Plugin مضمّن مفقود أو إدخال channels.<id> قديم لذلك Plugin نفسه. إذا كانت التهيئة معطلة لأسباب غير ذات صلة، يظل التثبيت يفشل بإغلاق آمن ويطلب من المشغّل تشغيل openclaw doctor --fix.التحميل الكامل المؤجل
يمكن لـ Plugins القنوات اختيار التحميل المؤجل باستخدام:setupEntry أثناء مرحلة بدء التشغيل السابقة للاستماع، حتى للقنوات المهيأة مسبقًا. يتم تحميل الإدخال الكامل بعد أن يبدأ Gateway بالاستماع.
إذا كان إدخال الإعداد/الإدخال الكامل لديك يسجّل طرق RPC في Gateway، فأبقها ضمن بادئة خاصة بـ Plugin. تظل مساحات أسماء الإدارة الأساسية المحجوزة (config.*، وexec.approvals.*، وwizard.*، وupdate.*) مملوكة للنواة وتُحل دائمًا إلى operator.admin.
البيان التعريفي لـ Plugin
يجب أن يشحن كل Plugin أصلي ملفopenclaw.plugin.json في جذر الحزمة. يستخدم OpenClaw هذا الملف للتحقق من التهيئة دون تنفيذ كود Plugin.
kind وchannels:
النشر على ClawHub
بالنسبة إلى حزم Plugin، استخدم أمر ClawHub الخاص بالحزمة:الاسم المستعار القديم للنشر الخاص بالـ Skills فقط مخصص للـ Skills. ينبغي لحزم Plugin استخدام
clawhub package publish دائمًا.إدخال الإعداد
ملفsetup-entry.ts هو بديل خفيف لـ index.ts يحمّله OpenClaw عندما يحتاج فقط إلى أسطح الإعداد (التهيئة الأولية، إصلاح الإعدادات، فحص القناة المعطّلة).
defineBundledChannelSetupEntry(...) من openclaw/plugin-sdk/channel-entry-contract بدلًا من defineSetupPluginEntry(...). يدعم ذلك العقد المضمّن أيضًا تصدير runtime اختياريًا بحيث تبقى وصلات وقت التشغيل أثناء الإعداد خفيفة وصريحة.
متى يستخدم OpenClaw setupEntry بدلًا من الإدخال الكامل
متى يستخدم OpenClaw setupEntry بدلًا من الإدخال الكامل
- تكون القناة معطّلة لكنها تحتاج إلى أسطح الإعداد/التهيئة الأولية.
- تكون القناة مفعّلة لكنها غير مهيأة.
- يكون التحميل المؤجل مفعّلًا (
deferConfiguredChannelFullLoadUntilAfterListen).
ما الذي يجب أن يسجله setupEntry
ما الذي يجب أن يسجله setupEntry
- كائن Channel Plugin (عبر
defineSetupPluginEntry). - أي مسارات HTTP مطلوبة قبل استماع Gateway.
- أي أساليب Gateway مطلوبة أثناء بدء التشغيل.
config.* أو update.*.ما الذي ينبغي ألا يتضمنه setupEntry
ما الذي ينبغي ألا يتضمنه setupEntry
- تسجيلات CLI.
- خدمات الخلفية.
- استيرادات وقت التشغيل الثقيلة (التشفير، SDKs).
- أساليب Gateway التي لا تكون مطلوبة إلا بعد بدء التشغيل.
استيرادات مساعدي الإعداد الضيقة
بالنسبة للمسارات الساخنة الخاصة بالإعداد فقط، فضّل منافذ مساعدي الإعداد الضيقة على مظلةplugin-sdk/setup الأوسع عندما لا تحتاج إلا إلى جزء من سطح الإعداد:
| مسار الاستيراد | استخدمه من أجل | التصديرات الرئيسية |
|---|---|---|
plugin-sdk/setup-runtime | مساعدو وقت التشغيل أثناء الإعداد الذين يبقون متاحين في setupEntry / بدء تشغيل القناة المؤجل | createPatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy |
plugin-sdk/setup-adapter-runtime | اسم مستعار متوافق مهجور؛ استخدم plugin-sdk/setup-runtime | createEnvPatchedAccountSetupAdapter |
plugin-sdk/setup-tools | مساعدو CLI/الأرشيف/المستندات للإعداد/التثبيت | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
plugin-sdk/setup الأوسع عندما تريد صندوق أدوات الإعداد المشترك الكامل، بما في ذلك مساعدو تصحيح الإعدادات مثل moveSingleAccountChannelSectionToDefaultAccount(...).
تبقى محولات تصحيح الإعداد آمنة للمسارات الساخنة عند الاستيراد. يكون البحث في سطح عقد ترقية الحساب الواحد المضمّن كسولًا، لذلك لا يؤدي استيراد plugin-sdk/setup-runtime إلى تحميل اكتشاف سطح العقد المضمّن مسبقًا قبل استخدام المحول فعليًا.
ترقية الحساب الواحد المملوكة للقناة
عندما ترقّي قناة إعدادًا علويًا ذا حساب واحد إلىchannels.<id>.accounts.*، يكون السلوك المشترك الافتراضي هو نقل القيم المرقّاة ذات نطاق الحساب إلى accounts.default.
يمكن للقنوات المضمّنة تضييق تلك الترقية أو تجاوزها عبر سطح عقد الإعداد الخاص بها:
singleAccountKeysToMove: مفاتيح علوية إضافية ينبغي نقلها إلى الحساب المرقّىnamedAccountPromotionKeys: عندما تكون الحسابات المسماة موجودة بالفعل، تُنقل هذه المفاتيح فقط إلى الحساب المرقّى؛ وتبقى مفاتيح السياسة/التسليم المشتركة في جذر القناةresolveSingleAccountPromotionTarget(...): اختيار الحساب الحالي الذي يتلقى القيم المرقّاة
Matrix هو المثال المضمّن الحالي. إذا كان هناك حساب Matrix مسمى واحد بالضبط موجود بالفعل، أو إذا كان
defaultAccount يشير إلى مفتاح غير قياسي موجود مثل Ops، فإن الترقية تحتفظ بذلك الحساب بدلًا من إنشاء إدخال accounts.default جديد.مخطط الإعدادات
يُتحقق من إعدادات Plugin مقابل JSON Schema في البيان الخاص بك. يهيئ المستخدمون Plugins عبر:api.pluginConfig أثناء التسجيل.
بالنسبة للإعداد الخاص بالقناة، استخدم قسم إعداد القناة بدلًا من ذلك:
بناء مخططات إعداد القناة
استخدمbuildChannelConfigSchema لتحويل مخطط Zod إلى غلاف ChannelConfigSchema المستخدم بواسطة عناصر الإعدادات المملوكة لـ Plugin:
openclaw.plugin.json#channelConfigs بحيث يمكن لأسطح مخطط الإعدادات، والإعداد، والواجهة فحص channels.<id> دون تحميل كود وقت التشغيل.
معالجات الإعداد
يمكن لـ Channel Plugins توفير معالجات إعداد تفاعلية لـopenclaw onboard. المعالج هو كائن ChannelSetupWizard على ChannelPlugin:
ChannelSetupWizard كلًا من credentials وtextInputs وdmPolicy وallowFrom وgroupAccess وprepare وfinalize والمزيد. راجع حزم Plugin المضمّنة (على سبيل المثال Plugin الخاص بـ Discord في src/channel.setup.ts) للحصول على أمثلة كاملة.
مطالبات allowFrom المشتركة
مطالبات allowFrom المشتركة
بالنسبة لمطالبات قائمة السماح في الرسائل المباشرة التي لا تحتاج إلا إلى التدفق القياسي
note -> prompt -> parse -> merge -> patch، فضّل مساعدي الإعداد المشتركين من openclaw/plugin-sdk/setup: createPromptParsedAllowFromForAccount(...)، وcreateTopLevelChannelParsedAllowFromPrompt(...)، وcreateNestedChannelParsedAllowFromPrompt(...).حالة إعداد القناة القياسية
حالة إعداد القناة القياسية
بالنسبة لكتل حالة إعداد القناة التي لا تختلف إلا بالملصقات والدرجات والسطور الإضافية الاختيارية، فضّل
createStandardChannelSetupStatus(...) من openclaw/plugin-sdk/setup بدلًا من إنشاء كائن status نفسه يدويًا في كل Plugin.سطح إعداد القناة الاختياري
سطح إعداد القناة الاختياري
بالنسبة لأسطح الإعداد الاختيارية التي ينبغي أن تظهر فقط في سياقات معينة، استخدم يعرّض
createOptionalChannelSetupSurface من openclaw/plugin-sdk/channel-setup:plugin-sdk/channel-setup أيضًا بنّاءي المستوى الأدنى createOptionalChannelSetupAdapter(...) وcreateOptionalChannelSetupWizard(...) عندما لا تحتاج إلا إلى نصف واحد من سطح التثبيت الاختياري ذلك.يفشل المحول/المعالج الاختياري المُنشأ بإغلاق عند عمليات كتابة الإعدادات الحقيقية. يعيدان استخدام رسالة واحدة تفيد بأن التثبيت مطلوب عبر validateInput وapplyAccountConfig وfinalize، ويضيفان رابط مستندات عندما يكون docsPath مضبوطًا.مساعدو الإعداد المدعومون بملفات تنفيذية
مساعدو الإعداد المدعومون بملفات تنفيذية
بالنسبة لواجهات إعداد مدعومة بملفات تنفيذية، فضّل المساعدين المشتركين المفوضين بدلًا من نسخ غراء الملف التنفيذي/الحالة نفسه إلى كل قناة:
createDetectedBinaryStatus(...)لكتل الحالة التي لا تختلف إلا بالملصقات والتلميحات والدرجات واكتشاف الملف التنفيذيcreateCliPathTextInput(...)لمدخلات النص المدعومة بمسارcreateDelegatedSetupWizardStatusResolvers(...)، وcreateDelegatedPrepare(...)، وcreateDelegatedFinalize(...)، وcreateDelegatedResolveConfigured(...)عندما يحتاجsetupEntryإلى التمرير إلى معالج كامل أثقل بشكل كسولcreateDelegatedTextInputShouldPrompt(...)عندما يحتاجsetupEntryفقط إلى تفويض قرارtextInputs[*].shouldPrompt
النشر والتثبيت
Plugins الخارجية: انشر إلى ClawHub، ثم ثبّت:- npm
- ClawHub فقط
- مواصفة حزمة npm
بالنسبة إلى عمليات التثبيت من مصدر npm، يثبّت
openclaw plugins install الحزمة ضمن ~/.openclaw/npm مع تعطيل سكربتات دورة الحياة. أبقِ أشجار تبعيات Plugin نقية من JS/TS وتجنب الحزم التي تتطلب عمليات بناء postinstall.بدء تشغيل Gateway لا يثبّت تبعيات Plugin. تدفقات تثبيت npm/git/ClawHub هي المسؤولة عن تسوية التبعيات؛ ويجب أن تكون تبعيات Plugins المحلية مثبتة مسبقًا.
ذات صلة
- بناء Plugins — دليل بدء خطوة بخطوة
- بيان Plugin — مرجع مخطط البيان الكامل
- نقاط دخول SDK —
definePluginEntryوdefineChannelPluginEntry