CLI commands

تحديث

openclaw update

حدّث OpenClaw بأمان وبدّل بين قنوات stable/beta/dev.

إذا ثبّت عبر npm/pnpm/bun (تثبيت عام، بلا بيانات git metadata)، فتتم التحديثات عبر مسار مدير الحزم في التحديث.

الاستخدام

openclaw update
openclaw update status
openclaw update wizard
openclaw update --channel beta
openclaw update --channel dev
openclaw update --tag beta
openclaw update --tag main
openclaw update --dry-run
openclaw update --no-restart
openclaw update --yes
openclaw update --json
openclaw --update

الخيارات

  • --no-restart: تخطَّ إعادة تشغيل خدمة Gateway بعد تحديث ناجح. تحديثات مدير الحزم التي تعيد تشغيل Gateway تتحقق من أن الخدمة المعاد تشغيلها تبلغ عن النسخة المحدّثة المتوقعة قبل نجاح الأمر.
  • --channel <stable|beta|dev>: عيّن قناة التحديث (git + npm؛ تُحفظ في الإعدادات).
  • --tag <dist-tag|version|spec>: تجاوز هدف الحزمة لهذا التحديث فقط. في تثبيتات الحزم، يشير main إلى github:openclaw/openclaw#main.
  • --dry-run: عاين إجراءات التحديث المخططة (مسار القناة/الوسم/الهدف/إعادة التشغيل) من دون كتابة الإعدادات أو التثبيت أو مزامنة Plugins أو إعادة التشغيل.
  • --json: اطبع JSON قابلًا للقراءة آليًا من نوع UpdateRunResult، بما في ذلك postUpdate.plugins.warnings عندما تحتاج Plugins المُدارة التالفة أو غير القابلة للتحميل إلى إصلاح بعد نجاح تحديث النواة، وpostUpdate.plugins.integrityDrifts عند اكتشاف اختلاف في أثر حزمة npm الخاصة بـ Plugin أثناء مزامنة Plugin بعد التحديث.
  • --timeout <seconds>: مهلة لكل خطوة (الافتراضي 1800 ثانية).
  • --yes: تخطَّ مطالبات التأكيد (مثل تأكيد الرجوع إلى إصدار أقدم).

لا يحتوي openclaw update على علم --verbose. استخدم --dry-run لمعاينة إجراءات القناة/الوسم/التثبيت/إعادة التشغيل المخططة، و--json للنتائج القابلة للقراءة آليًا، وopenclaw update status --json عندما تحتاج فقط إلى تفاصيل القناة والتوفر. إذا كنت تصحح سجلات Gateway حول تحديث ما، فإن إسهاب الطرفية ومستوى سجل الملف منفصلان: يؤثر --verbose في Gateway على مخرجات الطرفية/WebSocket، بينما تتطلب سجلات الملفات logging.level: "debug" أو "trace" في الإعدادات. راجع تسجيل Gateway.

update status

اعرض قناة التحديث النشطة + وسم/فرع/SHA في git (لنسخ المصدر)، بالإضافة إلى توفر التحديث.

openclaw update status
openclaw update status --json
openclaw update status --timeout 10

الخيارات:

  • --json: اطبع JSON للحالة قابلًا للقراءة آليًا.
  • --timeout <seconds>: مهلة الفحوصات (الافتراضي 3 ثوانٍ).

update wizard

مسار تفاعلي لاختيار قناة تحديث وتأكيد ما إذا كان يجب إعادة تشغيل Gateway بعد التحديث (الافتراضي هو إعادة التشغيل). إذا اخترت dev من دون نسخة git checkout، فسيعرض إنشاء واحدة.

الخيارات:

  • --timeout <seconds>: مهلة كل خطوة تحديث (الافتراضي 1800)

ماذا يفعل

عند تبديل القنوات صراحةً (--channel ...)، يحافظ OpenClaw أيضًا على اتساق طريقة التثبيت:

  • dev → يضمن وجود نسخة git checkout (الافتراضي: ~/openclaw، ويمكن تجاوزه بـ OPENCLAW_GIT_DIR)، ثم يحدّثها ويثبّت CLI العام منها.
  • stable → يثبّت من npm باستخدام latest.
  • beta → يفضّل npm dist-tag باسم beta، لكنه يعود إلى latest عندما تكون beta مفقودة أو أقدم من الإصدار المستقر الحالي.

يطلق محدّث نواة Gateway التلقائي (عند تفعيله عبر الإعدادات) مسار تحديث CLI خارج معالج طلب Gateway الحي. تفرض تحديثات مدير الحزم عبر مستوى التحكم update.run إعادة تشغيل للتحديث غير مؤجلة وبلا فترة تهدئة بعد تبديل الحزمة، لأن عملية Gateway القديمة قد تظل تحتوي في الذاكرة على أجزاء تشير إلى ملفات أزالتها الحزمة الجديدة.

