CLI commands

تحديث

openclaw update

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

إذا ثبّتَّ عبر npm/pnpm/bun (تثبيت عام، دون بيانات git الوصفية)، فتُجرى التحديثات عبر مسار مدير الحزم الموضّح في التحديث.

الاستخدام

bash
openclaw updateopenclaw update statusopenclaw update repairopenclaw update wizardopenclaw update --channel extended-stableopenclaw update --channel betaopenclaw update --channel devopenclaw update --tag betaopenclaw update --tag mainopenclaw update --dry-runopenclaw update --no-restartopenclaw update --yesopenclaw update --acknowledge-clawhub-riskopenclaw update --jsonopenclaw --update

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

الخيارات

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

لا توجد علامة --verbose. استخدم --dry-run لمعاينة الإجراءات المخططة، و--json للنتائج القابلة للقراءة آليًا، وopenclaw update status --json للقناة/التوفر فقط. إسهاب وحدة تحكم Gateway ‏(--verbose) ومستوى سجل الملف (logging.level: "debug"/"trace") إعدادان مستقلان؛ راجع تسجيل Gateway.

update status

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

bash
openclaw update statusopenclaw update status --jsonopenclaw update status --timeout 10
العلامة القيمة الافتراضية الوصف
--json false اطبع JSON للحالة قابلًا للقراءة آليًا.
--timeout <seconds> 3 مهلة عمليات التحقق.

بالنسبة إلى تثبيتات حزم extended-stable، تنفّذ الحالة محدد الاختيار العام نفسه والتحقق من الحزمة الدقيقة نفسه المستخدمين في التحديث الأمامي. ويمكنها الإبلاغ عن ahead of extended-stable عندما يكون الإصدار المثبّت أحدث. تتضمن حالات فشل JSON ‏registry.reason ‏(selector_missing، أو selector_query_failed، أو exact_package_mismatch، أو unsupported_git_channel).

update repair

أعِد تشغيل إنهاء التحديث بعد أن تكون الحزمة الأساسية قد تغيرت بالفعل، لكن أعمال الإصلاح اللاحقة لم تكتمل بصورة سليمة. هذا هو مسار الاسترداد المدعوم عندما يكون openclaw update قد ثبّت الحزمة الأساسية الجديدة، لكن مزامنة Plugin التالية لتحديث النواة، أو بيانات Plugin ‏npm المُدار الوصفية، أو تحديث السجل، أو إصلاح Doctor لم تصل إلى حالة متسقة.

bash
openclaw update repairopenclaw update repair --channel betaopenclaw update repair --acknowledge-clawhub-riskopenclaw update repair --json
العلامة الوصف
--channel <stable|extended-stable|beta|dev> احتفظ بقناة تحديث النواة قبل الإصلاح. بالنسبة إلى extended-stable، تستهدف Plugins الرسمية المؤهلة في npm التي تتبع نية bare/default أو latest الإصدار الأساسي المثبّت بدقة. يُرفض إصلاح extended-stable في نسخ Git المستنسخة دون تغيير الإعدادات.
--json اطبع JSON للإنهاء قابلًا للقراءة آليًا.
--timeout <seconds> مهلة خطوات الإصلاح. القيمة الافتراضية 1800.
--yes تخطَّ مطالبات التأكيد.
--acknowledge-clawhub-risk السلوك نفسه كما في openclaw update.
--no-restart مقبول لتحقيق التكافؤ؛ لا يعيد الإصلاح تشغيل Gateway مطلقًا.

يشغّل update repair الأمر openclaw doctor --fix، ويعيد تحميل الإعدادات وسجلات التثبيت التي أُصلحت، ويزامن Plugins المتتبعة لقناة التحديث النشطة، ويحدّث تثبيتات Plugins المُدارة في npm، ويصلح حمولات Plugins المكوّنة والمفقودة، ويحدّث سجل Plugins، ويكتب بيانات وصفية متسقة لسجلات التثبيت. ولا يثبّت حزمة أساسية جديدة ولا يعيد تشغيل Gateway.

update wizard

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

العلامة القيمة الافتراضية الوصف
--timeout <seconds> 1800 المهلة لكل خطوة تحديث.

ما يفعله

