الانتقال إلى المحتوى الرئيسي

Plugins

توسّع Plugins إمكانات OpenClaw بإضافة قدرات جديدة: القنوات، ومزوّدي النماذج، والأدوات، وSkills، والكلام، والنسخ الحي الفوري، والصوت الحي الفوري، وفهم الوسائط، وتوليد الصور، وتوليد الفيديو، وweb fetch، والبحث على الويب، وغير ذلك. بعض Plugins تكون أساسية (تأتي مع OpenClaw)، وأخرى خارجية (ينشرها المجتمع على npm).

بداية سريعة

1

اطّلع على ما هو محمّل

openclaw plugins list
2

ثبّت إضافة

# من npm
openclaw plugins install @openclaw/voice-call

# من دليل محلي أو أرشيف
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
3

أعد تشغيل Gateway

openclaw gateway restart
ثم هيّئ تحت plugins.entries.\<id\>.config في ملف config الخاص بك.
إذا كنت تفضّل التحكم الأصلي داخل الدردشة، فعّل commands.plugins: true واستخدم:
/plugin install clawhub:@openclaw/voice-call
/plugin show voice-call
/plugin enable voice-call
يستخدم مسار التثبيت نفس محلّل CLI: مسار/أرشيف محلي، أو clawhub:<pkg> صريح، أو مواصفة حزمة عارية (ClawHub أولًا، ثم fallback إلى npm). إذا كان config غير صالح، يفشل التثبيت عادةً بشكل مغلق ويوجهك إلى openclaw doctor --fix. والاستثناء الوحيد للتعافي هو مسار ضيق لإعادة تثبيت الإضافات المجمعة بالنسبة إلى الإضافات التي تشترك في openclaw.install.allowInvalidConfigRecovery.

أنواع Plugins

يتعرف OpenClaw على تنسيقين للإضافات:
التنسيقكيف يعملأمثلة
أصليopenclaw.plugin.json + وحدة وقت تشغيل؛ يُنفَّذ داخل العمليةالإضافات الرسمية، وحزم npm المجتمعية
حزمةتخطيط متوافق مع Codex/Claude/Cursor؛ يُربط بميزات OpenClaw.codex-plugin/ و.claude-plugin/ و.cursor-plugin/
يظهر كلاهما تحت openclaw plugins list. راجع حِزم Plugins لمعرفة تفاصيل الحِزم. إذا كنت تكتب إضافة أصلية، فابدأ من بناء Plugins ونظرة عامة على Plugin SDK.

Plugins الرسمية

قابلة للتثبيت (npm)

Pluginالحزمةالمستندات
Matrix@openclaw/matrixMatrix
Microsoft Teams@openclaw/msteamsMicrosoft Teams
Nostr@openclaw/nostrNostr
Voice Call@openclaw/voice-callVoice Call
Zalo@openclaw/zaloZalo
Zalo Personal@openclaw/zalouserZalo Personal

أساسية (مرفقة مع OpenClaw)

anthropic وbyteplus وcloudflare-ai-gateway وgithub-copilot وgoogle، وhuggingface وkilocode وkimi-coding وminimax وmistral وqwen، وmoonshot وnvidia وopenai وopencode وopencode-go وopenrouter، وqianfan وsynthetic وtogether وvenice، وvercel-ai-gateway وvolcengine وxiaomi وzai
  • memory-core — بحث الذاكرة المجمّع (الافتراضي عبر plugins.slots.memory)
  • memory-lancedb — ذاكرة طويلة الأمد تُثبَّت عند الطلب مع استدعاء/التقاط تلقائي (اضبط plugins.slots.memory = "memory-lancedb")
elevenlabs، microsoft
  • browser — إضافة المتصفح المجمّعة لأداة المتصفح، وCLI ‏openclaw browser، وطريقة البوابة browser.request، ووقت تشغيل المتصفح، وخدمة التحكم الافتراضية للمتصفح (مفعّلة افتراضيًا؛ عطّلها قبل استبدالها)
  • copilot-proxy — جسر VS Code Copilot Proxy (معطّل افتراضيًا)
هل تبحث عن Plugins من جهات خارجية؟ راجع Plugins المجتمع.

الإعداد

