CLI commands

به‌روزرسانی

openclaw update

OpenClaw را به‌روزرسانی کنید و بین کانال‌های پایدار/پایدارِ توسعه‌یافته/بتا/توسعه جابه‌جا شوید.

اگر از طریق 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> کانال به‌روزرسانی را تنظیم می‌کند و پس از موفقیت به‌روزرسانی هسته، آن را ماندگار می‌سازد. پایدارِ توسعه‌یافته فقط برای بسته‌ها است.
--tag <dist-tag|version|spec> هدف بسته را فقط برای این به‌روزرسانی بازنویسی می‌کند. نمی‌توان آن را با کانال مؤثر extended-stable ترکیب کرد، زیرا هدف دقیق و تأییدشدهٔ آن الزامی است. برای سایر نصب‌های بسته‌ای، main به github:openclaw/openclaw#main نگاشت می‌شود؛ مشخصات منبع GitHub/git پیش از نصب سراسری مرحله‌بندی‌شده با npm، در یک tarball موقت بسته‌بندی می‌شوند.
--dry-run بدون نوشتن پیکربندی، نصب، همگام‌سازی Pluginها یا راه‌اندازی مجدد، اقدامات برنامه‌ریزی‌شده (جریان کانال/برچسب/هدف/راه‌اندازی مجدد) را پیش‌نمایش می‌کند.
--json JSON قابل‌خواندن برای ماشینِ UpdateRunResult را چاپ می‌کند. هنگامی که یک Plugin مدیریت‌شده به تعمیر نیاز دارد، شامل postUpdate.plugins.warnings، جزئیات عقب‌گرد Plugin کانال بتا، و هنگامی که ناهم‌خوانی مصنوع npm مربوط به Plugin طی همگام‌سازی پس از به‌روزرسانی تشخیص داده شود، شامل postUpdate.plugins.integrityDrifts است.
--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 مهلت زمانی بررسی‌ها.

برای نصب‌های بسته‌ای پایدارِ توسعه‌یافته، وضعیت همان انتخاب‌گر عمومی و تأیید دقیق بسته را مانند به‌روزرسانی پیش‌زمینه انجام می‌دهد. اگر نسخهٔ نصب‌شده جدیدتر باشد، می‌تواند 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> کانال به‌روزرسانی هسته را پیش از تعمیر ماندگار می‌کند. برای پایدارِ توسعه‌یافته، Pluginهای رسمی و واجد شرایط npm که از هدف صریح/پیش‌فرض یا مقصود latest پیروی می‌کنند، نسخهٔ دقیق هستهٔ نصب‌شده را هدف قرار می‌دهند. تعمیر پایدارِ توسعه‌یافته در وارسی‌های Git بدون تغییر پیکربندی رد می‌شود.
--json JSON نهایی‌سازی قابل‌خواندن برای ماشین را چاپ می‌کند.
--timeout <seconds> مهلت زمانی مراحل تعمیر. مقدار پیش‌فرض 1800 است.
--yes درخواست‌های تأیید را نادیده می‌گیرد.
--acknowledge-clawhub-risk رفتاری همانند openclaw update دارد.
--no-restart برای همسانی پذیرفته می‌شود؛ تعمیر هرگز Gateway را راه‌اندازی مجدد نمی‌کند.

update repair، ‏openclaw doctor --fix را اجرا می‌کند، پیکربندی تعمیرشده و رکوردهای نصب را دوباره بارگذاری می‌کند، Pluginهای ردیابی‌شده را برای کانال فعال به‌روزرسانی همگام می‌کند، نصب‌های Plugin مدیریت‌شدهٔ npm را به‌روزرسانی می‌کند، بارهای محتوایی مفقود Pluginهای پیکربندی‌شده را تعمیر می‌کند، رجیستری Plugin را تازه‌سازی می‌کند و فرادادهٔ همگرای رکورد نصب را می‌نویسد. این فرمان بستهٔ جدید هسته را نصب نمی‌کند و Gateway را راه‌اندازی مجدد نمی‌کند.

