CLI commands
تحديث
openclaw update
حدّث OpenClaw وبدّل بين قنوات stable/extended-stable/beta/dev.
إذا ثبّتَّ عبر npm/pnpm/bun (تثبيت عام، دون بيانات git الوصفية)، فتُجرى التحديثات عبر مسار مدير الحزم الموضّح في التحديث.
الاستخدام
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 فعّالة، إذ يكون هدفها الدقيق المتحقق منه إلزاميًا. بالنسبة إلى تثبيتات الحزم الأخرى، يُطابق main github: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 (لنسخ المصدر المستنسخة فقط)، ومدى توفر تحديث.
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 لم
تصل إلى حالة متسقة.
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 الصريحة.
ذو صلة
openclaw doctor(يعرض تشغيل التحديث أولًا على نسخ git العاملة)- قنوات التطوير
- التحديث
- مرجع CLI