CLI commands
بهروزرسانی
openclaw update
OpenClaw را با ایمنی بهروزرسانی کنید و بین کانالهای پایدار/بتا/توسعه جابهجا شوید.
اگر از طریق npm/pnpm/bun نصب کردهاید (نصب سراسری، بدون فراداده git)، بهروزرسانیها از طریق جریان مدیر بسته در بهروزرسانی انجام میشوند.
استفاده
openclaw updateopenclaw update statusopenclaw update wizardopenclaw update --channel betaopenclaw update --channel devopenclaw update --tag betaopenclaw update --tag mainopenclaw update --dry-runopenclaw update --no-restartopenclaw update --yesopenclaw update --jsonopenclaw --updateگزینهها
--no-restart: از راهاندازی مجدد سرویس Gateway پس از بهروزرسانی موفق صرفنظر میکند. بهروزرسانیهای مدیر بسته که Gateway را راهاندازی مجدد میکنند، پیش از موفق شدن فرمان، بررسی میکنند که سرویس راهاندازیشدهٔ مجدد نسخهٔ بهروزرسانیشدهٔ مورد انتظار را گزارش کند.--channel <stable|beta|dev>: کانال بهروزرسانی را تنظیم میکند (git + npm؛ در پیکربندی پایدار میشود).--tag <dist-tag|version|spec>: هدف بسته را فقط برای همین بهروزرسانی بازنویسی میکند. برای نصبهای بستهای،mainبهgithub:openclaw/openclaw#mainنگاشت میشود.--dry-run: اقدامات برنامهریزیشدهٔ بهروزرسانی (جریان کانال/برچسب/هدف/راهاندازی مجدد) را بدون نوشتن پیکربندی، نصب، همگامسازی پلاگینها، یا راهاندازی مجدد پیشنمایش میکند.--json: JSON قابلخواندن برای ماشین از نوعUpdateRunResultرا چاپ میکند، شاملpostUpdate.plugins.warningsزمانی که پلاگینهای مدیریتشدهٔ خراب یا غیرقابل بارگذاری پس از موفقیت بهروزرسانی هسته نیاز به تعمیر دارند، جزئیات بازگشت پلاگین در کانال بتا زمانی که یک پلاگین انتشار بتا ندارد، وpostUpdate.plugins.integrityDriftsزمانی که طی همگامسازی پلاگین پس از بهروزرسانی، انحراف مصنوع بستهٔ npm پلاگین شناسایی شود.--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 (برای checkoutهای منبع) را همراه با دسترسپذیری بهروزرسانی نشان میدهد.
openclaw update statusopenclaw update status --jsonopenclaw update status --timeout 10گزینهها:
--json: JSON وضعیت قابلخواندن برای ماشین را چاپ میکند.--timeout <seconds>: مهلت زمانی برای بررسیها (پیشفرض 3 ثانیه است).
update wizard
جریان تعاملی برای انتخاب کانال بهروزرسانی و تأیید اینکه آیا Gateway پس از
بهروزرسانی راهاندازی مجدد شود یا نه (پیشفرض راهاندازی مجدد است). اگر dev
را بدون checkout از git انتخاب کنید، پیشنهاد میکند یکی ایجاد کند.
گزینهها:
--timeout <seconds>: مهلت زمانی برای هر گام بهروزرسانی (پیشفرض1800)
چه کاری انجام میدهد
وقتی کانالها را صریحاً عوض میکنید (--channel ...)، OpenClaw روش نصب را نیز
همراستا نگه میدارد:
dev→ وجود یک checkout از git را تضمین میکند (پیشفرض:~/openclaw، قابل بازنویسی باOPENCLAW_GIT_DIR)، آن را بهروزرسانی میکند، و CLI سراسری را از همان checkout نصب میکند.stable→ از npm با استفاده ازlatestنصب میکند.beta→ dist-tag betaدر npm را ترجیح میدهد، اما وقتی بتا موجود نباشد یا از انتشار پایدار فعلی قدیمیتر باشد بهlatestبرمیگردد.
بهروزرسان خودکار هستهٔ Gateway (وقتی از طریق پیکربندی فعال شده باشد) مسیر
بهروزرسانی CLI را بیرون از handler درخواست زندهٔ Gateway اجرا میکند. بهروزرسانیهای
مدیر بستهٔ update.run در صفحهٔ کنترل، پس از جابهجایی بسته، راهاندازی مجدد
بهروزرسانی بدون تعویق و بدون دورهٔ خنکسازی را اجباری میکنند، زیرا فرایند
قدیمی Gateway ممکن است هنوز قطعههایی در حافظه داشته باشد که به فایلهای حذفشده
توسط بستهٔ جدید اشاره میکنند.
برای نصبهای مدیر بسته، openclaw update پیش از فراخوانی مدیر بسته نسخهٔ بستهٔ
هدف را resolve میکند. نصبهای سراسری npm از نصب مرحلهبندیشده استفاده میکنند:
OpenClaw بستهٔ جدید را در یک پیشوند موقت npm نصب میکند، موجودی dist بستهبندیشده
را در آنجا بررسی میکند، سپس آن درخت بستهٔ پاک را به پیشوند سراسری واقعی جابهجا
میکند. اگر راستیآزمایی شکست بخورد، doctor پس از بهروزرسانی، همگامسازی
پلاگین، و کار راهاندازی مجدد از درخت مشکوک اجرا نمیشوند. حتی وقتی نسخهٔ
نصبشده از قبل با هدف برابر باشد، فرمان نصب بستهٔ سراسری را نوسازی میکند،
سپس همگامسازی پلاگین، نوسازی تکمیل فرمان هسته، و کار راهاندازی مجدد را اجرا
میکند. این کار sidecarهای بستهبندیشده و رکوردهای پلاگین متعلق به کانال را
با build نصبشدهٔ OpenClaw همراستا نگه میدارد، در حالی که بازسازی کامل تکمیل
فرمان پلاگین را به اجرای صریح openclaw completion --write-state واگذار میکند.
وقتی یک سرویس Gateway مدیریتشدهٔ محلی نصب باشد و راهاندازی مجدد فعال باشد،
بهروزرسانیهای مدیر بسته پیش از جایگزینی درخت بسته، سرویس در حال اجرا را متوقف
میکنند، سپس فرادادهٔ سرویس را از نصب بهروزرسانیشده نوسازی میکنند، سرویس را
راهاندازی مجدد میکنند، و پیش از گزارش موفقیت بررسی میکنند که Gateway
راهاندازیشدهٔ مجدد نسخهٔ مورد انتظار را گزارش کند. در macOS، بررسی پس از
بهروزرسانی همچنین بررسی میکند که LaunchAgent برای نمایهٔ فعال بارگذاری/در حال
اجرا باشد و پورت loopback پیکربندیشده سالم باشد. اگر plist نصب شده باشد اما
launchd بر آن نظارت نکند، OpenClaw بهطور خودکار LaunchAgent را دوباره bootstrap
میکند، سپس بررسیهای آمادگی سلامت/نسخه/کانال را دوباره اجرا میکند. یک bootstrap
تازه job مربوط به RunAtLoad را مستقیماً بارگذاری میکند، بنابراین بازیابی
بهروزرسانی فوراً Gateway تازه ایجادشده را kickstart -k نمیکند. اگر Gateway
هنوز سالم نشود، فرمان با کد غیرصفر خارج میشود و مسیر لاگ راهاندازی مجدد را
همراه با دستورالعملهای صریح راهاندازی مجدد، نصب دوباره، و بازگردانی بسته چاپ
میکند. با --no-restart، جایگزینی بسته همچنان اجرا میشود اما سرویس مدیریتشده
متوقف یا راهاندازی مجدد نمیشود، بنابراین Gateway در حال اجرا ممکن است تا وقتی
آن را دستی راهاندازی مجدد نکنید، کد قدیمی را نگه دارد.
جریان checkout از Git
انتخاب کانال
stable: آخرین برچسب غیربتا را checkout میکند، سپس build و doctor را اجرا میکند.beta: آخرین برچسب-betaرا ترجیح میدهد، اما وقتی بتا موجود نباشد یا قدیمیتر باشد به آخرین برچسب پایدار برمیگردد.dev:mainرا checkout میکند، سپس fetch و rebase را اجرا میکند.
گامهای بهروزرسانی
بررسی پاک بودن worktree
نیاز دارد هیچ تغییر commitنشدهای وجود نداشته باشد.
تعویض کانال
به کانال انتخابشده (برچسب یا شاخه) جابهجا میشود.
دریافت upstream
فقط برای Dev.
Build پیشپرواز (فقط dev)
build تایپاسکریپت را در یک worktree موقت اجرا میکند. اگر نوک شاخه شکست بخورد، تا 10 commit به عقب میرود تا جدیدترین commit قابل build را پیدا کند. برای اینکه lint نیز طی این پیشپرواز اجرا شود، OPENCLAW_UPDATE_PREFLIGHT_LINT=1 را تنظیم کنید؛ lint در حالت سریال محدود اجرا میشود، چون میزبانهای بهروزرسانی کاربران اغلب از runnerهای CI کوچکتر هستند.
Rebase
روی commit انتخابشده rebase میکند (فقط dev).
نصب وابستگیها
از مدیر بستهٔ repo استفاده میکند. برای checkoutهای pnpm، بهروزرسان pnpm را هنگام نیاز bootstrap میکند (ابتدا از طریق corepack، سپس با fallback موقت npm install pnpm@11) بهجای اینکه npm run build را داخل یک workspace مربوط به pnpm اجرا کند.
Build کردن Control UI
gateway و Control UI را build میکند.
اجرای doctor
openclaw doctor بهعنوان بررسی نهایی بهروزرسانی ایمن اجرا میشود.
همگامسازی پلاگینها
پلاگینها را با کانال فعال همگام میکند. Dev از پلاگینهای bundled استفاده میکند؛ stable و beta از npm استفاده میکنند. نصبهای پلاگین ردیابیشده را بهروزرسانی میکند.
در کانال بهروزرسانی بتا، نصبهای پلاگین npm و ClawHub ردیابیشده که خط
پیشفرض/latest را دنبال میکنند ابتدا انتشار @beta پلاگین را امتحان میکنند.
اگر پلاگین انتشار بتا نداشته باشد، OpenClaw به spec ثبتشدهٔ پیشفرض/latest
برمیگردد و آن را بهعنوان هشدار گزارش میکند. برای پلاگینهای npm، OpenClaw
همچنین وقتی بستهٔ بتا وجود داشته باشد اما در اعتبارسنجی نصب شکست بخورد برمیگردد.
این هشدارهای fallback پلاگین باعث شکست بهروزرسانی هسته نمیشوند. نسخههای دقیق
و برچسبهای صریح بازنویسی نمیشوند.
میانبر --update
openclaw --update به openclaw update بازنویسی میشود (برای shellها و اسکریپتهای launcher مفید است).
مرتبط
openclaw doctor(در checkoutهای git پیشنهاد میکند ابتدا update را اجرا کند)- کانالهای توسعه
- بهروزرسانی
- مرجع CLI