update wizard

جریان تعاملی برای انتخاب کانال به‌روزرسانی و تأیید راه‌اندازی مجدد Gateway پس از آن (پیش‌فرض، راه‌اندازی مجدد است). انتخاب dev بدون وارسی git، ایجاد یک وارسی را پیشنهاد می‌دهد.

پرچم پیش‌فرض توضیحات
--timeout <seconds> 1800 مهلت زمانی هر مرحلهٔ به‌روزرسانی.

کاری که انجام می‌دهد

جابه‌جایی صریح کانال‌ها (--channel ...) همچنین روش نصب را هم‌راستا نگه می‌دارد:

  • dev -> وجود یک وارسی git را تضمین می‌کند (به‌طور پیش‌فرض ~/openclaw، یا وقتی OPENCLAW_HOME تنظیم شده باشد، $OPENCLAW_HOME/openclaw؛ با OPENCLAW_GIT_DIR بازنویسی کنید)، آن را به‌روزرسانی می‌کند و CLI سراسری را از همان وارسی نصب می‌کند.
  • stable -> با استفاده از latest از npm نصب می‌کند.
  • extended-stable -> انتخاب‌گر عمومی npm یعنی extended-stable را حل می‌کند، بستهٔ دقیق انتخاب‌شده را تأیید و همان نسخهٔ دقیق را نصب می‌کند. به انتخاب‌گر دیگری عقب‌گرد نمی‌کند و برای وارسی‌های Git رد می‌شود.
  • beta -> برچسب توزیع npm یعنی beta را ترجیح می‌دهد و اگر بتا موجود نباشد یا از انتشار پایدار فعلی قدیمی‌تر باشد، به latest عقب‌گرد می‌کند.

واگذاری راه‌اندازی مجدد

به‌روزرسان خودکار هستهٔ Gateway (هنگامی که از طریق پیکربندی فعال باشد)، مسیر به‌روزرسانی CLI را خارج از کنترل‌کنندهٔ درخواست زندهٔ Gateway اجرا می‌کند. به‌روزرسانی‌های مدیر بستهٔ update.run در صفحهٔ کنترل و به‌روزرسانی‌های نظارت‌شدهٔ وارسی git، به‌جای جایگزین‌کردن درخت بسته یا بازسازی dist/ درون فرایند زندهٔ Gateway، از همان واگذاری سرویس مدیریت‌شده استفاده می‌کنند: Gateway یک راهنمای جداشده را آغاز می‌کند و خارج می‌شود، سپس آن راهنما openclaw update --yes --json را از بیرون درخت فرایند Gateway اجرا می‌کند. اگر واگذاری در دسترس نباشد، update.run پاسخی ساختاریافته همراه با فرمان امن پوسته برای اجرای دستی برمی‌گرداند.

انتخاب‌های extended-stable ذخیره‌شده، وقتی update.checkOnStart فعال باشد، هنگام راه‌اندازی و هر 24 ساعت راهنمایی‌های فقط‌خواندنی برای به‌روزرسانی دریافت می‌کنند. این بررسی‌ها هرگز به‌روزرسانی را اعمال نمی‌کنند، handoff را آغاز نمی‌کنند، Gateway را بازراه‌اندازی نمی‌کنند، از تأخیر/jitter شاخه stable استفاده نمی‌کنند یا از تناوب نظرسنجی beta بهره نمی‌برند. به‌روزرسانی‌های صریح پیش‌زمینه، به‌روزرسانی‌های ساده پیش‌زمینه با update.channel: "extended-stable" ذخیره‌شده، وضعیت درخواستی و handoff مدیریت‌شده Gateway آن‌ها همچنان پشتیبانی می‌شوند.

