Skip to main content
توسّع Plugins قدرات OpenClaw دون تغيير النواة. يمكن أن يضيف Plugin قناة مراسلة، أو موفّر نموذج، أو واجهة CLI خلفية محلية، أو أداة وكيل، أو خطافًا، أو موفّر وسائط، أو قدرة أخرى يملكها Plugin. لا يلزم إضافة Plugin خارجي إلى مستودع OpenClaw. انشر الحزمة على ClawHub، ويمكن للمستخدمين تثبيتها باستخدام:
تظل مواصفات الحزم المجرّدة تُثبَّت من npm خلال مرحلة الانتقال عند الإطلاق. استخدم البادئة clawhub: عندما تريد الحل عبر ClawHub.

المتطلبات

  • Node 22.22.3+، أو Node 24.15+، أو Node 25.9+، وnpm أو pnpm.
  • وحدات TypeScript ESM.
  • للعمل على Plugin مضمّن داخل المستودع، استنسخ المستودع وشغّل pnpm install. يقتصر تطوير Plugins من نسخة المصدر على pnpm لأن OpenClaw يكتشف Plugins المضمّنة من حزم مساحة العمل extensions/*.

اختيار بنية Plugin

Plugin قناة

صِل OpenClaw بمنصة مراسلة.

Plugin موفّر

أضف موفّر نموذج أو وسائط أو بحث أو جلب أو كلام أو وقت فعلي.

Plugin واجهة CLI خلفية

شغّل CLI محلية للذكاء الاصطناعي عبر احتياط نموذج OpenClaw.

Plugin أداة

سجّل أدوات الوكيل.

البدء السريع

أنشئ Plugin أداة بسيطًا بتسجيل أداة وكيل واحدة مطلوبة. هذه هي أقصر بنية مفيدة لـ Plugin، وتشمل الحزمة والبيان ونقطة الدخول والتحقق المحلي.
1

إنشاء بيانات الحزمة الوصفية

ينبغي أن تشير إدخالات وقت التشغيل في Plugins الخارجية المنشورة إلى ملفات JavaScript المبنية. راجع نقاط دخول SDK للاطلاع على عقد نقطة الدخول الكامل.يحتاج كل Plugin إلى بيان، حتى دون إعدادات. يجب أن تظهر أدوات وقت التشغيل في contracts.tools لكي يتمكن OpenClaw من اكتشاف الملكية دون تحميل وقت تشغيل كل Plugin مسبقًا. عيّن activation.onStartup عن قصد؛ إذ يُحمَّل هذا المثال عند بدء تشغيل Gateway.تخضع أسطح Plugins الموثوقة من المضيف أيضًا لقيود البيان، وتتطلب تصريحًا صريحًا في Plugins المثبّتة: يتطلب api.registerAgentToolResultMiddleware(...) إدراج كل وقت تشغيل مستهدف في contracts.agentToolResultMiddleware، ويتطلب api.registerTrustedToolPolicy(...) إدراج كل معرّف سياسة في contracts.trustedToolPolicies. تحافظ هذه التصريحات على اتساق الفحص وقت التثبيت مع التسجيل وقت التشغيل.للاطلاع على كل حقل في البيان، راجع بيان Plugin.
2

تسجيل الأداة

index.ts
استخدم definePluginEntry لـ Plugins غير الخاصة بالقنوات. أما Plugins القنوات فتستخدم defineChannelPluginEntry من openclaw/plugin-sdk/core بدلًا منه.
3

اختبار وقت التشغيل

بالنسبة إلى Plugin مثبّت أو خارجي، افحص وقت التشغيل المحمّل:
إذا كان Plugin يسجّل أمر CLI، فشغّل ذلك الأمر أيضًا وتحقق من المخرجات، مثل openclaw demo-plugin ping.بالنسبة إلى Plugin مضمّن في هذا المستودع، يكتشف OpenClaw حزم Plugins من نسخة المصدر ضمن مساحة العمل extensions/*. شغّل أقرب اختبار مستهدف:
4

اختبار تثبيت الحزمة

قبل نشر Plugin جاهز للحزم، اختبر بنية التثبيت نفسها التي سيحصل عليها المستخدمون. أضف أولًا خطوة بناء، ووجّه إدخالات وقت التشغيل مثل openclaw.extensions إلى JavaScript مبني مثل ./dist/index.js، وتأكد من أن npm pack يتضمن مخرجات dist/. إدخالات مصدر TypeScript مخصصة فقط لنسخ المصدر ومسارات التطوير المحلية.بعد ذلك، حزّم Plugin وثبّت ملف tar باستخدام npm-pack::
يستخدم npm-pack: مشروع npm الذي يديره OpenClaw لكل Plugin، ولذلك يكتشف أخطاء تبعيات وقت التشغيل التي قد يخفيها الاختبار من نسخة المصدر. وهو يثبت بنية الحزمة والتبعيات، وليس الثقة الرسمية المرتبطة بالكتالوج. يجب أن تكون استيرادات وقت التشغيل في dependencies أو optionalDependencies؛ ولن تُثبَّت التبعيات الموجودة فقط في devDependencies ضمن مشروع وقت التشغيل المُدار.لا تستخدم تثبيت أرشيف أو مسار خام بوصفه التحقق النهائي من سلوك Plugin الرسمي أو ذي الامتيازات. تفيد المصادر الخام في تصحيح الأخطاء محليًا، لكنها لا تثبت مسار التبعيات نفسه الذي تثبته عمليات التثبيت عبر npm أو ClawHub. إذا كان Plugin يعتمد على حالة Plugin رسمي موثوق، فأضف تحققًا ثانيًا عبر تثبيت رسمي مدعوم بكتالوج أو مسار حزمة منشورة يسجّل الثقة الرسمية. راجع حل تبعيات Plugin للاطلاع على تفاصيل جذر التثبيت وملكية التبعيات.
5

النشر

تحقّق من الحزمة قبل نشرها:
توجد مقتطفات حزم ClawHub القياسية في docs/snippets/plugin-publish/.
6

التثبيت

ثبّت الحزمة المنشورة عبر ClawHub:

تسجيل الأدوات

يمكن أن تكون الأدوات مطلوبة أو اختيارية. تتوفر الأدوات المطلوبة دائمًا عندما يكون Plugin مفعّلًا. أما الأدوات الاختيارية فتحتاج إلى اشتراك صريح من المستخدم قبل أن يحمّل OpenClaw وقت تشغيل Plugin المالك. تتلقى مصانع الأدوات سياق وقت تشغيل موثوقًا، بما في ذلك deliveryContext، وnativeChannelId لمحادثة المنصة النشطة عند توفرها، و requesterSenderId.
يجب أيضًا التصريح عن كل أداة مسجّلة باستخدام api.registerTool(...) في بيان Plugin:
يشترك المستخدمون باستخدام tools.allow:
تتحكم الأدوات الاختيارية في عرض الأداة للنموذج من عدمه. استخدم طلبات أذونات Plugin عندما ينبغي لأداة أو خطاف طلب الموافقة بعد أن يختاره النموذج وقبل تنفيذ الإجراء. استخدم الأدوات الاختيارية للآثار الجانبية أو الملفات الثنائية غير المعتادة أو القدرات التي لا ينبغي عرضها افتراضيًا. يجب ألا تتعارض أسماء الأدوات مع أسماء أدوات النواة؛ إذ تُتخطى التعارضات ويُبلّغ عنها في تشخيصات Plugin. كما تُتخطى التسجيلات المشوهة ويُبلّغ عنها بالطريقة نفسها: غياب قيمة غير فارغة لـ name، أو كون execute غير دالة، أو وجود واصف أداة دون كائن parameters. تتلقى مصانع الأدوات كائن سياق يوفّره وقت التشغيل. استخدم ctx.activeModel عندما تحتاج الأداة إلى تسجيل النموذج النشط للدور الحالي أو عرضه أو التكيّف معه؛ ويمكن أن يتضمن provider وmodelId وmodelRef. تعامل معه على أنه بيانات وصفية معلوماتية لوقت التشغيل، وليس حدًا أمنيًا في مواجهة المشغّل المحلي أو شيفرة Plugin المثبّت أو وقت تشغيل OpenClaw المعدّل. ومع ذلك، ينبغي أن تتطلب الأدوات المحلية الحساسة اشتراكًا صريحًا من Plugin أو المشغّل، وأن تفشل بشكل مغلق عند غياب البيانات الوصفية للنموذج النشط أو عدم ملاءمتها. يصرّح البيان بالملكية والاكتشاف؛ لكن التنفيذ يظل يستدعي تطبيق الأداة المسجّل والحالي. حافظ على اتساق toolMetadata.<tool>.optional: true مع api.registerTool(..., { optional: true }) كي يتمكن OpenClaw من تجنّب تحميل وقت تشغيل ذلك Plugin إلى أن تُدرج الأداة صراحةً في قائمة السماح.

اصطلاحات الاستيراد

استورد من المسارات الفرعية المركزة في SDK:
لا تستورد من الحزمة الجذرية المهملة:
داخل حزمة Plugin، استخدم ملفات الحزمة المحلية مثل api.ts و runtime-api.ts لعمليات الاستيراد الداخلية. لا تستورد Plugin الخاص بك عبر مسار SDK. ينبغي أن تبقى الأدوات المساعدة الخاصة بالموفّر في حزمة الموفّر ما لم تكن الواجهة عامة فعلًا. طرق RPC المخصصة في Gateway هي نقطة دخول متقدمة. احتفظ بها تحت بادئة خاصة بـ Plugin؛ إذ تظل نطاقات إدارة النواة مثل config.* وexec.approvals.* وoperator.admin.* وwizard.* وupdate.* محجوزة وتُحل إلى operator.admin. ويُحجز جسر openclaw/plugin-sdk/gateway-method-runtime لمسارات HTTP الخاصة بـ Plugins التي تصرّح عن contracts.gatewayMethodDispatch: ["authenticated-request"]. للاطلاع على خريطة الاستيراد الكاملة، راجع نظرة عامة على SDK الخاص بـ Plugin.

قائمة التحقق قبل الإرسال

يحتوي package.json على بيانات openclaw الوصفية الصحيحة
بيان openclaw.plugin.json موجود وصالح
تستخدم نقطة الدخول defineChannelPluginEntry أو definePluginEntry
تستخدم جميع الاستيرادات مسارات plugin-sdk/<subpath> المركزة
تستخدم الاستيرادات الداخلية الوحدات المحلية، لا الاستيراد الذاتي عبر SDK
تنجح الاختبارات (pnpm test <bundled-plugin-root>/my-plugin/)
ينجح pnpm check (لـ Plugins داخل المستودع)

الاختبار مقابل الإصدارات التجريبية

  1. راقب إصدارات openclaw/openclaw (Watch > Releases). تبدو وسوم الإصدار التجريبي مثل v2026.3.N-beta.1. يمكنك أيضًا متابعة @openclaw على X للاطلاع على إعلانات الإصدارات.
  2. اختبر Plugin الخاص بك باستخدام وسم الإصدار التجريبي فور ظهوره. عادةً لا تتجاوز الفترة السابقة للإصدار المستقر بضع ساعات.
  3. انشر في سلسلة Plugin الخاص بك ضمن قناة Discord ‏plugin-forum (discord.gg/clawd) بعد الاختبار، مع ذكر إما all good أو ما تعطل. أنشئ سلسلة إذا لم تكن لديك واحدة بعد.
  4. إذا تعطل شيء ما، فافتح مشكلة أو حدّث مشكلة بعنوان Beta blocker: <plugin-name> - <summary> وطبّق التصنيف beta-blocker. أدرج رابط المشكلة في سلسلتك.
  5. افتح PR إلى main بعنوان fix(<plugin-id>): beta blocker - <summary>، وأدرج رابط المشكلة في كلٍ من PR وسلسلة Discord الخاصة بك. لا يمكن للمساهمين وضع تصنيفات على طلبات PR، لذا يُعد العنوان إشارة طلب PR للمشرفين وعمليات الأتمتة. تُدمج العوائق التي لها PR؛ أما العوائق التي ليس لها PR فقد تُضمَّن في الإصدار رغم ذلك.
  6. الصمت يعني أن كل شيء سليم. عادةً ما يعني تفويت هذه الفترة أن إصلاحك سيُدمج في الدورة التالية.

الخطوات التالية

Plugins قنوات المراسلة

أنشئ Plugin لقناة مراسلة

Plugins المزوّدين

أنشئ Plugin لمزوّد نماذج

Plugins الواجهة الخلفية لـ CLI

سجّل واجهة خلفية محلية للذكاء الاصطناعي عبر CLI

نظرة عامة على SDK

مرجع خريطة الاستيراد وواجهة API للتسجيل

أدوات التشغيل المساعدة

تحويل النص إلى كلام والبحث والوكيل الفرعي عبر api.runtime

الاختبار

أدوات الاختبار وأنماطه

بيان Plugin

المرجع الكامل لمخطط البيان

ذو صلة