بالنسبة إلى تثبيتات مدير الحزم، يحل openclaw update نسخة الحزمة الهدف قبل استدعاء مدير الحزم. تستخدم تثبيتات npm العامة تثبيتًا مرحليًا: يثبّت OpenClaw الحزمة الجديدة في بادئة npm مؤقتة، ويتحقق من مخزون dist المضمّن هناك، ثم يبدّل شجرة الحزمة النظيفة هذه إلى البادئة العامة الحقيقية. إذا فشل التحقق، لا تعمل أعمال doctor بعد التحديث أو مزامنة Plugin أو إعادة التشغيل من الشجرة المشكوك فيها. حتى عندما تطابق النسخة المثبتة الهدف بالفعل، يحدّث الأمر تثبيت الحزمة العامة، ثم يشغّل مزامنة Plugin، وتحديث إكمال أوامر النواة، وأعمال إعادة التشغيل. يحافظ هذا على اتساق البرامج المرافقة المضمّنة وسجلات Plugin المملوكة للقناة مع بنية OpenClaw المثبتة، مع ترك عمليات إعادة بناء إكمال أوامر Plugin الكاملة للتشغيلات الصريحة openclaw completion --write-state.

عند تثبيت خدمة Gateway مُدارة محلية وتفعيل إعادة التشغيل، توقف تحديثات مدير الحزم الخدمة الجارية قبل استبدال شجرة الحزمة، ثم تحدّث بيانات تعريف الخدمة من التثبيت المحدّث، وتعيد تشغيل الخدمة، وتتحقق من أن Gateway المعاد تشغيله يبلغ عن النسخة المتوقعة قبل الإبلاغ عن النجاح. على macOS، يتحقق فحص ما بعد التحديث أيضًا من أن LaunchAgent محمّل/قيد التشغيل للملف الشخصي النشط وأن منفذ loopback المضبوط سليم. إذا كان plist مثبتًا لكن launchd لا يشرف عليه، يعيد OpenClaw تمهيد LaunchAgent تلقائيًا، ثم يعيد تشغيل فحوصات الجاهزية للصحة/النسخة/القناة. يحمّل التمهيد الجديد مهمة RunAtLoad مباشرةً، لذلك لا تنفّذ استعادة التحديث فورًا kickstart -k على Gateway المنشأ حديثًا. إذا ظل Gateway غير سليم، يخرج الأمر بقيمة غير صفرية ويطبع مسار سجل إعادة التشغيل إضافةً إلى تعليمات صريحة لإعادة التشغيل وإعادة التثبيت والتراجع عن الحزمة. مع --no-restart، يستمر استبدال الحزمة لكن لا تُوقف الخدمة المُدارة ولا يُعاد تشغيلها، لذلك قد يحتفظ Gateway الجاري بالكود القديم إلى أن تعيد تشغيله يدويًا.

مسار git checkout

اختيار القناة

  • stable: انتقل إلى أحدث وسم غير beta، ثم ابنِ وشغّل doctor.
  • beta: فضّل أحدث وسم -beta، لكن عُد إلى أحدث وسم stable عندما تكون beta مفقودة أو أقدم.
  • dev: انتقل إلى main، ثم اجلب وأعد تطبيق التغييرات.

خطوات التحديث

  • التحقق من نظافة شجرة العمل

    يتطلب عدم وجود تغييرات غير ملتزم بها.

  • تبديل القناة

    يبدّل إلى القناة المحددة (وسم أو فرع).

  • جلب upstream

    خاص بـ dev فقط.

  • بناء تمهيدي (dev فقط)

    يشغّل بناء TypeScript في شجرة عمل مؤقتة. إذا فشل الطرف، يرجع حتى 10 commits للعثور على أحدث commit قابل للبناء. عيّن OPENCLAW_UPDATE_PREFLIGHT_LINT=1 لتشغيل lint أيضًا أثناء هذا الفحص التمهيدي؛ يعمل lint في وضع تسلسلي مقيّد لأن مضيفات تحديث المستخدم غالبًا أصغر من مشغلات CI.

  • إعادة تطبيق التغييرات

    يعيد تطبيق التغييرات فوق commit المحدد (dev فقط).

  • تثبيت الاعتماديات

    يستخدم مدير حزم المستودع. بالنسبة إلى نسخ pnpm checkout، يهيّئ المحدّث pnpm عند الطلب (عبر corepack أولًا، ثم بديل مؤقت npm install pnpm@10) بدلًا من تشغيل npm run build داخل مساحة عمل pnpm.

  • بناء Control UI

    يبني Gateway وControl UI.

  • تشغيل doctor

    يعمل openclaw doctor كفحص التحديث الآمن النهائي.

  • مزامنة Plugins

    يزامن Plugins إلى القناة النشطة. يستخدم dev Plugins المضمّنة؛ ويستخدم stable وbeta npm. يحدّث تثبيتات Plugin المتتبعة.

  • على قناة تحديث beta، تحاول تثبيتات Plugin المتتبعة من npm وClawHub التي تتبع مسار default/latest إصدار Plugin @beta أولًا. إذا لم يكن لدى Plugin إصدار beta، يعود OpenClaw إلى مواصفة default/latest المسجلة. بالنسبة إلى Plugins من npm، يعود OpenClaw أيضًا عندما تكون حزمة beta موجودة لكنها تفشل في تحقق التثبيت. لا تُعاد كتابة النسخ الدقيقة والوسوم الصريحة.

    اختصار --update

    يعيد openclaw --update الكتابة إلى openclaw update (مفيد للأصداف وسكربتات التشغيل).

    ذات صلة