وقتی یک سرویس Gateway مدیریت‌شده محلی نصب شده و بازراه‌اندازی فعال باشد، به‌روزرسانی‌های مدیر بسته و git checkout پیش از جایگزینی درخت بسته یا تغییر checkout/خروجی ساخت، سرویس در حال اجرا را متوقف می‌کنند. سپس به‌روزرسان فراداده سرویس را تازه‌سازی می‌کند، سرویس را بازراه‌اندازی می‌کند و پیش از گزارش Gateway: restarted and verified.، Gateway بازراه‌اندازی‌شده را تأیید می‌کند. به‌روزرسانی‌های مدیر بسته علاوه بر این تأیید می‌کنند که Gateway بازراه‌اندازی‌شده نسخه مورد انتظار بسته را گزارش می‌دهد؛ به‌روزرسانی‌های git checkout نیز پس از بازسازی، سلامت Gateway و آمادگی سرویس را تأیید می‌کنند.

به‌روزرسانی‌های مدیر بسته معمولاً همچنان از باینری Node ثبت‌شده در سرویس مدیریت‌شده استفاده می‌کنند. اگر آن Node نتواند نسخه انتشار هدف را اجرا کند، اما Node فعلی CLI بتواند و تعلق سرویس به بسته‌ای که به‌روزرسانی می‌شود اثبات شده باشد، یک به‌روزرسانی با بازراه‌اندازی فعال، برای نهایی‌سازی از Node فعلی استفاده می‌کند و فراداده سرویس را برای آن محیط اجرا بازنویسی می‌کند. --no-restart نمی‌تواند فراداده سرویس را ترمیم کند، بنابراین همان ناهماهنگی محیط اجرا پیش از تغییر بسته عملیات را متوقف می‌کند.

در macOS، بررسی پس از به‌روزرسانی همچنین تأیید می‌کند که LaunchAgent برای پروفایل فعال بارگذاری شده/در حال اجرا است و پورت loopback پیکربندی‌شده سالم است. اگر plist نصب شده باشد اما launchd بر آن نظارت نکند، OpenClaw به‌طور خودکار LaunchAgent را دوباره bootstrap می‌کند و بررسی‌های سلامت/نسخه/ آمادگی کانال را مجدداً اجرا می‌کند (یک bootstrap تازه، کار RunAtLoad را مستقیماً بارگذاری می‌کند، بنابراین بازیابی بلافاصله Gateway تازه ایجادشده را kickstart -k نمی‌کند). اگر Gateway همچنان سالم نشود، فرمان با کد غیرصفر خارج می‌شود و مسیر گزارش بازراه‌اندازی را همراه با دستورالعمل‌های بازراه‌اندازی، نصب مجدد و بازگردانی بسته چاپ می‌کند.

اگر بازراه‌اندازی قابل اجرا نباشد، فرمان Gateway: restart skipped (...) یا Gateway: restart failed: ... را همراه با راهنمای دستی openclaw gateway restart چاپ می‌کند. با --no-restart، جایگزینی بسته یا بازسازی git همچنان اجرا می‌شود، اما سرویس مدیریت‌شده متوقف یا بازراه‌اندازی نمی‌شود؛ بنابراین Gateway در حال اجرا تا زمانی که آن را به‌صورت دستی بازراه‌اندازی کنید، همچنان از کد قدیمی استفاده می‌کند.

ساختار پاسخ صفحه کنترل

وقتی update.run از طریق صفحه کنترل Gateway روی یک نصب مدیر بسته یا git checkout تحت نظارت اجرا شود، کنترل‌کننده آغاز handoff را جدا از به‌روزرسانی CLI که پس از خروج Gateway ادامه می‌یابد گزارش می‌کند:

  • ok: true، result.status: "skipped"، result.reason: "managed-service-handoff-started" و handoff.status: "started": Gateway، handoff سرویس مدیریت‌شده را ایجاد و بازراه‌اندازی خود را زمان‌بندی کرد تا کمک‌کننده جداشده بتواند openclaw update --yes --json را خارج از فرایند سرویس زنده اجرا کند.
  • ok: false، result.reason: "managed-service-handoff-unavailable" و handoff.status: "unavailable": OpenClaw نتوانست مرز سرویس تحت نظارت و هویت پایدار سرویس را برای یک handoff ایمن پیدا کند (برای نمونه، handoff در systemd به هویت واحد OPENCLAW_SYSTEMD_UNIT نیاز دارد، نه صرفاً نشانگرهای محیطی فرایند systemd). پاسخ شامل handoff.command، یعنی فرمان shell برای اجرا از خارج Gateway، است.
  • ok: false، result.reason: "managed-service-handoff-failed": Gateway تلاش کرد handoff را ایجاد کند، اما نتوانست کمک‌کننده جداشده را اجرا کند.

