12 KiB
12 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
مرجع CLI برای `openclaw doctor` (بررسیهای سلامت + تعمیرات هدایتشده) | عیبیاب |
|
openclaw doctor
بررسیهای سلامت + اصلاحات سریع برای Gateway و کانالها.
مرتبط:
نمونهها
openclaw doctor
openclaw doctor --repair
openclaw doctor --deep
openclaw doctor --repair --non-interactive
openclaw doctor --generate-gateway-token
گزینهها
--no-workspace-suggestions: پیشنهادهای حافظه/جستوجوی workspace را غیرفعال میکند--yes: پیشفرضها را بدون درخواست تأیید میپذیرد--repair: تعمیرهای پیشنهادی غیرسرویسی را بدون درخواست تأیید اعمال میکند؛ نصبها و بازنویسیهای سرویس Gateway همچنان به تأیید تعاملی یا فرمانهای صریح Gateway نیاز دارند--fix: نام مستعار برای--repair--force: تعمیرهای تهاجمی را اعمال میکند، از جمله بازنویسی پیکربندی سفارشی سرویس در صورت نیاز--non-interactive: بدون prompt اجرا میشود؛ فقط مهاجرتهای ایمن و تعمیرهای غیرسرویسی--generate-gateway-token: یک توکن Gateway تولید و پیکربندی میکند--deep: سرویسهای سیستم را برای نصبهای اضافی Gateway اسکن میکند
نکات:
- promptهای تعاملی، مانند اصلاحات keychain/OAuth، فقط زمانی اجرا میشوند که stdin یک TTY باشد و
--non-interactiveتنظیم نشده باشد. اجراهای headless، مانند cron، Telegram و بدون ترمینال، promptها را نادیده میگیرند. - کارایی: اجراهای غیرتعاملی
doctorبارگذاری زودهنگام Plugin را رد میکنند تا بررسیهای سلامت headless سریع بمانند. نشستهای تعاملی همچنان وقتی یک بررسی به مشارکت Pluginها نیاز داشته باشد، Pluginها را کامل بارگذاری میکنند. --fix، نام مستعار--repair، یک نسخه پشتیبان در~/.openclaw/openclaw.json.bakمینویسد و کلیدهای پیکربندی ناشناخته را حذف میکند و هر حذف را فهرست میکند.doctor --fix --non-interactiveتعریفهای سرویس Gateway را که گم شده یا کهنه هستند گزارش میکند، اما بیرون از حالت تعمیر بهروزرسانی آنها را نصب یا بازنویسی نمیکند. برای سرویس گمشدهopenclaw gateway installرا اجرا کنید، یا وقتی عمداً میخواهید launcher را جایگزین کنیدopenclaw gateway install --forceرا اجرا کنید.- بررسیهای یکپارچگی وضعیت اکنون فایلهای transcript یتیم را در پوشه sessions شناسایی میکنند. آرشیو کردن آنها با قالب
.deleted.<timestamp>به تأیید تعاملی نیاز دارد؛--fix،--yesو اجراهای headless آنها را سر جای خود باقی میگذارند. - Doctor همچنین
~/.openclaw/cron/jobs.jsonیاcron.storeرا برای شکلهای قدیمی cron job اسکن میکند و میتواند پیش از آنکه زمانبند مجبور شود آنها را در runtime خودکار نرمالسازی کند، همانجا بازنویسیشان کند. - در Linux، وقتی crontab کاربر هنوز
~/.openclaw/bin/ensure-whatsapp.shقدیمی را اجرا میکند، doctor هشدار میدهد؛ آن اسکریپت دیگر نگهداری نمیشود و وقتی cron محیط systemd user-bus را ندارد، میتواند قطعیهای نادرست Gateway مربوط به WhatsApp را log کند. - Doctor وضعیت staging وابستگی Plugin قدیمی را که نسخههای قدیمیتر OpenClaw ساختهاند پاکسازی میکند. همچنین Pluginهای قابل دانلود گمشدهای را که در پیکربندی ارجاع شدهاند تعمیر میکند، مانند
plugins.entries، کانالهای پیکربندیشده، تنظیمات provider/search پیکربندیشده، یا runtimeهای agent پیکربندیشده. هنگام بهروزرسانی package، doctor تعمیر Plugin توسط package-manager را تا تکمیل جابهجایی package رد میکند؛ اگر یک Plugin پیکربندیشده همچنان به بازیابی نیاز دارد، پس از آنopenclaw doctor --fixرا دوباره اجرا کنید. اگر دانلود شکست بخورد، doctor خطای نصب را گزارش میکند و ورودی Plugin پیکربندیشده را برای تلاش تعمیر بعدی حفظ میکند. - Doctor پیکربندی کهنه Plugin را با حذف شناسههای Plugin گمشده از
plugins.allow/plugins.entries، بههمراه پیکربندی کانال آویزان متناظر، هدفهای Heartbeat و overrideهای مدل کانال، وقتی discovery Plugin سالم باشد، تعمیر میکند. - Doctor پیکربندی نامعتبر Plugin را با غیرفعال کردن ورودی آسیبدیده
plugins.entries.<id>و حذف payload نامعتبرconfigآن قرنطینه میکند. راهاندازی Gateway از قبل فقط همان Plugin خراب را رد میکند تا سایر Pluginها و کانالها بتوانند به کار ادامه دهند. - وقتی supervisor دیگری lifecycle Gateway را مالکیت میکند،
OPENCLAW_SERVICE_REPAIR_POLICY=externalرا تنظیم کنید. Doctor همچنان سلامت Gateway/سرویس را گزارش میکند و تعمیرهای غیرسرویسی را اعمال میکند، اما نصب/شروع/راهاندازی مجدد/bootstrap سرویس و پاکسازی سرویس قدیمی را رد میکند. - در Linux، doctor واحدهای systemd اضافی شبیه Gateway را که inactive هستند نادیده میگیرد و هنگام تعمیر، metadata فرمان/entrypoint را برای یک سرویس Gateway در حال اجرا تحت systemd بازنویسی نمیکند. ابتدا سرویس را متوقف کنید، یا وقتی عمداً میخواهید launcher فعال را جایگزین کنید از
openclaw gateway install --forceاستفاده کنید. - Doctor پیکربندی تخت قدیمی Talk، مانند
talk.voiceId،talk.modelIdو موارد مشابه، را بهtalk.provider+talk.providers.<provider>خودکار مهاجرت میدهد. - اجراهای تکراری
doctor --fixدیگر وقتی تنها تفاوت ترتیب کلیدهای object باشد، نرمالسازی Talk را گزارش/اعمال نمیکنند. - Doctor یک بررسی آمادگی جستوجوی حافظه دارد و وقتی credentialهای embedding گم شده باشند، میتواند
openclaw configure --section modelرا پیشنهاد کند. - Doctor وقتی هیچ مالک فرمانی پیکربندی نشده باشد هشدار میدهد. مالک فرمان، حساب انسانی operator است که اجازه دارد فرمانهای فقط-مالک را اجرا کند و اقدامهای خطرناک را تأیید کند. جفتسازی DM فقط اجازه میدهد کسی با bot صحبت کند؛ اگر پیش از وجود bootstrap مالک اول، یک فرستنده را تأیید کردهاید،
commands.ownerAllowFromرا صریح تنظیم کنید. - Doctor وقتی agentهای حالت Codex پیکربندی شدهاند و assetهای شخصی Codex CLI در خانه Codex متعلق به operator وجود دارند، هشدار میدهد. اجرای app-server محلی Codex از خانههای جداگانه برای هر agent استفاده میکند، پس از
openclaw migrate codex --dry-runبرای فهرست کردن assetهایی استفاده کنید که باید عامدانه ارتقا داده شوند. - Doctor وقتی skills مجاز برای agent پیشفرض در محیط runtime فعلی در دسترس نیستند، چون binها، env varها، config یا نیازمندیهای OS گم شدهاند، هشدار میدهد.
doctor --fixمیتواند آن skills غیرقابلدسترس را باskills.entries.<skill>.enabled=falseغیرفعال کند؛ وقتی میخواهید skill فعال بماند، در عوض نیازمندی گمشده را نصب/پیکربندی کنید. - اگر حالت sandbox فعال باشد اما Docker در دسترس نباشد، doctor یک هشدار پرسیگنال همراه با راهکار رفع مشکل گزارش میکند:
install Dockerیاopenclaw config set agents.defaults.sandbox.mode off. - اگر فایلهای قدیمی registry مربوط به sandbox، یعنی
~/.openclaw/sandbox/containers.jsonیا~/.openclaw/sandbox/browsers.json، وجود داشته باشند، doctor آنها را گزارش میکند؛openclaw doctor --fixورودیهای معتبر را به پوشههای registry شاردشده مهاجرت میدهد و فایلهای قدیمی نامعتبر را قرنطینه میکند. - اگر
gateway.auth.token/gateway.auth.passwordتوسط SecretRef مدیریت شوند و در مسیر فرمان فعلی در دسترس نباشند، doctor یک هشدار فقط-خواندنی گزارش میکند و credentialهای fallback متن ساده نمینویسد. - اگر بررسی SecretRef کانال در مسیر fix شکست بخورد، doctor بهجای خروج زودهنگام ادامه میدهد و یک هشدار گزارش میکند.
- پس از مهاجرتهای پوشه وضعیت، doctor وقتی حسابهای پیشفرض فعال Telegram یا Discord به fallback محیط وابسته باشند و
TELEGRAM_BOT_TOKENیاDISCORD_BOT_TOKENبرای فرایند doctor در دسترس نباشد، هشدار میدهد. - auto-resolution نام کاربری
allowFromدر Telegram (doctor --fix) به یک توکن قابل resolve مربوط به Telegram در مسیر فرمان فعلی نیاز دارد. اگر بررسی توکن در دسترس نباشد، doctor یک هشدار گزارش میکند و auto-resolution را برای آن گذر رد میکند.
macOS: overrideهای env مربوط به launchctl
اگر قبلاً launchctl setenv OPENCLAW_GATEWAY_TOKEN ... یا ...PASSWORD را اجرا کردهاید، آن مقدار فایل پیکربندی شما را override میکند و میتواند باعث خطاهای پایدار «غیرمجاز» شود.
launchctl getenv OPENCLAW_GATEWAY_TOKEN
launchctl getenv OPENCLAW_GATEWAY_PASSWORD
launchctl unsetenv OPENCLAW_GATEWAY_TOKEN
launchctl unsetenv OPENCLAW_GATEWAY_PASSWORD