يؤدي التبديل الصريح بين القنوات (--channel ...) أيضًا إلى إبقاء طريقة التثبيت متوافقة:

  • dev -> يضمن وجود نسخة git مستنسخة (القيمة الافتراضية ~/openclaw، أو $OPENCLAW_HOME/openclaw عند تعيين OPENCLAW_HOME؛ ويمكن تجاوزها باستخدام OPENCLAW_GIT_DIR) ويحدّثها ويثبّت CLI العام من تلك النسخة المستنسخة.
  • stable -> يثبّت من npm باستخدام latest.
  • extended-stable -> يحل محدد اختيار npm العام extended-stable، ويتحقق من الحزمة المحددة بدقة، ويثبّت ذلك الإصدار الدقيق. ولا يرجع إلى محدد اختيار آخر، ويُرفض لنسخ Git المستنسخة.
  • beta -> يفضّل وسم توزيع npm ‏beta، ويرجع إلى latest عندما تكون beta مفقودة أو أقدم من الإصدار المستقر الحالي.

تسليم إعادة التشغيل

يشغّل المحدّث التلقائي لنواة Gateway (عند تمكينه عبر الإعدادات) مسار تحديث CLI خارج معالج طلبات Gateway النشط. تستخدم تحديثات مدير الحزم update.run لمستوى التحكم وتحديثات نسخ git المستنسخة الخاضعة للإشراف تسليم الخدمة المُدارة نفسه بدلًا من استبدال شجرة الحزم أو إعادة بناء dist/ داخل عملية Gateway النشطة: يبدأ Gateway مساعدًا منفصلًا ثم يخرج، ويشغّل ذلك المساعد openclaw update --yes --json من خارج شجرة عمليات Gateway. إذا لم يكن التسليم متاحًا، فيُرجع update.run استجابة منظّمة تتضمن أمر الصدفة الآمن المطلوب تشغيله يدويًا.

تتلقى اختيارات الدعم المستقر الممتد المخزنة تلميحات للقراءة فقط عند بدء التشغيل وكل 24 ساعة عند تمكين update.checkOnStart. لا تطبّق هذه الفحوصات أي تحديث مطلقًا، ولا تبدأ عملية تسليم، ولا تعيد تشغيل Gateway، ولا تستخدم تأخير/تذبذب القناة المستقرة، ولا تستخدم وتيرة استطلاع القناة التجريبية. تظل التحديثات الصريحة في الواجهة الأمامية، والتحديثات غير المقيّدة في الواجهة الأمامية مع update.channel: "extended-stable" المخزن، والحالة عند الطلب، وعملية تسليم Gateway المُدارة الخاصة بها مدعومة.

عند تثبيت خدمة Gateway مُدارة محلية وتمكين إعادة التشغيل، توقف تحديثات مدير الحزم ونسخة git العاملة الخدمة قيد التشغيل قبل استبدال شجرة الحزمة أو تعديل مخرجات النسخة العاملة/البناء. بعد ذلك، يحدّث برنامج التحديث بيانات الخدمة الوصفية، ويعيد تشغيل الخدمة، ويتحقق من Gateway المُعاد تشغيله قبل الإبلاغ عن Gateway: restarted and verified.. تتحقق تحديثات مدير الحزم أيضًا من أن Gateway المُعاد تشغيله يبلغ عن إصدار الحزمة المتوقع؛ وتتحقق تحديثات نسخة git العاملة من سلامة Gateway وجاهزية الخدمة بعد إعادة البناء.

تواصل تحديثات مدير الحزم عادةً استخدام ملف Node التنفيذي المسجل في الخدمة المُدارة. إذا تعذّر على Node هذا تشغيل الإصدار المستهدف، لكن أمكن لـ Node الخاص بـ CLI الحالي تشغيله وثبت أن الخدمة تتبع الحزمة الجاري تحديثها، يستخدم تحديث مُمكّن لإعادة التشغيل Node الحالي لإنهاء العملية ويعيد كتابة بيانات الخدمة الوصفية لاستخدام بيئة التشغيل هذه. لا يستطيع --no-restart إصلاح بيانات الخدمة الوصفية، لذا يؤدي عدم تطابق بيئة التشغيل نفسه إلى التوقف قبل تعديل الحزمة.

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

إذا تعذّر تنفيذ إعادة التشغيل، يطبع الأمر Gateway: restart skipped (...) أو Gateway: restart failed: ... مع تلميح يدوي لـ openclaw gateway restart. مع --no-restart، يستمر استبدال الحزمة أو إعادة بناء git، لكن الخدمة المُدارة لا تتوقف ولا تُعاد تشغيلها، لذلك يواصل Gateway قيد التشغيل استخدام الشيفرة القديمة حتى تعيد تشغيله يدويًا.

بنية استجابة مستوى التحكم

