clawhub: عندما تريد حلّ ClawHub.
المتطلبات
- استخدم Node 22.19+، أو Node 23.11+، أو Node 24+ ومدير حزم مثل
npmأوpnpm. - كن ملمًا بوحدات TypeScript ESM.
- للعمل على مكوّن إضافي مضمّن داخل المستودع، انسخ المستودع وشغّل
pnpm install. تطوير المكوّنات الإضافية من نسخة المصدر يستخدم pnpm فقط لأن OpenClaw يحمّل المكوّنات الإضافية المضمّنة من حزم مساحة العملextensions/*.
اختر شكل المكوّن الإضافي
Channel plugin
وصّل OpenClaw بمنصة مراسلة.
Provider plugin
أضف مزوّد نموذج، أو وسائط، أو بحث، أو جلب، أو كلام، أو مزوّدًا فوريًا.
CLI backend plugin
شغّل CLI ذكاء اصطناعي محليًا عبر رجوع نموذج OpenClaw الاحتياطي.
Tool plugin
سجّل أدوات الوكيل.
البدء السريع
ابنِ مكوّنًا إضافيًا بسيطًا للأدوات عبر تسجيل أداة وكيل مطلوبة واحدة. هذا هو أقصر شكل مكوّن إضافي مفيد، ويوضح الحزمة، والبيان، ونقطة الدخول، والإثبات المحلي.Create package metadata
contracts.tools حتى يتمكن OpenClaw من اكتشاف الملكية دون
تحميل كل وقت تشغيل لكل مكوّن إضافي بشراهة. اضبط activation.onStartup
بعناية. يبدأ هذا المثال عند بدء تشغيل Gateway.الأسطح الموثوقة من المضيف للمكوّنات الإضافية محكومة أيضًا بالبيان وتتطلب تمكينًا صريحًا
للمكوّنات الإضافية المثبّتة. إذا سجّل مكوّن إضافي مثبّت
api.registerAgentToolResultMiddleware(...)، فأعلن كل وقت تشغيل مستهدف في
contracts.agentToolResultMiddleware. إذا سجّل
api.registerTrustedToolPolicy(...)، فأعلن كل معرّف سياسة في
contracts.trustedToolPolicies. تحافظ هذه التصريحات على اتساق فحص وقت التثبيت
مع تسجيل وقت التشغيل.لكل حقل في البيان، راجع بيان Plugin.Register the tool
index.ts
definePluginEntry للمكوّنات الإضافية غير القنوية. تستخدم مكوّنات القنوات الإضافية
defineChannelPluginEntry.Test the runtime
بالنسبة إلى مكوّن إضافي مثبّت أو خارجي، افحص وقت التشغيل المحمّل:إذا سجّل المكوّن الإضافي أمر CLI، فشغّل ذلك الأمر أيضًا. على سبيل المثال،
يجب أن يكون لأمر تجريبي إثبات تنفيذ مثل
openclaw demo-plugin ping.بالنسبة إلى مكوّن إضافي مضمّن في هذا المستودع، يكتشف OpenClaw حزم المكوّنات
الإضافية من نسخة المصدر من مساحة عمل extensions/*. شغّل أقرب اختبار مستهدف:Test the package install
قبل نشر مكوّن إضافي جاهز كحزمة، اختبر شكل التثبيت نفسه الذي سيحصل عليه المستخدمون.
أضف أولًا خطوة بناء، ووجّه إدخالات وقت التشغيل مثل
يستخدم
openclaw.extensions إلى JavaScript مبني مثل ./dist/index.js، وتأكد
من أن npm pack يتضمن مخرجات dist/ تلك. إدخالات مصدر TypeScript
مخصصة فقط لنسخ المصدر ومسارات التطوير المحلية.بعد ذلك احزم المكوّن الإضافي وثبّت أرشيف tar باستخدام npm-pack::npm-pack: مشروع npm مُدارًا لكل مكوّن إضافي في OpenClaw، لذلك يلتقط
أخطاء اعتماديات وقت التشغيل التي قد يخفيها اختبار نسخة المصدر. إنه يثبت
شكل الحزمة والاعتماديات، وليس الثقة الرسمية المرتبطة بالفهرس.
يجب أن تكون استيرادات وقت التشغيل في dependencies أو optionalDependencies؛
الاعتماديات المتروكة فقط في devDependencies لن تُثبّت لمشروع وقت التشغيل
المُدار.لا تستخدم تثبيت أرشيف/مسار خام كإثبات نهائي لسلوك المكوّنات الإضافية الرسمية أو
ذات الامتيازات. المصادر الخام مفيدة للتصحيح المحلي، لكنها لا تثبت مسار
الاعتماديات نفسه مثل تثبيتات npm أو ClawHub. إذا كان مكوّنك الإضافي يعتمد على
حالة المكوّن الإضافي الرسمي الموثوق، فأضف إثباتًا ثانيًا عبر تثبيت رسمي مدعوم
بفهرس أو مسار حزمة منشورة يسجّل الثقة الرسمية. راجع
حل اعتماديات Plugin للحصول على تفاصيل
جذر التثبيت وملكية الاعتماديات.تسجيل الأدوات
يمكن أن تكون الأدوات مطلوبة أو اختيارية. تكون الأدوات المطلوبة متاحة دائمًا عندما يكون المكوّن الإضافي ممكّنًا. تتطلب الأدوات الاختيارية موافقة المستخدم.api.registerTool(...) في
بيان المكوّن الإضافي:
tools.allow:
parameters،
والإبلاغ عنها بالطريقة نفسها. الأدوات المسجّلة هي دوال مكتوبة الأنواع يستطيع النموذج استدعاءها
بعد اجتياز فحوصات السياسة وقائمة السماح.
تتلقى مصانع الأدوات كائن سياق يوفّره وقت التشغيل. استخدم ctx.activeModel
عندما تحتاج أداة إلى تسجيل النموذج النشط للدورة الحالية أو عرضه أو التكيّف معه.
يمكن أن يتضمن الكائن provider وmodelId وmodelRef. تعامل معه على أنه
بيانات تعريفية معلوماتية لوقت التشغيل، وليس كحد أمني ضد المشغّل المحلي،
أو كود المكوّن الإضافي المثبّت، أو وقت تشغيل OpenClaw معدّل. يجب أن تظل الأدوات المحلية
الحساسة تتطلب موافقة صريحة من المكوّن الإضافي أو المشغّل، وأن تفشل مغلقة
عندما تكون بيانات تعريف النموذج النشط مفقودة أو غير مناسبة.
يصرّح البيان بالملكية والاكتشاف؛ وما يزال التنفيذ يستدعي تطبيق الأداة المسجّل
الحي. حافظ على اتساق toolMetadata.<tool>.optional: true
مع api.registerTool(..., { optional: true }) حتى يتمكن OpenClaw من تجنب
تحميل وقت تشغيل ذلك المكوّن الإضافي حتى تُضاف الأداة صراحةً إلى قائمة السماح.
اصطلاحات الاستيراد
استورد من مسارات SDK الفرعية المركزة:api.ts و
runtime-api.ts للاستيرادات الداخلية. لا تستورد مكوّنك الإضافي نفسه عبر
مسار SDK. يجب أن تبقى المساعدات الخاصة بالمزوّد داخل حزمة المزوّد ما لم
يكن الحد الفاصل عامًا حقًا.
طرق Gateway RPC المخصصة هي نقطة دخول متقدمة. أبقها على بادئة
خاصة بالمكوّن الإضافي؛ تبقى مساحات أسماء إدارة النواة مثل config.*،
وexec.approvals.*، وoperator.admin.*، وwizard.*، وupdate.* محجوزة
وتُحلّ إلى operator.admin. جسر
openclaw/plugin-sdk/gateway-method-runtime محجوز لمسارات HTTP الخاصة بالمكوّنات
الإضافية التي تصرّح بـ contracts.gatewayMethodDispatch: ["authenticated-request"].
لخريطة الاستيراد الكاملة، راجع نظرة عامة على Plugin SDK.
قائمة التحقق قبل الإرسال
تحتوي package.json على بيانات
openclaw التعريفية الصحيحةبيان openclaw.plugin.json موجود وصالح
تستخدم نقطة الدخول
defineChannelPluginEntry أو definePluginEntryتستخدم كل الاستيرادات مسارات
plugin-sdk/<subpath> المركزةتستخدم الاستيرادات الداخلية وحدات محلية، وليس استيرادات ذاتية من SDK
تنجح الاختبارات (
pnpm test -- <bundled-plugin-root>/my-plugin/)ينجح
pnpm check (للمكوّنات الإضافية داخل المستودع)الاختبار مقابل إصدارات بيتا
- راقب وسوم إصدارات GitHub على openclaw/openclaw واشترك عبر
Watch>Releases. تبدو وسوم بيتا مثلv2026.3.N-beta.1. يمكنك أيضًا تفعيل الإشعارات لحساب OpenClaw الرسمي على X @openclaw لإعلانات الإصدارات. - اختبر Plugin الخاص بك مقابل وسم بيتا بمجرد ظهوره. عادةً ما تكون النافذة قبل الإصدار المستقر بضع ساعات فقط.
- انشر في سلسلة Plugin الخاصة بك في قناة Discord المسماة
plugin-forumبعد الاختبار، إما بـall goodأو بما تعطل. إذا لم تكن لديك سلسلة بعد، فأنشئ واحدة. - إذا تعطل شيء ما، فافتح مشكلة أو حدّث مشكلة بعنوان
Beta blocker: <plugin-name> - <summary>وطبّق تسميةbeta-blocker. ضع رابط المشكلة في سلسلتك. - افتح PR إلى
mainبعنوانfix(<plugin-id>): beta blocker - <summary>واربط المشكلة في كل من PR وسلسلة Discord الخاصة بك. لا يستطيع المساهمون تسمية PRs، لذلك يكون العنوان هو إشارة جهة PR للمشرفين والأتمتة. تُدمج العوائق التي لديها PR؛ أما العوائق التي لا تملك واحدًا فقد تُشحن رغم ذلك. يراقب المشرفون هذه السلاسل أثناء اختبار بيتا. - الصمت يعني أن كل شيء سليم. إذا فاتتك النافذة، فمن المرجح أن يصل إصلاحك في الدورة التالية.
الخطوات التالية
Channel Plugins
ابنِ Plugin لقناة مراسلة
Provider Plugins
ابنِ Plugin لمزوّد نماذج
CLI Backend Plugins
سجّل خلفية CLI محلية للذكاء الاصطناعي
SDK Overview
مرجع خريطة الاستيراد وواجهة API للتسجيل
Runtime Helpers
TTS، والبحث، ووكيل فرعي عبر api.runtime
Testing
أدوات وأنماط الاختبار
Plugin Manifest
مرجع مخطط البيان الكامل