CLI commands

الإضافات

أدِر Plugins الخاصة بـ Gateway، وحزم الخطافات، والحزم المتوافقة.

الأوامر

bash
openclaw plugins list [--enabled] [--verbose] [--json]openclaw plugins search <query> [--limit <n>] [--json]openclaw plugins install <path-or-spec> [--link] [--force] [--pin] [--marketplace <source>]openclaw plugins inspect <id> [--runtime] [--json]openclaw plugins inspect --all [--runtime] [--json]openclaw plugins info <id>                    # alias for inspectopenclaw plugins enable <id>openclaw plugins disable <id>openclaw plugins uninstall <id> [--dry-run] [--keep-files] [--force]openclaw plugins update <id-or-npm-spec> | --all [--dry-run]openclaw plugins registry [--refresh] [--json]openclaw plugins doctoropenclaw plugins init <id> [--name <name>] [--type tool|provider] [--directory <path>]openclaw plugins build [--entry <path>] [--check]openclaw plugins validate [--entry <path>]openclaw plugins marketplace entries [--offline] [--feed-profile <name>] [--json]openclaw plugins marketplace list <source> [--json]openclaw plugins marketplace refresh [--feed-profile <name>] [--expected-sha256 <sha256>] [--json]

للتحقيق في بطء التثبيت أو الفحص أو إلغاء التثبيت أو تحديث السجل، شغّل الأمر مع OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1. يكتب التتبّع توقيتات المراحل إلى stderr ويحافظ على قابلية تحليل مخرجات JSON. راجع تصحيح الأخطاء.

التأليف

bash
openclaw plugins init stock-quotes --name "Stock Quotes"cd stock-quotesnpm run plugin:buildnpm run plugin:validate

ينشئ plugins init افتراضيًا Plugin أدوات بسيطًا بلغة TypeScript. الوسيطة الأولى هي معرّف Plugin، ويضبط --name اسم العرض. يستخدم OpenClaw المعرّف لدليل الإخراج الافتراضي وتسمية الحزمة. تستخدم قوالب الأدوات defineToolPlugin وتنشئ النصين البرمجيين plugin:build و plugin:validate في package.json، حيث ينفّذان البناء ثم يستدعيان openclaw plugins build/validate.

يستورد plugins build نقطة الدخول المبنية، ويقرأ بياناتها الوصفية الثابتة للأدوات، ويكتب openclaw.plugin.json، ويحافظ على توافق openclaw.extensions في package.json. يتحقق plugins validate من استمرار توافق البيان المنشأ، والبيانات الوصفية للحزمة، وتصدير نقطة الدخول الحالية. راجع Plugins الأدوات للاطلاع على سير عمل التأليف الكامل.

يكتب القالب مصدر TypeScript، لكنه ينشئ البيانات الوصفية من نقطة الدخول المبنية ./dist/index.js، ولذلك يعمل سير العمل أيضًا مع CLI المنشور. استخدم --entry <path> عندما لا تكون نقطة الدخول هي نقطة الدخول الافتراضية للحزمة. استخدم plugins build --check في CI لإخفاق العملية عندما تصبح البيانات الوصفية المنشأة قديمة من دون إعادة كتابة الملفات.

قالب الموفّر

bash
openclaw plugins init acme-models --name "Acme Models" --type providercd acme-modelsnpm installnpm run buildnpm testnpm run validate

تنشئ قوالب الموفّرين Plugin عامًا لموفّر نماذج متوافق مع OpenAI، مع تجهيز مصادقة مفتاح API، ونص برمجي npm run validate يشغّل clawhub package validate، وبيانات وصفية لحزمة ClawHub، وسير عمل GitHub Actions يُشغَّل يدويًا للنشر الموثوق مستقبلًا عبر GitHub OIDC. لا تنشئ قوالب الموفّرين Skills ولا تستخدم openclaw plugins build/validate؛ فهذه الأوامر مخصصة لمسار البيانات الوصفية المنشأة في قالب الأدوات.

قبل النشر، استبدل عنوان URL الأساسي النائب لـ API، وفهرس النماذج، ومسار الوثائق، ونص بيانات الاعتماد، ومحتوى README بتفاصيل الموفّر الحقيقية. استخدم README المنشأ للنشر الأول على ClawHub وإعداد الناشر الموثوق.

التثبيت

bash
openclaw plugins search "calendar"                      # search ClawHub pluginsopenclaw plugins install <package>                       # source auto-detectionopenclaw plugins install clawhub:<package>                # ClawHub onlyopenclaw plugins install npm:<package>                    # npm onlyopenclaw plugins install npm-pack:<path.tgz>               # local npm-pack tarballopenclaw plugins install git:github.com/<owner>/<repo>     # git repoopenclaw plugins install git:github.com/<owner>/<repo>@<ref>openclaw plugins install <path>                            # local path or archiveopenclaw plugins install -l <path>                         # link instead of copyopenclaw plugins install <plugin>@<marketplace>             # marketplace shorthandopenclaw plugins install <plugin> --marketplace <name>      # marketplace (explicit)openclaw plugins install <package> --force                  # overwrite existing installopenclaw plugins install <package> --pin                    # pin resolved npm versionopenclaw plugins install clawhub:<package> --acknowledge-clawhub-riskopenclaw plugins install <package> --dangerously-force-unsafe-install

