CLI commands
بهروزرسانی
openclaw update
OpenClaw را با ایمنی بهروزرسانی کنید و بین کانالهای stable/beta/dev جابهجا شوید.
اگر از طریق npm/pnpm/bun نصب کردهاید (نصب سراسری، بدون فرادادهی git)، بهروزرسانیها از طریق جریان مدیر بسته در بهروزرسانی انجام میشوند.
روش استفاده
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: اقدامهای برنامهریزیشدهی بهروزرسانی (جریان کانال/برچسب/هدف/راهاندازی دوباره) را بدون نوشتن پیکربندی، نصب، همگامسازی Pluginها، یا راهاندازی دوباره پیشنمایش میدهد.--json: JSON قابلخواندن برای ماشین از نوعUpdateRunResultرا چاپ میکند، شاملpostUpdate.plugins.warningsهنگامی که Pluginهای مدیریتشدهی خراب یا بارگذاریناپذیر پس از موفقیت بهروزرسانی هسته به تعمیر نیاز دارند، وpostUpdate.plugins.integrityDriftsهنگامی که در جریان همگامسازی Plugin پس از بهروزرسانی، انحراف مصنوع npm Plugin شناسایی شود.--timeout <seconds>: مهلت زمانی برای هر گام (پیشفرض 1800 ثانیه است).--yes: درخواستهای تأیید را رد میکند (برای نمونه تأیید بازگشت به نسخهی قدیمیتر).
openclaw update پرچم --verbose ندارد. برای پیشنمایش اقدامهای
برنامهریزیشدهی کانال/برچسب/نصب/راهاندازی دوباره از --dry-run، برای نتایج
قابلخواندن برای ماشین از --json، و هنگامی که فقط به جزئیات کانال و
دسترسپذیری نیاز دارید از openclaw update status --json استفاده کنید. اگر
لاگهای Gateway پیرامون یک بهروزرسانی را اشکالزدایی میکنید، پرگویی کنسول و
سطح لاگ فایل جدا هستند: --verbose در Gateway خروجی terminal/WebSocket را
تحتتأثیر قرار میدهد، در حالی که لاگهای فایل به logging.level: "debug" یا
"trace" در پیکربندی نیاز دارند. لاگگیری Gateway را ببینید.
update status
کانال بهروزرسانی فعال + برچسب/شاخه/SHA در git (برای checkoutهای منبع)، بهعلاوهی دسترسپذیری بهروزرسانی را نشان میدهد.
openclaw update status
openclaw update status --json
openclaw 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→ با استفاده ازlatestاز npm نصب میکند.beta→ dist-tag با نامbetaدر npm را ترجیح میدهد، اما وقتی beta وجود نداشته باشد یا از انتشار stable فعلی قدیمیتر باشد بهlatestبرمیگردد.
بهروزرسان خودکار هستهی Gateway (وقتی از طریق پیکربندی فعال باشد) مسیر بهروزرسانی CLI را
بیرون از handler زندهی درخواست Gateway اجرا میکند. بهروزرسانیهای مدیر بستهی update.run در control-plane
پس از تعویض بسته، راهاندازی دوبارهی بهروزرسانی را بهصورت غیربهتعویقافتاده و بدون cooldown اجبار میکنند،
چون فرایند قدیمی Gateway ممکن است هنوز chunkهایی در حافظه داشته باشد که به
فایلهای حذفشده توسط بستهی جدید اشاره میکنند.
برای نصبهای مدیر بسته، openclaw update پیش از فراخوانی مدیر بسته، نسخهی
بستهی هدف را حل میکند. نصبهای سراسری npm از نصب مرحلهبندیشده استفاده
میکنند: OpenClaw بستهی جدید را در یک prefix موقت npm نصب میکند، inventory
بستهبندیشدهی dist را در آنجا بررسی میکند، سپس آن درخت بستهی پاک را با
prefix سراسری واقعی تعویض میکند. اگر بررسی شکست بخورد، doctor پس از بهروزرسانی،
همگامسازی Plugin و کار راهاندازی دوباره از درخت مشکوک اجرا نمیشوند. حتی وقتی
نسخهی نصبشده از پیش با هدف یکی باشد، فرمان نصب بستهی سراسری را تازهسازی میکند،
سپس همگامسازی Plugin، تازهسازی تکمیل فرمان هسته، و کار راهاندازی دوباره را اجرا میکند. این کار
sidecarهای بستهبندیشده و رکوردهای Plugin متعلق به کانال را با build نصبشدهی
OpenClaw همراستا نگه میدارد و بازسازیهای کامل تکمیل فرمان Plugin را به
اجراهای صریح openclaw completion --write-state واگذار میکند.
وقتی یک سرویس Gateway مدیریتشدهی محلی نصب باشد و راهاندازی دوباره فعال باشد،
بهروزرسانیهای مدیر بسته پیش از جایگزینی درخت بسته، سرویس در حال اجرا را متوقف
میکنند، سپس فرادادهی سرویس را از نصب بهروزشده تازهسازی میکنند، سرویس را
دوباره راهاندازی میکنند و پیش از گزارش موفقیت بررسی میکنند که Gateway دوبارهراهاندازیشده
نسخهی مورد انتظار را گزارش میدهد. در macOS، بررسی پس از بهروزرسانی همچنین تأیید میکند که LaunchAgent
برای profile فعال بارگذاری/در حال اجرا است و پورت loopback پیکربندیشده
سالم است. اگر plist نصب شده باشد اما launchd آن را نظارت نکند، OpenClaw
بهطور خودکار LaunchAgent را دوباره bootstrap میکند، سپس بررسیهای آمادگی
سلامت/نسخه/کانال را دوباره اجرا میکند. یک bootstrap تازه، job مربوط به RunAtLoad
را مستقیم بارگذاری میکند، بنابراین بازیابی بهروزرسانی بلافاصله Gateway تازه
ایجادشده را kickstart -k نمیکند. اگر Gateway همچنان سالم نشود، فرمان با
کد غیرصفر خارج میشود و مسیر لاگ راهاندازی دوباره بههمراه دستورهای صریح
راهاندازی دوباره، نصب مجدد، و rollback بسته را چاپ میکند. با --no-restart،
جایگزینی بسته همچنان اجرا میشود اما سرویس مدیریتشده متوقف یا دوباره راهاندازی
نمیشود، بنابراین Gateway در حال اجرا ممکن است تا وقتی آن را دستی دوباره راهاندازی
کنید، کد قدیمی را نگه دارد.
جریان checkout در git
انتخاب کانال
stable: آخرین برچسب غیر beta را checkout میکند، سپس build و doctor را اجرا میکند.beta: آخرین برچسب-betaرا ترجیح میدهد، اما وقتی beta وجود نداشته باشد یا قدیمیتر باشد به آخرین برچسب stable برمیگردد.dev:mainرا checkout میکند، سپس fetch و rebase را انجام میدهد.
گامهای بهروزرسانی
بررسی پاکبودن worktree
نیازمند نبود تغییرهای commitنشده است.
تعویض کانال
به کانال انتخابشده (برچسب یا شاخه) جابهجا میشود.
دریافت upstream
فقط dev.
build پیشپرواز (فقط dev)
build مربوط به TypeScript را در یک worktree موقت اجرا میکند. اگر tip شکست بخورد، تا 10 commit عقب میرود تا جدیدترین commit قابل build را پیدا کند. برای اجرای lint در این پیشپرواز نیز OPENCLAW_UPDATE_PREFLIGHT_LINT=1 را تنظیم کنید؛ lint در حالت serial محدود اجرا میشود، چون میزبانهای بهروزرسانی کاربر اغلب کوچکتر از runnerهای CI هستند.
Rebase
روی commit انتخابشده rebase میکند (فقط dev).
نصب وابستگیها
از مدیر بستهی repo استفاده میکند. برای checkoutهای pnpm، بهروزرسان بهجای اجرای npm run build داخل یک workspace متعلق به pnpm، pnpm را در صورت نیاز bootstrap میکند (ابتدا از طریق corepack، سپس fallback موقت npm install pnpm@10).
Build رابط کاربری Control
gateway و رابط کاربری Control را build میکند.
اجرای doctor
openclaw doctor بهعنوان بررسی نهایی بهروزرسانی ایمن اجرا میشود.
همگامسازی Pluginها
Pluginها را با کانال فعال همگام میکند. dev از Pluginهای bundled استفاده میکند؛ stable و beta از npm استفاده میکنند. نصبهای Plugin ردیابیشده را بهروزرسانی میکند.
در کانال بهروزرسانی beta، نصبهای ردیابیشدهی npm و ClawHub Plugin که خط
پیشفرض/latest را دنبال میکنند، ابتدا یک انتشار @beta برای Plugin را امتحان میکنند. اگر Plugin انتشار
beta نداشته باشد، OpenClaw به spec ثبتشدهی پیشفرض/latest برمیگردد. برای npm
Pluginها، OpenClaw همچنین وقتی بستهی beta وجود دارد اما در اعتبارسنجی نصب شکست
میخورد، به حالت fallback برمیگردد. نسخههای دقیق و برچسبهای صریح بازنویسی نمیشوند.
میانبر --update
openclaw --update به openclaw update بازنویسی میشود (برای shellها و scriptهای launcher مفید است).
مرتبط
openclaw doctor(در checkoutهای git پیشنهاد میدهد ابتدا update اجرا شود)- کانالهای توسعه
- بهروزرسانی
- مرجع CLI