{
  plugins: {
    enabled: true,
    allow: ["voice-call"],
    deny: ["untrusted-plugin"],
    load: { paths: ["~/Projects/oss/voice-call-extension"] },
    entries: {
      "voice-call": { enabled: true, config: { provider: "twilio" } },
    },
  },
}
الحقلالوصف
enabledمفتاح تشغيل عام (الافتراضي: true)
allowقائمة سماح للإضافات (اختيارية)
denyقائمة منع للإضافات (اختيارية؛ والمنع يتفوق)
load.pathsملفات/أدلة إضافات إضافية
slotsمحددات خانات حصرية (مثل memory وcontextEngine)
entries.\<id\>مفاتيح تشغيل + config لكل إضافة
تتطلب تغييرات config إعادة تشغيل للبوابة. وإذا كانت Gateway تعمل مع مراقبة config + إعادة تشغيل داخل العملية مفعّلة (وهو المسار الافتراضي لـ openclaw gateway)، فعادةً ما تُنفّذ إعادة التشغيل تلك تلقائيًا بعد لحظة من وصول كتابة config.
  • معطلة: الإضافة موجودة لكن قواعد التمكين عطّلتها. ويُحافَظ على config.
  • مفقودة: يشير config إلى معرّف إضافة لم يجده الاكتشاف.
  • غير صالحة: الإضافة موجودة لكن config الخاص بها لا يطابق schema المعلن.

الاكتشاف والأولوية

يفحص OpenClaw الإضافات بهذا الترتيب (وأول تطابق يفوز):
1

مسارات config

plugins.load.paths — مسارات صريحة إلى ملفات أو أدلة.
2

إضافات مساحة العمل

\<workspace\>/.openclaw/<plugin-root>/*.ts و \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
3

إضافات عامة

~/.openclaw/<plugin-root>/*.ts و ~/.openclaw/<plugin-root>/*/index.ts.
4

الإضافات المجمعة

مرفقة مع OpenClaw. كثير منها مفعّل افتراضيًا (مزوّدو النماذج، والكلام). وأخرى تتطلب تمكينًا صريحًا.

قواعد التمكين

  • plugins.enabled: false يعطّل جميع Plugins
  • يفوز plugins.deny دائمًا على allow
  • plugins.entries.\<id\>.enabled: false يعطّل تلك الإضافة
  • إضافات مصدر مساحة العمل تكون معطلة افتراضيًا (ويجب تمكينها صراحةً)
  • تتبع الإضافات المجمعة مجموعة التفعيل الافتراضية المضمّنة ما لم يُتجاوز ذلك
  • يمكن للخانات الحصرية فرض تفعيل الإضافة المختارة لذلك slot

خانات Plugins (فئات حصرية)

بعض الفئات حصرية (يمكن تنشيط واحدة فقط في كل مرة):
{
  plugins: {
    slots: {
      memory: "memory-core", // أو "none" للتعطيل
      contextEngine: "legacy", // أو معرّف إضافة
    },
  },
}
الخانةما الذي تتحكم فيهالافتراضي
memoryإضافة الذاكرة النشطةmemory-core
contextEngineمحرك السياق النشطlegacy (مضمّن)

مرجع CLI

openclaw plugins list                       # جرد موجز
openclaw plugins list --enabled            # الإضافات المحمّلة فقط
openclaw plugins list --verbose            # أسطر تفاصيل لكل إضافة
openclaw plugins list --json               # جرد قابل للقراءة آليًا
openclaw plugins inspect <id>              # تفاصيل متعمقة
openclaw plugins inspect <id> --json       # قابل للقراءة آليًا
openclaw plugins inspect --all             # جدول على مستوى الأسطول
openclaw plugins info <id>                 # اسم بديل لـ inspect
openclaw plugins doctor                    # تشخيصات

openclaw plugins install <package>         # تثبيت (ClawHub أولًا، ثم npm)
openclaw plugins install clawhub:<pkg>     # تثبيت من ClawHub فقط
openclaw plugins install <spec> --force    # الكتابة فوق تثبيت موجود
openclaw plugins install <path>            # تثبيت من مسار محلي
openclaw plugins install -l <path>         # ربط (من دون نسخ) للتطوير
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin      # تسجيل مواصفة npm الدقيقة التي جرى حلها
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id>             # تحديث إضافة واحدة
openclaw plugins update <id> --dangerously-force-unsafe-install
openclaw plugins update --all            # تحديث الجميع
openclaw plugins uninstall <id>          # إزالة سجلات config/التثبيت
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json