يمكن للمشرفين الذين يختبرون عمليات التثبيت أثناء الإعداد تجاوز مصادر تثبيت Plugins التلقائية باستخدام متغيرات بيئة محمية. راجع تجاوزات تثبيت Plugin.

يستعلم plugins search من ClawHub عن حزم code-plugin و bundle-plugin القابلة للتثبيت (وليس Skills؛ استخدم openclaw skills search لها). القيمة الافتراضية لـ --limit هي 20، وبحد أقصى 100. يقرأ الأمر الفهرس البعيد فقط، من دون فحص الحالة المحلية، أو تعديل الإعدادات، أو تثبيت الحزم، أو تحميل وقت تشغيل Plugin. تتضمن النتائج اسم حزمة ClawHub، والعائلة، والقناة، والإصدار، والملخص، وتلميح تثبيت مثل openclaw plugins install clawhub:<package>.

تضمينات الإعدادات وإصلاح الإعدادات غير الصالحة

إذا كان قسم plugins لديك مدعومًا بتضمين $include من ملف واحد، فإن plugins install/update/enable/disable/uninstall يكتب مباشرةً إلى ذلك الملف المضمّن ويترك openclaw.json دون تغيير. تفشل تضمينات الجذر، ومصفوفات التضمين، والتضمينات التي تحتوي على تجاوزات شقيقة بصورة مغلقة بدلًا من تسطيحها. راجع تضمينات الإعدادات للاطلاع على البُنى المدعومة.

إذا كانت الإعدادات غير صالحة أثناء التثبيت، يفشل plugins install عادةً بصورة مغلقة ويطلب منك تشغيل openclaw doctor --fix أولًا. أثناء بدء تشغيل Gateway وإعادة التحميل الفوري، تفشل إعدادات Plugin غير الصالحة بصورة مغلقة مثل أي إعدادات أخرى غير صالحة؛ ويمكن لـ openclaw doctor --fix عزل إدخال Plugin غير الصالح. الاستثناء الوحيد الموثّق في وقت التثبيت هو مسار استرداد محدود لـ Plugin مضمّن يختار صراحةً استخدام openclaw.install.allowInvalidConfigRecovery.

استخدام --force وإعادة التثبيت مقارنةً بالتحديث

يعيد --force استخدام هدف التثبيت الحالي ويستبدل Plugin أو حزمة خطافات مثبّتة بالفعل في موضعها. استخدمه عند إعادة تثبيت المعرّف نفسه عمدًا من مسار محلي جديد، أو أرشيف، أو حزمة ClawHub، أو عنصر npm. للترقيات الاعتيادية لـ Plugin في npm متعقّب بالفعل، فضّل openclaw plugins update <id-or-npm-spec>.

إذا شغّلت plugins install لمعرّف Plugin مثبّت بالفعل، يتوقف OpenClaw ويوجّهك إلى plugins update <id-or-npm-spec> لإجراء ترقية عادية، أو إلى plugins install <package> --force عندما تريد فعلًا استبدال التثبيت الحالي من مصدر مختلف. لا يُدعم --force مع --link.

نطاق --pin

ينطبق --pin على عمليات تثبيت npm فقط ويسجّل القيمة الدقيقة المحلولة <name>@<version>. ولا يُدعم مع عمليات تثبيت git: (ثبّت المرجع في المواصفة بدلًا من ذلك، مثل git:github.com/acme/plugin@v1.2.3) أو مع --marketplace (تحتفظ عمليات تثبيت السوق ببيانات مصدر السوق الوصفية بدلًا من مواصفة npm).

--dangerously-force-unsafe-install

الخيار --dangerously-force-unsafe-install مهمل، ولا ينفّذ الآن أي إجراء. لم يعد OpenClaw يشغّل حظرًا مضمّنًا للتعليمات البرمجية الخطرة وقت التثبيت عند تثبيت Plugins.

استخدم واجهة security.installPolicy التي يملكها المشغّل عندما تكون هناك حاجة إلى سياسة تثبيت خاصة بالمضيف. خطافات before_install الخاصة بـ Plugin هي خطافات دورة حياة وقت تشغيل Plugin، وليست حد السياسة الأساسي لعمليات تثبيت CLI.

إذا كانت Plugin نشرتها على ClawHub مخفية أو محظورة نتيجة فحص السجل، فاستخدم خطوات الناشر في النشر على ClawHub. لا يطلب --dangerously-force-unsafe-install من ClawHub إعادة فحص Plugin أو جعل إصدار محظور متاحًا للعامة.

--acknowledge-clawhub-risk

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

استخدم --acknowledge-clawhub-risk فقط بعد مراجعة تحذير ClawHub واتخاذ قرار المتابعة من دون مطالبة تفاعلية. تؤدي نتائج الفحص المعلّقة أو القديمة (التي لم تصبح سليمة بعد) إلى عرض تحذير، لكنها لا تتطلب إقرارًا. تتجاوز حزم ClawHub الرسمية ومصادر Plugins المضمّنة في OpenClaw فحص ثقة الإصدار هذا بالكامل.

حزم الخطافات ومواصفات npm

يمثّل plugins install أيضًا واجهة تثبيت حزم الخطافات التي تعرض openclaw.hooks في package.json. استخدم openclaw hooks لإظهار الخطافات بعد تصفيتها وتمكين كل خطاف على حدة، وليس لتثبيت الحزم.