بار داده sentinel پیش از خروج Gateway نوشته می‌شود و handoff CLI، همان نشانگر بازراه‌اندازی را پس از تکمیل بررسی‌های سلامت بازراه‌اندازی سرویس مدیریت‌شده به‌روزرسانی می‌کند. در طول handoff، نشانگر می‌تواند stats.reason: "restart-health-pending" را بدون ادامه موفقیت در خود داشته باشد؛ Gateway بازراه‌اندازی‌شده آن را نظرسنجی می‌کند و فقط پس از آن‌که CLI سلامت سرویس را تأیید و نشانگر را با نتیجه نهایی ok بازنویسی کرد، ادامه را فعال می‌کند. openclaw status و openclaw status --all تا زمانی که آن نشانگر در انتظار یا ناموفق باشد، یک ردیف Update restart نشان می‌دهند و update.status آن را تازه‌سازی کرده و جدیدترین نشانگر را بازمی‌گرداند.

جریان git checkout

انتخاب کانال

  • stable: جدیدترین برچسب غیر beta را checkout کنید، سپس ساخت و doctor را اجرا کنید.
  • beta: جدیدترین برچسب -beta را ترجیح می‌دهد و اگر beta وجود نداشته باشد یا قدیمی‌تر باشد، به جدیدترین برچسب stable برمی‌گردد.
  • dev: main را checkout می‌کند، سپس fetch و rebase را اجرا می‌کند.
  • extended-stable: برای Git checkout پشتیبانی نمی‌شود؛ هیچ تغییری در checkout انجام نمی‌شود.

