16 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
مرجع CLI برای `openclaw update` (بهروزرسانی نسبتاً امن منبع + راهاندازی مجدد خودکار Gateway) | بهروزرسانی |
|
openclaw update
OpenClaw را با ایمنی بهروزرسانی کنید و بین کانالهای پایدار/بتا/توسعه جابهجا شوید.
اگر از طریق 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.integrityDriftsوقتی در همگامسازی Plugin پس از بهروزرسانی، انحراف آرتیفکت npm Plugin شناسایی شود.--timeout <seconds>: مهلت زمانی برای هر مرحله (پیشفرض 1800s است).--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 status
openclaw update status --json
openclaw update status --timeout 10
گزینهها:
--json: JSON وضعیت قابلخواندن برای ماشین را چاپ میکند.--timeout <seconds>: مهلت زمانی برای بررسیها (پیشفرض 3s است).
update wizard
جریان تعاملی برای انتخاب کانال بهروزرسانی و تأیید اینکه آیا پس از بهروزرسانی Gateway
دوباره راهاندازی شود یا نه (پیشفرض راهاندازی دوباره است). اگر dev را بدون checkout git انتخاب کنید،
پیشنهاد میدهد یکی ایجاد کند.
گزینهها:
--timeout <seconds>: مهلت زمانی برای هر مرحلهٔ بهروزرسانی (پیشفرض1800)
کاری که انجام میدهد
وقتی کانالها را بهصورت صریح عوض میکنید (--channel ...)، OpenClaw روش
نصب را نیز همراستا نگه میدارد:
dev→ وجود checkout git را تضمین میکند (پیشفرض:~/openclaw، قابل بازنویسی باOPENCLAW_GIT_DIR)، آن را بهروزرسانی میکند و CLI سراسری را از همان checkout نصب میکند.stable→ با استفاده ازlatestاز npm نصب میکند.beta→ برچسب توزیع npm با نامbetaرا ترجیح میدهد، اما وقتی بتا وجود ندارد یا از انتشار پایدار فعلی قدیمیتر است، بهlatestبرمیگردد.
بهروزرسان خودکار هستهٔ Gateway (وقتی از طریق پیکربندی فعال باشد) مسیر بهروزرسانی CLI را
بیرون از کنترلکنندهٔ درخواست زندهٔ Gateway اجرا میکند. بهروزرسانیهای مدیر بستهٔ
update.run در صفحهٔ کنترل، پس از تعویض بسته، یک راهاندازی دوبارهٔ بهروزرسانیِ بدون تعویق و بدون دورهٔ خنکسازی را اجباری میکنند،
زیرا فرایند قدیمی Gateway ممکن است هنوز قطعههای درونحافظهای داشته باشد که به
فایلهای حذفشده توسط بستهٔ جدید اشاره میکنند.
برای نصبهای مدیر بسته، openclaw update پیش از فراخوانی مدیر بسته، نسخهٔ بستهٔ هدف را
حل میکند. نصبهای سراسری npm از نصب مرحلهای استفاده میکنند:
OpenClaw بستهٔ جدید را در یک پیشوند موقت npm نصب میکند، موجودی dist بستهبندیشده را
آنجا بررسی میکند، سپس آن درخت بستهٔ پاک را به پیشوند سراسری واقعی تعویض میکند.
اگر بررسی شکست بخورد، doctor پس از بهروزرسانی، همگامسازی Plugin، و کار راهاندازی دوباره
از درخت مشکوک اجرا نمیشوند. حتی وقتی نسخهٔ نصبشده
از قبل با هدف مطابقت دارد، دستور نصب بستهٔ سراسری را تازهسازی میکند،
سپس همگامسازی Plugin، تازهسازی تکمیل فرمان هسته، و کار راهاندازی دوباره را اجرا میکند. این
کار sidecarهای بستهبندیشده و رکوردهای Plugin متعلق به کانال را با build نصبشدهٔ
OpenClaw همراستا نگه میدارد و بازسازیهای کامل تکمیل فرمان Plugin را به اجراهای
صریح 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 میکند.
مراحل بهروزرسانی
نیازمند نبود تغییرات commitنشده است. به کانال انتخابشده (تگ یا شاخه) تغییر میکند. فقط توسعه. lint و build TypeScript را در یک worktree موقت اجرا میکند. اگر نوک شاخه شکست بخورد، تا 10 commit به عقب برمیگردد تا جدیدترین build پاک را پیدا کند. روی commit انتخابشده rebase میکند (فقط توسعه). از مدیر بستهٔ repo استفاده میکند. برای checkoutهای pnpm، بهروزرسان `pnpm` را در صورت نیاز bootstrap میکند (ابتدا از طریق `corepack`، سپس با fallback موقت `npm install pnpm@10`) بهجای اینکه `npm run build` را داخل یک workspace pnpm اجرا کند. gateway و Control UI را build میکند. `openclaw doctor` بهعنوان بررسی نهایی بهروزرسانی امن اجرا میشود. Pluginها را با کانال فعال همگام میکند. توسعه از Pluginهای bundled استفاده میکند؛ پایدار و بتا از npm استفاده میکنند. نصبهای Plugin ردیابیشده را بهروزرسانی میکند.در کانال بهروزرسانی بتا، نصبهای npm و ClawHub Plugin ردیابیشده که خط
پیشفرض/latest را دنبال میکنند، ابتدا یک انتشار @beta Plugin را امتحان میکنند. اگر Plugin
انتشار بتا نداشته باشد، OpenClaw به spec پیشفرض/latest ثبتشده برمیگردد. برای npm
Pluginها، OpenClaw همچنین وقتی بستهٔ بتا وجود دارد اما بررسی نصب آن شکست میخورد
به عقب برمیگردد. نسخههای دقیق و تگهای صریح بازنویسی نمیشوند.
وقتی Gateway بهروزرسانیشده شروع به کار میکند، بارگذاری Plugin فقط بررسی است: راهاندازی، مدیرهای بسته را اجرا نمیکند و درختهای وابستگی را تغییر نمیدهد. راهاندازیهای دوبارهٔ update.run مدیر بسته پس از تعویض درخت بسته، تعویق عادی زمان بیکاری و دورهٔ خنکسازی راهاندازی دوباره را دور میزنند، بنابراین فرایند قدیمی نمیتواند به lazy-loading قطعههای حذفشده ادامه دهد.
اگر bootstrap مربوط به pnpm همچنان شکست بخورد، بهروزرسان بهجای تلاش برای اجرای npm run build داخل checkout، زودتر با یک خطای ویژهٔ مدیر بسته متوقف میشود.
خلاصهنویسی --update
openclaw --update به openclaw update بازنویسی میشود (برای shellها و اسکریپتهای اجراکننده مفید است).
مرتبط
openclaw doctor(در checkoutهای git پیشنهاد میدهد ابتدا update اجرا شود)- کانالهای توسعه
- بهروزرسانی
- مرجع CLI