مواصفات npm مقتصرة على السجل (اسم الحزمة مع إصدار دقيق اختياري أو dist-tag اختياري). تُرفض مواصفات Git/URL/file ونطاقات semver. تُنفَّذ عمليات تثبيت التبعيات في مشروع npm مُدار واحد لكل Plugin باستخدام --ignore-scripts للأمان، حتى عندما تتضمن الصدفة إعدادات تثبيت npm عامة. ترث مشاريع npm المُدارة للـ Plugin إعدادات npm overrides على مستوى الحزمة في OpenClaw، لذلك تنطبق تثبيتات الأمان الخاصة بالمضيف أيضًا على تبعيات الـ Plugin المرفوعة.

استخدم npm:<package> لجعل التحليل عبر npm صريحًا. تُثبَّت أيضًا مواصفات الحزم المجرّدة مباشرةً من npm أثناء الانتقال عند الإطلاق، ما لم تطابق معرّف Plugin رسميًا.

تُحل مواصفات @openclaw/* الخام التي تطابق Plugins المضمّنة إلى النسخة المضمّنة المملوكة للصورة قبل الرجوع إلى npm. على سبيل المثال، يستخدم openclaw plugins install @openclaw/discord@2026.5.20 --pin‏ Plugin الخاص بـ Discord والمضمّن في إصدار OpenClaw الحالي بدلًا من إنشاء تجاوز npm مُدار. لفرض استخدام حزمة npm الخارجية، استخدم openclaw plugins install npm:@openclaw/discord@2026.5.20 --pin.

تبقى المواصفات المجرّدة و@latest على المسار المستقر. تُعد إصدارات التصحيح المؤرخة في OpenClaw، مثل 2026.5.3-1، مستقرةً لهذا الفحص. إذا حلّ npm أيًا من الصيغتين إلى إصدار تمهيدي، يتوقف OpenClaw ويطلب منك الاشتراك صراحةً باستخدام وسم تمهيدي (@beta/@rc) أو إصدار تمهيدي دقيق (@1.2.3-beta.4).

بالنسبة إلى عمليات تثبيت npm التي لا تتضمن إصدارًا دقيقًا (npm:<package> أو npm:<package>@latest)، يفحص OpenClaw بيانات الحزمة الوصفية التي تم حلها قبل التثبيت. إذا كانت أحدث حزمة مستقرة تتطلب API أحدث للـ Plugin في OpenClaw أو حدًا أدنى أحدث لإصدار المضيف، يفحص OpenClaw الإصدارات المستقرة الأقدم ويثبّت أحدث إصدار متوافق بدلًا منها. تظل الإصدارات الدقيقة ووسوم dist-tags الصريحة صارمة: يفشل الاختيار غير المتوافق ويطلب منك ترقية OpenClaw أو اختيار إصدار متوافق.

إذا طابقت مواصفة تثبيت مجرّدة معرّف Plugin رسميًا (مثل diffs)، يثبّت OpenClaw إدخال الكتالوج مباشرةً. لتثبيت حزمة npm تحمل الاسم نفسه، استخدم مواصفة صريحة ذات نطاق (مثل @scope/diffs).

مستودعات Git

استخدم git:<repo> للتثبيت مباشرةً من مستودع git. الصيغ المدعومة: git:github.com/owner/repo وgit:owner/repo وعناوين الاستنساخ الكاملة من نوع https:// وssh:// وgit:// وfile:// وgit@host:owner/repo.git. أضف @<ref> أو #<ref> لاستخراج فرع أو وسم أو التزام قبل التثبيت.

تستنسخ عمليات تثبيت Git المستودع إلى دليل مؤقت، وتستخرج المرجع المطلوب عند وجوده، ثم تستخدم مثبّت دليل الـ Plugin المعتاد، وبذلك تعمل عملية التحقق من البيان وسياسة تثبيت المشغّل وأعمال تثبيت مدير الحزم وسجلات التثبيت كما في عمليات تثبيت npm. تتضمن عمليات تثبيت git المسجّلة عنوان URL/المرجع للمصدر بالإضافة إلى الالتزام الذي تم حله، لكي يتمكن openclaw plugins update من إعادة حل المصدر لاحقًا.

بعد التثبيت من git، استخدم openclaw plugins inspect <id> --runtime --json للتحقق من تسجيلات وقت التشغيل، مثل أساليب Gateway وأوامر CLI. إذا سجّل الـ Plugin جذر CLI باستخدام api.registerCli، فنفّذ ذلك الأمر مباشرةً عبر CLI الجذر لـ OpenClaw، مثل openclaw demo-plugin ping.

الأرشيفات

الأرشيفات المدعومة: .zip و.tgz و.tar.gz و.tar. يجب أن تحتوي أرشيفات Plugin الأصلية لـ OpenClaw على ملف openclaw.plugin.json صالح في جذر الـ Plugin المستخرج؛ وتُرفض الأرشيفات التي لا تحتوي إلا على package.json قبل أن يكتب OpenClaw سجلات التثبيت.

استخدم npm-pack:<path.tgz> عندما يكون الملف أرشيف tarball من npm-pack وتريد مسار مشروع npm المُدار نفسه لكل Plugin والمستخدم في عمليات التثبيت من السجل، بما في ذلك التحقق من package-lock.json وفحص التبعيات المرفوعة وسجلات تثبيت npm. تظل مسارات الأرشيفات العادية تُثبَّت كأرشيفات محلية ضمن جذر امتدادات الـ Plugin.

عمليات التثبيت من سوق Claude مدعومة أيضًا.

تستخدم عمليات التثبيت من ClawHub محدِّدًا صريحًا بصيغة clawhub:<package>:

bash
openclaw plugins install clawhub:openclaw-codex-app-serveropenclaw plugins install clawhub:openclaw-codex-app-server@1.2.3

تُثبَّت مواصفات الـ Plugin المجرّدة والصالحة لـ npm من npm افتراضيًا أثناء الانتقال عند الإطلاق، ما لم تطابق معرّف Plugin رسميًا:

bash
openclaw plugins install openclaw-codex-app-server

استخدم npm: لجعل التحليل عبر npm فقط صريحًا:

bash
openclaw plugins install npm:openclaw-codex-app-serveropenclaw plugins install npm:@openclaw/discord@2026.5.20openclaw plugins install npm:@scope/plugin-name@1.0.1

يفحص OpenClaw توافق API المعلن للـ Plugin / الحد الأدنى من Gateway قبل التثبيت. عندما ينشر إصدار ClawHub المحدد أداة ClawPack، ينزّل OpenClaw ملف npm-pack بصيغة .tgz ذي الإصدار المحدد، ويتحقق من ترويسة ملخص ClawHub وملخص الأداة، ثم يثبّته عبر مسار الأرشيف المعتاد. تظل إصدارات ClawHub الأقدم التي لا تتضمن بيانات ClawPack الوصفية تُثبَّت عبر مسار التحقق القديم من أرشيف الحزمة. تحتفظ عمليات التثبيت المسجّلة ببيانات مصدر ClawHub الوصفية ونوع الأداة وتكامل npm ومجموع npm الاختباري واسم ملف tarball وحقائق ملخص ClawPack لاستخدامها في التحديثات اللاحقة. تحتفظ عمليات تثبيت ClawHub غير محددة الإصدار بمواصفة مسجّلة غير محددة الإصدار، لكي يتمكن openclaw plugins update من متابعة إصدارات ClawHub الأحدث؛ بينما تظل محددات الإصدار أو الوسم الصريحة، مثل clawhub:pkg@1.2.3 وclawhub:pkg@beta، مثبتة على ذلك المحدد.

الصيغة المختصرة للسوق

استخدم الصيغة المختصرة plugin@marketplace عندما يكون اسم السوق موجودًا في ذاكرة سجل Claude المحلية المؤقتة في ~/.claude/plugins/known_marketplaces.json:

bash
openclaw plugins marketplace list <marketplace-name>openclaw plugins install <plugin-name>@<marketplace-name>

استخدم --marketplace لتمرير مصدر السوق صراحةً:

bash
openclaw plugins install <plugin-name> --marketplace <marketplace-name>openclaw plugins install <plugin-name> --marketplace <owner/repo>openclaw plugins install <plugin-name> --marketplace https://github.com/<owner>/<repo>openclaw plugins install <plugin-name> --marketplace ./my-marketplace

مصادر السوق

  • اسم سوق معروف لدى Claude من ~/.claude/plugins/known_marketplaces.json
  • جذر سوق محلي أو مسار marketplace.json
  • صيغة مختصرة لمستودع GitHub، مثل owner/repo
  • عنوان URL لمستودع GitHub، مثل https://github.com/owner/repo
  • عنوان URL لـ git

قواعد الأسواق البعيدة

بالنسبة إلى الأسواق البعيدة المحمّلة من GitHub أو git، يجب أن تظل إدخالات الـ Plugin داخل مستودع السوق المستنسخ. يقبل OpenClaw مصادر المسارات النسبية من ذلك المستودع، ويرفض مصادر الـ Plugin من نوع HTTP(S) والمسارات المطلقة وgit وGitHub وغيرها من المصادر غير المسارية الواردة في البيانات البعيدة.

بالنسبة إلى المسارات والأرشيفات المحلية، يكتشف OpenClaw تلقائيًا:

  • Plugins الأصلية لـ OpenClaw‏ (openclaw.plugin.json)
  • الحزم المتوافقة مع Codex‏ (.codex-plugin/plugin.json)
  • الحزم المتوافقة مع Claude‏ (.claude-plugin/plugin.json، أو تخطيط مكونات Claude الافتراضي عند غياب ملف البيان هذا)
  • الحزم المتوافقة مع Cursor‏ (.cursor-plugin/plugin.json)

يجب أن تكون عمليات التثبيت المحلية المُدارة أدلة Plugins أو أرشيفات. لا تُنسخ ملفات الـ Plugin المستقلة من نوع .js و.mjs و.cjs و.ts إلى جذر الـ Plugin المُدار بواسطة plugins install، كما لا تُحمَّل بوضعها مباشرةً في ~/.openclaw/extensions أو <workspace>/.openclaw/extensions؛ إذ تحمّل جذور الاكتشاف التلقائي هذه أدلة حزم الـ Plugin أو الحزم المتوافقة، وتتخطى ملفات البرامج النصية في المستوى الأعلى باعتبارها أدوات مساعدة محلية. أدرج الملفات المستقلة صراحةً في plugins.load.paths بدلًا من ذلك.

استخدم -l/--link للإشارة إلى دليل Plugin محلي دون نسخه (يضيفه إلى plugins.load.paths):

bash
openclaw plugins install -l ./my-plugin

لا يُدعم --link مع --force (تشير Plugins المرتبطة إلى مسار المصدر مباشرةً، لذلك لا يوجد ما يمكن استبداله في موضعه)، أو --marketplace، أو عمليات تثبيت git:، ويتطلب مسارًا محليًا موجودًا بالفعل.

العرض

bash
openclaw plugins listopenclaw plugins list --enabledopenclaw plugins list --verboseopenclaw plugins list --json
--enabledboolean

اعرض Plugins الممكّنة فقط.

--verboseboolean

انتقل من عرض الجدول إلى أسطر تفاصيل لكل Plugin تتضمن بيانات التنسيق/المصدر/الأصل/الإصدار/التفعيل الوصفية.

--jsonboolean

قائمة جرد قابلة للقراءة آليًا، بالإضافة إلى تشخيصات السجل وحالة تثبيت تبعيات الحزمة.

إذا عرضت سجلات بدء التشغيل plugins.allow is empty; discovered non-bundled plugins may auto-load: ...، فنفّذ openclaw plugins list --enabled --verbose أو openclaw plugins inspect <id> باستخدام معرّف Plugin مدرج، لتأكيد معرّفات الـ Plugin ونسخ المعرّفات الموثوقة إلى plugins.allow في openclaw.json. عندما يستطيع التحذير سرد كل Plugin مكتشف، فإنه يطبع مقتطف plugins.allow جاهزًا للصق ويتضمن هذه المعرّفات مسبقًا. إذا تم تحميل Plugin دون معلومات منشأ للتثبيت/مسار التحميل، فافحص معرّف ذلك الـ Plugin، ثم إما أن تثبّت المعرّف الموثوق في plugins.allow أو تعيد تثبيت الـ Plugin من مصدر موثوق لكي يسجّل OpenClaw منشأ التثبيت.

للعمل على Plugin مضمّن داخل صورة Docker محزّمة، اربط دليل مصدر الـ Plugin بالمسار المصدر المحزّم المطابق، مثل /app/extensions/synology-chat. يكتشف OpenClaw تراكب المصدر المربوط هذا قبل /app/dist/extensions/synology-chat؛ أما دليل المصدر المنسوخ فحسب فيظل غير نشط، ولذلك تستمر عمليات التثبيت المحزّمة المعتادة في استخدام ملفات dist المترجمة.

لتصحيح أخطاء خطافات وقت التشغيل:

  • يعرض الأمر openclaw plugins inspect <id> --runtime --json الخطافات المسجّلة وبيانات التشخيص من عملية فحص لوحدة محمّلة. لا يثبّت فحص وقت التشغيل التبعيات مطلقًا؛ استخدم openclaw doctor --fix لتنظيف حالة التبعيات القديمة أو استعادة Plugins القابلة للتنزيل والمفقودة التي يشير إليها الإعداد.
  • يؤكد الأمر openclaw gateway status --deep --require-rpc عنوان URL/ملف التعريف القابل للوصول لـ Gateway، وتلميحات الخدمة/العملية، ومسار الإعداد، وسلامة RPC.
  • تتطلب خطافات المحادثة غير المضمّنة (llm_input وllm_output وbefore_model_resolve وbefore_agent_reply وbefore_agent_run وbefore_agent_finalize وagent_end) ضبط plugins.entries.<id>.hooks.allowConversationAccess=true.

فهرس Plugins

بيانات تعريف تثبيت Plugins هي حالة تديرها الآلة، وليست إعدادًا للمستخدم. تكتبها عمليات التثبيت والتحديث في قاعدة بيانات حالة SQLite المشتركة ضمن دليل حالة OpenClaw النشط. يخزّن صف installed_plugin_index بيانات تعريف installRecords الدائمة، بما في ذلك سجلات بيانات تعريف Plugins التالفة أو المفقودة، بالإضافة إلى ذاكرة تخزين مؤقتة لسجل بارد مشتقة من بيان Plugin، وتستخدمها أوامر openclaw plugins update وإلغاء التثبيت والتشخيص وسجل Plugins البارد.

عندما يرى OpenClaw سجلات plugins.installs قديمة ومشحونة ضمن الإعداد، تتعامل قراءات وقت التشغيل معها كمدخلات توافق من دون إعادة كتابة openclaw.json. تنقل عمليات الكتابة الصريحة لـ Plugin والأمر openclaw doctor --fix هذه السجلات إلى فهرس Plugins وتزيل مفتاح الإعداد عندما تكون الكتابة إلى الإعداد مسموحة؛ وإذا فشلت أي من عمليتي الكتابة، تُحتفظ بسجلات الإعداد حتى لا تضيع بيانات تعريف التثبيت.

إلغاء التثبيت

bash
openclaw plugins uninstall <id>openclaw plugins uninstall <id> --dry-runopenclaw plugins uninstall <id> --keep-filesopenclaw plugins uninstall <id> --force

يزيل uninstall سجلات Plugin من plugins.entries وفهرس Plugins المحفوظ وإدخالات قائمتي السماح/المنع لـ Plugins وإدخالات plugins.load.paths المرتبطة عند انطباق ذلك. وما لم يُضبط --keep-files، يزيل إلغاء التثبيت أيضًا دليل التثبيت المُدار والمتتبّع، ولكن فقط عندما يُحلّ مساره داخل جذر امتدادات Plugins في OpenClaw. إذا كان Plugin يمتلك حاليًا خانة memory أو contextEngine، تُعاد تلك الخانة إلى قيمتها الافتراضية (memory-core للذاكرة وlegacy لمحرك السياق).

يطبع uninstall معاينة لما سيُزال، ثم يعرض المطالبة Uninstall plugin "<id>"? قبل إجراء التغييرات. مرّر --force لتجاوز مطالبة التأكيد (وهو مفيد للبرامج النصية وعمليات التشغيل غير التفاعلية)؛ ومن دونه، يتطلب إلغاء التثبيت طرفية TTY تفاعلية. يطبع --dry-run المعاينة نفسها ثم يخرج من دون عرض مطالبة أو تغيير أي شيء.

التحديث

bash
openclaw plugins update <id-or-npm-spec>openclaw plugins update --allopenclaw plugins update <id-or-npm-spec> --dry-runopenclaw plugins update @openclaw/voice-callopenclaw plugins update openclaw-codex-app-server --acknowledge-clawhub-riskopenclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-install

تنطبق التحديثات على تثبيتات Plugins المتتبّعة في فهرس Plugins المُدار وتثبيتات حزم الخطافات المتتبّعة في hooks.internal.installs.

حل معرّف Plugin مقارنةً بمواصفة npm

عندما تمرّر معرّف Plugin، يعيد OpenClaw استخدام مواصفة التثبيت المسجّلة لذلك Plugin. يعني ذلك استمرار استخدام وسوم التوزيع المخزّنة سابقًا، مثل @beta، والإصدارات الدقيقة المثبّتة في عمليات update <id> اللاحقة.

أثناء update <id> --dry-run، تظل تثبيتات npm ذات الإصدارات الدقيقة مثبتة عليها. وإذا تمكّن OpenClaw أيضًا من حل خط الإصدار الافتراضي للحزمة في السجل وكان هذا الخط أحدث من الإصدار المثبّت المنصّب، تُبلغ عملية التشغيل التجريبي عن التثبيت وتطبع أمر تحديث الحزمة الصريح باستخدام @latest لاتباع خط الإصدار الافتراضي للسجل.

تختلف قاعدة التحديث المستهدف هذه عن مسار الصيانة الجماعي openclaw plugins update --all. تظل التحديثات الجماعية تحترم مواصفات التثبيت المتتبّعة العادية، لكن يمكن لسجلات Plugins الرسمية الموثوقة من OpenClaw المزامنة مع الهدف الحالي في الكتالوج الرسمي بدلًا من البقاء على حزمة رسمية دقيقة قديمة. استخدم update <id> المستهدف عندما تريد عمدًا إبقاء مواصفة رسمية دقيقة أو موسومة من دون تغيير.

بالنسبة إلى تثبيتات npm، يمكنك أيضًا تمرير مواصفة صريحة لحزمة npm تتضمن وسم توزيع أو إصدارًا دقيقًا. يحل OpenClaw اسم الحزمة هذا إلى سجل Plugin المتتبّع، ويحدّث Plugin المثبّت، ويسجّل مواصفة npm الجديدة للتحديثات المستقبلية المستندة إلى المعرّف.

يؤدي تمرير اسم حزمة npm من دون إصدار أو وسم أيضًا إلى حلّه إلى سجل Plugin المتتبّع. استخدم ذلك عندما يكون Plugin مثبتًا على إصدار دقيق وتريد إعادته إلى خط الإصدار الافتراضي للسجل.

تحديثات قناة الإصدار التجريبي

يعيد الأمر المستهدف openclaw plugins update <id-or-npm-spec> استخدام مواصفة Plugin المتتبّعة ما لم تمرّر مواصفة جديدة. يستخدم الأمر الجماعي openclaw plugins update --all قيمة update.channel المضبوطة عند مزامنة سجلات Plugins الرسمية الموثوقة مع هدف الكتالوج الرسمي، بحيث يمكن أن تظل تثبيتات قناة الإصدار التجريبي على خط الإصدار التجريبي بدلًا من تسويتها ضمنيًا إلى المستقر/الأحدث.

يعرف openclaw update أيضًا قناة تحديث OpenClaw النشطة: في قناة الإصدار التجريبي، تحاول سجلات Plugins ذات خط npm الافتراضي والمدعومة من ClawHub استخدام @beta أولًا. وتعود إلى المواصفة الافتراضية/الأحدث المسجّلة إذا لم يوجد إصدار تجريبي من Plugin؛ كما تعود Plugins الخاصة بـ npm عند وجود الحزمة التجريبية مع فشل التحقق من صحة تثبيتها. يُبلّغ عن هذا الرجوع كتحذير ولا يؤدي إلى فشل تحديث النواة. تظل الإصدارات الدقيقة والوسوم الصريحة مثبتة على ذلك المحدِّد في التحديثات المستهدفة.

فحوص الإصدارات وانحراف السلامة

قبل تحديث npm فعلي، يتحقق OpenClaw من إصدار الحزمة المثبّتة بمقارنته مع بيانات تعريف سجل npm. إذا تطابق الإصدار المثبّت وهوية الأثر المسجّلة بالفعل مع الهدف المحلول، يُتجاوز التحديث من دون تنزيل أو إعادة تثبيت أو إعادة كتابة openclaw.json.

عندما توجد بصمة سلامة مخزّنة وتتغير بصمة الأثر المجلوب، يتعامل OpenClaw مع ذلك بوصفه انحرافًا في أثر npm. يطبع أمر openclaw plugins update التفاعلي البصمتين المتوقعة والفعلية ويطلب التأكيد قبل المتابعة. تفشل أدوات التحديث غير التفاعلية بشكل مغلق ما لم يوفّر المستدعي سياسة متابعة صريحة.

الخيار --dangerously-force-unsafe-install عند التحديث

يُقبل --dangerously-force-unsafe-install أيضًا مع plugins update لأغراض التوافق، لكنه مهمل ولم يعد يغيّر سلوك تحديث Plugins. لا يزال بإمكان security.installPolicy الذي يضبطه المشغّل حظر التحديثات؛ ولا تنطبق خطافات before_install الخاصة بـ Plugin إلا في العمليات التي تكون فيها خطافات Plugins محمّلة.

الخيار --acknowledge-clawhub-risk عند التحديث

تخضع تحديثات Plugins المجتمعية المدعومة من ClawHub لفحص ثقة الإصدار الدقيق نفسه الذي تخضع له التثبيتات قبل تنزيل الحزمة البديلة. استخدم --acknowledge-clawhub-risk للأتمتة الخاضعة للمراجعة التي ينبغي أن تستمر عندما يتضمن إصدار ClawHub المحدد تحذير ثقة ينطوي على مخاطرة. تتجاوز حزم ClawHub الرسمية ومصادر Plugins المضمّنة في OpenClaw مطالبة الثقة بالإصدار هذه.

الفحص

bash
openclaw plugins inspect <id>openclaw plugins inspect <id> --runtimeopenclaw plugins inspect <id> --jsonopenclaw plugins inspect --all

يعرض الفحص الهوية وحالة التحميل والمصدر وإمكانات البيان وأعلام السياسة وبيانات التشخيص وبيانات تعريف التثبيت وإمكانات الحزمة وأي دعم مكتشف لخادم MCP أو LSP، من دون استيراد وقت تشغيل Plugin افتراضيًا. يتضمن ناتج JSON عقود بيان Plugin، مثل contracts.agentToolResultMiddleware وcontracts.trustedToolPolicies، كي يتمكن المشغّلون من تدقيق إعلانات الأسطح الموثوقة قبل تمكين Plugin أو إعادة تشغيله. أضف --runtime لتحميل وحدة Plugin وتضمين الخطافات والأدوات والأوامر والخدمات وأساليب Gateway ومسارات HTTP المسجّلة. يُبلغ فحص وقت التشغيل مباشرةً عن تبعيات Plugin المفقودة؛ وتبقى عمليات التثبيت والإصلاح ضمن openclaw plugins install وopenclaw plugins update وopenclaw doctor --fix.

تُثبّت أوامر CLI المملوكة لـ Plugin عادةً كمجموعات أوامر جذرية ضمن openclaw، لكن يمكن لـ Plugins أيضًا تسجيل أوامر متداخلة تحت أمر أساسي مثل openclaw nodes. بعد أن يعرض inspect --runtime أمرًا ضمن cliCommands، شغّله في المسار المدرج؛ فعلى سبيل المثال، يمكن التحقق من Plugin يسجّل demo-git باستخدام openclaw demo-git ping.

يُصنَّف كل Plugin وفق ما يسجّله فعليًا في وقت التشغيل:

الشكل المعنى
plain-capability نوع إمكانية واحد بالضبط (مثل Plugin مخصص لمزوّد فقط)
hybrid-capability أكثر من نوع إمكانية واحد (مثل النص + الكلام + الصور)
hook-only خطافات فقط، بلا إمكانات أو أدوات أو أوامر أو خدمات أو مسارات
non-capability أدوات/أوامر/خدمات، لكن بلا إمكانات

راجع أشكال Plugins لمزيد من المعلومات عن نموذج الإمكانات.

التشخيص

bash
openclaw plugins doctor

يُبلغ doctor عن أخطاء تحميل Plugins وبيانات تشخيص البيان/الاكتشاف وإشعارات التوافق ومراجع إعداد Plugins القديمة، مثل خانات Plugins المفقودة. عندما تكون شجرة التثبيت وإعداد Plugins نظيفين، يطبع No plugin issues detected.. وإذا بقي إعداد قديم مع سلامة شجرة التثبيت فيما عدا ذلك، يذكر الملخص هذا الأمر بدلًا من الإيحاء بسلامة Plugins الكاملة.

إذا كان Plugin مضبوطًا وموجودًا على القرص لكنه محظور بفحوص أمان المسار الخاصة بالمحمّل، يحتفظ التحقق من صحة الإعداد بإدخال Plugin ويُبلغ عنه بالحالة present but blocked. أصلح تشخيص Plugin المحظور السابق، مثل ملكية المسار أو أذونات الكتابة المتاحة للجميع، بدلًا من إزالة إعداد plugins.entries.<id> أو plugins.allow.

بالنسبة إلى حالات فشل شكل الوحدة، مثل غياب صادرات register/activate، أعد التشغيل مع OPENCLAW_PLUGIN_LOAD_DEBUG=1 لتضمين ملخص موجز لشكل الصادرات في ناتج التشخيص.

السجل

bash
openclaw plugins registryopenclaw plugins registry --refreshopenclaw plugins registry --json

سجل Plugins المحلي هو نموذج القراءة البارد المحفوظ في OpenClaw لهوية Plugins المثبّتة وحالة تمكينها وبيانات تعريف مصادرها وملكية مساهماتها. يمكن لبدء التشغيل العادي والبحث عن مالك المزوّد وتصنيف إعداد القنوات وجرد Plugins قراءته من دون استيراد وحدات وقت تشغيل Plugins.

استخدم plugins registry لفحص ما إذا كان السجل المحفوظ موجودًا أو حاليًا أو قديمًا. استخدم --refresh لإعادة بنائه من فهرس Plugins المحفوظ وسياسة الإعداد وبيانات تعريف البيان/الحزمة. هذا مسار إصلاح، وليس مسار تنشيط في وقت التشغيل.

يصلح openclaw doctor --fix أيضًا انحراف npm المُدار المجاور للسجل: إذا حجبت حزمة @openclaw/* يتيمة أو مستعادة، ضمن مشروع npm مُدار لـ Plugin أو جذر npm المُدار المسطح القديم، Plugin مضمّنًا، يزيل doctor تلك الحزمة القديمة ويعيد بناء السجل لكي يتحقق بدء التشغيل من البيان المضمّن. كما يعيد doctor ربط حزمة المضيف openclaw داخل Plugins المُدارة عبر npm التي تعلن peerDependencies.openclaw، بحيث تُحل استيرادات وقت التشغيل المحلية للحزمة، مثل openclaw/plugin-sdk/*، بعد التحديثات أو إصلاحات npm.

السوق

bash
openclaw plugins marketplace entriesopenclaw plugins marketplace entries --offlineopenclaw plugins marketplace entries --jsonopenclaw plugins marketplace entries --feed-profile <name>openclaw plugins marketplace entries --feed-url <url>openclaw plugins marketplace list <source>openclaw plugins marketplace list <source> --jsonopenclaw plugins marketplace refreshopenclaw plugins marketplace refresh --feed-profile <name>openclaw plugins marketplace refresh --feed-url <url>openclaw plugins marketplace refresh --expected-sha256 <sha256> --json

يسرد plugins marketplace entries الإدخالات من موجز سوق OpenClaw المُهيّأ. يحاول افتراضيًا استخدام الموجز المستضاف، ثم يعود إلى أحدث لقطة مقبولة أو إلى البيانات المضمّنة عند تعذّر ذلك. استخدم --feed-profile <name> لقراءة ملف تعريف مُهيّأ محدد، و--feed-url <url> لقراءة عنوان URL صريح لموجز مستضاف، و--offline لقراءة أحدث لقطة مقبولة دون جلب الموجز.

يحدّث plugins marketplace refresh لقطة الموجز المستضاف المُهيّأ، ويُبلغ عمّا إذا كان OpenClaw قد قبل البيانات المستضافة، أو لقطة مستضافة، أو بيانات احتياطية مضمّنة. استخدم --expected-sha256 عندما يحتاج المستدعي إلى فشل الأمر ما لم تتطابق حمولة مستضافة حديثة مع قيمة تحقق مثبّتة.

يقبل أمر السوق list مسار سوق محليًا، أو مسار marketplace.json، أو اختصار GitHub مثل owner/repo، أو عنوان URL لمستودع GitHub، أو عنوان URL لـ git. يطبع --json تسمية المصدر التي جرى حلّها، بالإضافة إلى بيان السوق المحلّل وإدخالات Plugins.

يحمّل تحديث السوق موجز سوق OpenClaw مستضافًا ويحفظ الاستجابة التي جرى التحقق منها كلقطة محلية للموجز المستضاف. من دون خيارات، يستخدم ملف تعريف الموجز الافتراضي المُهيّأ. استخدم --feed-profile <name> لتحديث ملف تعريف مُهيّأ محدد، و--feed-url <url> لتحديث عنوان URL صريح لموجز مستضاف، و--expected-sha256 <sha256> لاشتراط قيمة تحقق مطابقة للحمولة (sha256:<hex> أو ملخص سداسي عشري مجرد من 64 محرفًا)، و--json للحصول على مخرجات قابلة للقراءة آليًا. يجب ألا تتضمن عناوين URL الصريحة للموجز المستضاف بيانات اعتماد، أو سلاسل استعلام، أو أجزاء. يمكن لعمليات التحديث غير المثبّتة الإبلاغ عن نتيجة لقطة مستضافة أو بيانات احتياطية مضمّنة دون إفشال الأمر. تفشل عمليات التحديث المثبّتة ما لم تقبل حمولة مستضافة حديثة، كما تفشل عمليات التحديث المستضافة الناجحة إذا تعذّر على OpenClaw حفظ اللقطة التي جرى التحقق منها.

ذو صلة

Was this useful?
On this page

On this page