openclaw plugins enable <id>
openclaw plugins disable <id>
تأتي الإضافات المجمعة مع OpenClaw. وكثير منها مفعّل افتراضيًا (مثل مزوّدي النماذج المجمّعين، ومزوّدي الكلام المجمّعين، وإضافة المتصفح المجمعة). أما الإضافات المجمعة الأخرى فلا تزال تحتاج إلى openclaw plugins enable <id>. يقوم --force بالكتابة فوق إضافة أو حزمة hook مثبتة موجودة في مكانها. وهو غير مدعوم مع --link، الذي يعيد استخدام المسار المصدر بدل نسخه فوق هدف تثبيت مُدار. يخص --pin npm فقط. وهو غير مدعوم مع --marketplace، لأن تثبيتات marketplace تحفظ بيانات مصدر marketplace الوصفية بدل مواصفة npm. يمثل --dangerously-force-unsafe-install تجاوزًا للطوارئ لحالات الإيجابيات الكاذبة من الماسح المضمّن للشيفرة الخطرة. فهو يسمح لتثبيتات Plugins وتحديثاتها بالمتابعة بعد نتائج critical المضمّنة، لكنه مع ذلك لا يتجاوز حظر سياسة before_install الخاصة بالإضافة أو حظر فشل الفحص. تنطبق راية CLI هذه على تدفقات تثبيت/تحديث Plugins فقط. أما تثبيتات اعتماديات Skills المدعومة من Gateway فتستخدم تجاوز الطلب المطابق dangerouslyForceUnsafeInstall بدلًا من ذلك، بينما يبقى openclaw skills install تدفق تنزيل/تثبيت Skills المنفصل من ClawHub. تشارك الحِزم المتوافقة في التدفق نفسه لـ list/inspect/enable/disable الخاص بالإضافات. ويتضمن دعم وقت التشغيل الحالي Skills الخاصة بالحزم، وClaude command-skills، وقيم settings.json الافتراضية الخاصة بـ Claude، وقيم .lsp.json و lspServers المعلنة في manifest الخاصة بـ Claude، وCursor command-skills، وأدلة hook المتوافقة مع Codex. كما يبلّغ openclaw plugins inspect <id> أيضًا عن إمكانات الحزمة المكتشفة، بالإضافة إلى إدخالات MCP وLSP server المدعومة أو غير المدعومة للإضافات المدعومة بالحِزم. يمكن أن تكون مصادر marketplace اسم marketplace معروف لـ Claude من ~/.claude/plugins/known_marketplaces.json، أو جذر marketplace محليًا، أو مسار marketplace.json، أو صيغة GitHub مختصرة مثل owner/repo، أو URL لمستودع GitHub، أو URL لـ git. وبالنسبة إلى marketplaces البعيدة، يجب أن تبقى إدخالات الإضافة داخل مستودع marketplace المستنسخ وأن تستخدم مصادر مسارات نسبية فقط. راجع مرجع CLI ‏openclaw plugins للاطلاع على التفاصيل الكاملة.

نظرة عامة على Plugin API

تُصدِّر Plugins الأصلية كائن إدخال يكشف register(api). وقد لا تزال الإضافات الأقدم تستخدم activate(api) كاسم بديل قديم، لكن ينبغي للإضافات الجديدة أن تستخدم register.
export default definePluginEntry({
  id: "my-plugin",
  name: "My Plugin",
  register(api) {
    api.registerProvider({
      /* ... */
    });
    api.registerTool({
      /* ... */
    });
    api.registerChannel({
      /* ... */
    });
  },
});
يحمّل OpenClaw كائن الإدخال ويستدعي register(api) أثناء تفعيل الإضافة. ولا يزال المحمّل يعود إلى activate(api) بالنسبة إلى الإضافات الأقدم، لكن ينبغي للإضافات المجمعة والإضافات الخارجية الجديدة أن تتعامل مع register باعتباره العقد العام. طرق التسجيل الشائعة:
الطريقةما الذي تسجله
registerProviderمزوّد نموذج (LLM)
registerChannelقناة دردشة
registerToolأداة وكيل
registerHook / on(...)hooks دورة الحياة
registerSpeechProviderتحويل النص إلى كلام / STT
registerRealtimeTranscriptionProviderSTT بالبث
registerRealtimeVoiceProviderصوت حي فوري مزدوج
registerMediaUnderstandingProviderتحليل الصور/الصوت
registerImageGenerationProviderتوليد الصور
registerMusicGenerationProviderتوليد الموسيقى
registerVideoGenerationProviderتوليد الفيديو
registerWebFetchProviderمزوّد web fetch / scrape
registerWebSearchProviderبحث على الويب
registerHttpRouteنقطة نهاية HTTP
registerCommand / registerCliأوامر CLI
registerContextEngineمحرك السياق
registerServiceخدمة خلفية
سلوك حارس الـ hooks الخاصة بدورة الحياة المTyped:
  • before_tool_call: القيمة { block: true } نهائية؛ وتُتخطى المعالجات ذات الأولوية الأدنى.
  • before_tool_call: القيمة { block: false } لا تؤدي إلى شيء ولا تمحو حظرًا سابقًا.
  • before_install: القيمة { block: true } نهائية؛ وتُتخطى المعالجات ذات الأولوية الأدنى.
  • before_install: القيمة { block: false } لا تؤدي إلى شيء ولا تمحو حظرًا سابقًا.
  • message_sending: القيمة { cancel: true } نهائية؛ وتُتخطى المعالجات ذات الأولوية الأدنى.
  • message_sending: القيمة { cancel: false } لا تؤدي إلى شيء ولا تمحو إلغاءً سابقًا.
للاطلاع على السلوك الكامل المTyped للـ hooks، راجع نظرة عامة على SDK.

ذو صلة