عند تشغيل update.run عبر مستوى تحكم Gateway على تثبيت مدير حزم أو نسخة git عاملة خاضعة للإشراف، يبلغ المعالج عن بدء التسليم بشكل منفصل عن تحديث CLI الذي يستمر بعد خروج Gateway:

  • ok: true، وresult.status: "skipped"، وresult.reason: "managed-service-handoff-started"، و handoff.status: "started": أنشأ Gateway عملية تسليم الخدمة المُدارة وجدول إعادة تشغيله كي يتمكن المساعد المنفصل من تشغيل openclaw update --yes --json خارج عملية الخدمة الحية.
  • ok: false، وresult.reason: "managed-service-handoff-unavailable"، و handoff.status: "unavailable": تعذّر على OpenClaw العثور على حدود خدمة خاضعة للإشراف وهوية خدمة دائمة لإجراء تسليم آمن (على سبيل المثال، تتطلب عملية تسليم systemd هوية وحدة OPENCLAW_SYSTEMD_UNIT، وليس مجرد مؤشرات عملية systemd المحيطة). تتضمن الاستجابة handoff.command، وهو أمر الصدفة المطلوب تشغيله من خارج Gateway.
  • ok: false، وresult.reason: "managed-service-handoff-failed": حاول Gateway إنشاء عملية التسليم لكنه لم يتمكن من إنشاء المساعد المنفصل.

تُكتب حمولة sentinel قبل خروج Gateway، ويحدّث تسليم CLI مؤشر إعادة التشغيل نفسه بعد اكتمال فحوصات سلامة إعادة تشغيل الخدمة المُدارة. أثناء التسليم، يمكن أن يحمل المؤشر stats.reason: "restart-health-pending" من دون متابعة نجاح؛ ويستطلعه Gateway المُعاد تشغيله ويطلق المتابعة فقط بعد أن يتحقق CLI من سلامة الخدمة ويعيد كتابة المؤشر بنتيجة ok النهائية. يعرض openclaw status وopenclaw status --all صف Update restart بينما يكون ذلك المؤشر معلقًا أو فاشلًا، ويحدّث update.status أحدث مؤشر ويعيده.

تدفق نسخة Git العاملة

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

  • stable: اسحب أحدث وسم غير تجريبي، ثم نفّذ البناء وأداة doctor.
  • beta: فضّل أحدث وسم -beta، مع الرجوع إلى أحدث وسم مستقر عندما تكون القناة التجريبية مفقودة أو أقدم.
  • dev: اسحب main، ثم اجلب التغييرات ونفّذ إعادة الأساس.
  • extended-stable: غير مدعوم لنسخ Git العاملة؛ لا يحدث أي تعديل للنسخة العاملة.

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

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

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

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

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

  • جلب المصدر الرئيسي

    للتطوير فقط.

  • البناء التمهيدي (للتطوير فقط)

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

  • إعادة الأساس

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

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

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

  • بناء واجهة التحكم

    يبني Gateway وواجهة التحكم.

  • تشغيل doctor

    يُشغّل openclaw doctor بوصفه فحص التحديث الآمن النهائي.

  • مزامنة plugins

    يزامن plugins مع القناة النشطة. يستخدم التطوير plugins المضمّنة؛ وتستخدم القناتان المستقرة والتجريبية npm. يحدّث عمليات تثبيت plugins المتتبعة.

  • تفاصيل مزامنة plugins

    على القناة التجريبية، تحاول عمليات تثبيت plugins المتتبعة من npm وClawHub التي تتبع مسار الافتراضي/الأحدث إصدار @beta من plugin أولًا. إذا لم يكن لدى plugin إصدار تجريبي، يرجع OpenClaw إلى مواصفة الافتراضي/الأحدث المسجلة ويبلغ عن تحذير. بالنسبة إلى plugins من npm، يرجع OpenClaw أيضًا عندما تكون الحزمة التجريبية موجودة لكنها تفشل في التحقق من صحة التثبيت. لا تؤدي تحذيرات الرجوع هذه إلى فشل تحديث النواة. لا تُعاد كتابة الإصدارات الدقيقة والوسوم الصريحة مطلقًا.

    بعد نجاح تحديث النواة ذات الدعم المستقر الممتد، تستهدف سلامة plugins وتقاربها بعد النواة plugins الرسمية المؤهلة من npm بالإصدار الدقيق المثبت للنواة. بالنسبة إلى نية الافتراضي/latest، لا يستعلم OpenClaw عن @extended-stable الخاصة بـ plugin ولا يرجع إلى latest في npm؛ بل يستنتج إصدار الحزمة من النواة المثبتة. تحتفظ عمليات تثبيت الإصدار الصريحة، والوسوم الصريحة غير latest، وحزم الجهات الخارجية، والمصادر غير التابعة لـ npm بنيتها الحالية.

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

    ذو صلة

    Was this useful?
    On this page

    On this page