مراحل به‌روزرسانی

  • تأیید پاک‌بودن درخت کاری

    مستلزم نبود تغییرات commit‌نشده است.

  • تغییر کانال

    به کانال انتخاب‌شده (برچسب یا شاخه) تغییر می‌کند.

  • دریافت از بالادست

    فقط برای dev.

  • ساخت پیش‌بررسی (فقط dev)

    ساخت TypeScript را در یک درخت کاری موقت اجرا می‌کند. اگر نوک شاخه ناموفق باشد، حداکثر 10 commit به عقب می‌رود تا جدیدترین commit قابل ساخت را پیدا کند. برای اجرای lint در این پیش‌بررسی نیز OPENCLAW_UPDATE_PREFLIGHT_LINT=1 را تنظیم کنید؛ lint در حالت سری محدودشده اجرا می‌شود، زیرا میزبان‌های به‌روزرسانی کاربران اغلب از اجراکننده‌های CI کوچک‌ترند.

  • Rebase

    روی commit انتخاب‌شده rebase می‌کند (فقط dev).

  • نصب وابستگی‌ها

    از مدیر بسته مخزن استفاده می‌کند. برای checkoutهای pnpm، به‌روزرسان در صورت نیاز pnpm را bootstrap می‌کند (ابتدا از طریق corepack و سپس با fallback موقت npm install pnpm@11)، به‌جای آن‌که npm run build را داخل یک فضای کاری pnpm اجرا کند. اگر bootstrap کردن pnpm همچنان ناموفق باشد، به‌روزرسان با خطایی مختص مدیر بسته زودتر متوقف می‌شود، به‌جای آن‌که npm run build را در checkout امتحان کند.

  • ساخت رابط کنترل

    Gateway و رابط کنترل را می‌سازد.

  • اجرای doctor

    openclaw doctor به‌عنوان آخرین بررسی به‌روزرسانی ایمن اجرا می‌شود.

  • همگام‌سازی Pluginها

    Pluginها را با کانال فعال همگام می‌کند. dev از Pluginهای همراه استفاده می‌کند؛ stable و beta از npm استفاده می‌کنند. نصب‌های Plugin ردیابی‌شده را به‌روزرسانی می‌کند.

  • جزئیات همگام‌سازی Plugin

    در کانال beta، نصب‌های ردیابی‌شده Plugin از npm و ClawHub که خط پیش‌فرض/latest را دنبال می‌کنند، ابتدا یک انتشار @beta از Plugin را امتحان می‌کنند. اگر Plugin انتشار beta نداشته باشد، OpenClaw به مشخصات پیش‌فرض/latest ثبت‌شده برمی‌گردد و هشداری گزارش می‌کند. برای Pluginهای npm، OpenClaw همچنین زمانی fallback می‌کند که بسته beta موجود باشد اما اعتبارسنجی نصب آن ناموفق شود. این هشدارهای fallback باعث شکست به‌روزرسانی هسته نمی‌شوند. نسخه‌های دقیق و برچسب‌های صریح هرگز بازنویسی نمی‌شوند.

    پس از موفقیت یک به‌روزرسانی هسته extended-stable، یکپارچگی و همگرایی Plugin پس از هسته، Pluginهای رسمی واجد شرایط npm را دقیقاً در نسخه نصب‌شده هسته هدف می‌گیرند. برای مقصود پیش‌فرض/latest، OpenClaw @extended-stable مربوط به Plugin را استعلام نمی‌کند و به latest در npm fallback نمی‌کند؛ نسخه بسته را از هسته نصب‌شده استخراج می‌کند. سنجاق‌های صریح نسخه، برچسب‌های صریح غیر latest، بسته‌های شخص ثالث و منابع غیر npm مقصود موجود خود را حفظ می‌کنند.

    برای نصب‌های مدیر بسته، openclaw update پیش از فراخوانی مدیر بسته، نسخه بسته هدف را تعیین می‌کند. نصب‌های global در npm از نصب مرحله‌ای استفاده می‌کنند: OpenClaw بسته جدید را در یک prefix موقت npm نصب می‌کند، به بسته نامزد اجازه می‌دهد طی preinstall نسخه Node میزبان را اعتبارسنجی کند و فهرست dist بسته‌بندی‌شده را در آنجا تأیید می‌کند. یک محافظ تکمیل بسته‌بندی‌شده تا زمان موفقیت preinstall خارج از آن فهرست باقی می‌ماند؛ بنابراین مدیرهای بسته‌ای که اسکریپت‌های چرخه عمر را نادیده می‌گیرند نیز پیش از فعال‌سازی متوقف می‌شوند. در npm 12 و نسخه‌های جدیدتر، به‌روزرسان فقط چرخه عمر OpenClaw نامزد را تأیید می‌کند؛ اسکریپت‌های وابستگی‌های انتقالی مسدود باقی می‌مانند. سپس OpenClaw درخت پاک بسته را به prefix واقعی global منتقل می‌کند. اگر تأیید ناموفق باشد، doctor پس از به‌روزرسانی، همگام‌سازی Plugin و عملیات بازراه‌اندازی از درخت مشکوک اجرا نمی‌شوند. حتی وقتی نسخه نصب‌شده از قبل با هدف مطابقت داشته باشد، فرمان نصب بسته global را تازه‌سازی می‌کند و سپس همگام‌سازی Plugin، تازه‌سازی تکمیل فرمان هسته و عملیات بازراه‌اندازی را اجرا می‌کند. این کار sidecarهای بسته‌بندی‌شده و رکوردهای Plugin متعلق به کانال را با ساخت نصب‌شده OpenClaw هم‌راستا نگه می‌دارد، درحالی‌که بازسازی‌های کامل تکمیل فرمان Plugin را به اجرای صریح openclaw completion --write-state واگذار می‌کند.

    مرتبط

    Was this useful?
    On this page

    On this page