CLI commands
عیبیاب
openclaw doctor
بررسیهای سلامت + اصلاحهای سریع برای Gateway و کانالها.
مرتبط:
مثالها
openclaw doctor
openclaw doctor --repair
openclaw doctor --deep
openclaw doctor --repair --non-interactive
openclaw doctor --generate-gateway-token
برای مجوزهای ویژه کانال، بهجای doctor از کاوشگرهای کانال استفاده کنید:
openclaw channels capabilities --channel discord --target channel:<channel-id>
openclaw channels status --probe
کاوشگر هدفمند قابلیتهای Discord مجوزهای مؤثر کانال برای ربات را گزارش میکند؛ کاوشگر وضعیت، کانالهای Discord پیکربندیشده و اهداف پیوستن خودکار صوتی را ممیزی میکند.
گزینهها
--no-workspace-suggestions: پیشنهادهای حافظه/جستوجوی فضای کاری را غیرفعال میکند--yes: پیشفرضها را بدون درخواست تأیید میپذیرد--repair: اصلاحهای غیرسرویسی توصیهشده را بدون درخواست تأیید اعمال میکند؛ نصبها و بازنویسیهای سرویس Gateway همچنان به تأیید تعاملی یا فرمانهای صریح Gateway نیاز دارند--fix: نام مستعار برای--repair--force: اصلاحهای تهاجمی را اعمال میکند، از جمله بازنویسی پیکربندی سفارشی سرویس در صورت نیاز--non-interactive: بدون اعلان اجرا میکند؛ فقط مهاجرتهای امن و اصلاحهای غیرسرویسی--generate-gateway-token: یک توکن Gateway تولید و پیکربندی میکند--deep: سرویسهای سیستم را برای نصبهای اضافی Gateway اسکن میکند و واگذاریهای اخیر راهاندازی مجدد ناظر Gateway را گزارش میدهد
نکتهها:
- در حالت Nix (
OPENCLAW_NIX_MODE=1)، بررسیهای فقطخواندنی doctor همچنان کار میکنند، اماdoctor --fix،doctor --repair،doctor --yesوdoctor --generate-gateway-tokenغیرفعالاند، چونopenclaw.jsonتغییرناپذیر است. بهجای آن، منبع Nix این نصب را ویرایش کنید؛ برای nix-openclaw، از شروع سریع عاملمحور استفاده کنید. - اعلانهای تعاملی (مانند اصلاحهای keychain/OAuth) فقط وقتی اجرا میشوند که stdin یک TTY باشد و
--non-interactiveتنظیم نشده باشد. اجراهای بدون رابط (Cron، Telegram، بدون ترمینال) اعلانها را رد میکنند. - کارایی: اجراهای غیرتعاملی
doctorبارگذاری مشتاقانه Plugin را رد میکنند تا بررسیهای سلامت بدون رابط سریع بمانند. نشستهای تعاملی همچنان وقتی یک بررسی به مشارکت Pluginها نیاز داشته باشد، Pluginها را کامل بارگذاری میکنند. --fix(نام مستعار--repair) یک پشتیبان در~/.openclaw/openclaw.json.bakمینویسد و کلیدهای پیکربندی ناشناخته را حذف میکند و هر حذف را فهرست میکند.doctor --fix --non-interactiveتعریفهای مفقود یا کهنه سرویس Gateway را گزارش میکند، اما آنها را خارج از حالت اصلاح بهروزرسانی نصب یا بازنویسی نمیکند. برای سرویس مفقود،openclaw gateway installرا اجرا کنید، یا وقتی عمداً میخواهید راهانداز را جایگزین کنید ازopenclaw gateway install --forceاستفاده کنید.- بررسیهای یکپارچگی وضعیت اکنون فایلهای رونویس یتیم را در پوشه نشستها شناسایی میکنند. بایگانی آنها با قالب
.deleted.<timestamp>به تأیید تعاملی نیاز دارد؛--fix،--yesو اجراهای بدون رابط آنها را در جای خود باقی میگذارند. - Doctor همچنین
~/.openclaw/cron/jobs.json(یاcron.store) را برای شکلهای قدیمی کارهای Cron اسکن میکند و میتواند پیش از آنکه زمانبند ناچار شود در زمان اجرا آنها را خودکار عادیسازی کند، همانجا بازنویسیشان کند. - در Linux، doctor وقتی crontab کاربر هنوز
~/.openclaw/bin/ensure-whatsapp.shقدیمی را اجرا میکند هشدار میدهد؛ این اسکریپت دیگر نگهداری نمیشود و وقتی Cron محیط user-bus systemd را ندارد، میتواند قطعیهای نادرست Gateway مربوط به WhatsApp را ثبت کند. - وقتی WhatsApp فعال است، doctor یک حلقه رویداد تنزلیافته Gateway را با کلاینتهای محلی
openclaw-tuiکه هنوز در حال اجرا هستند بررسی میکند.doctor --fixفقط کلاینتهای TUI محلی تأییدشده را متوقف میکند تا پاسخهای WhatsApp پشت حلقههای تازهسازی کهنه TUI صف نشوند. - Doctor ارجاعهای مدل قدیمی
openai-codex/*را در مدلهای اصلی، جایگزینها، بازنویسیهای heartbeat/subagent/compaction، hookها، بازنویسیهای مدل کانال و پینهای کهنه مسیر نشست به ارجاعهای استانداردopenai/*بازنویسی میکند.--fixفقط وقتیagentRuntime.id: "codex"را انتخاب میکند که Plugin مربوط به Codex نصب و فعال باشد، harness مربوط بهcodexرا فراهم کند و OAuth قابلاستفاده داشته باشد؛ در غیر این صورتagentRuntime.id: "pi"را انتخاب میکند تا مسیر روی اجراکننده پیشفرض OpenClaw بماند. - Doctor وضعیت staging وابستگی Plugin قدیمی را که نسخههای قدیمیتر OpenClaw ایجاد کردهاند پاک میکند. همچنین Pluginهای قابل دانلود مفقود را که پیکربندی به آنها ارجاع میدهد، مانند
plugins.entries، کانالهای پیکربندیشده، تنظیمات پیکربندیشده provider/search یا runtimeهای عامل پیکربندیشده، اصلاح میکند. هنگام بهروزرسانی بسته، doctor اصلاح Plugin توسط package-manager را تا تکمیل تعویض بسته رد میکند؛ اگر یک Plugin پیکربندیشده هنوز به بازیابی نیاز دارد، پس از آن دوبارهopenclaw doctor --fixرا اجرا کنید. اگر دانلود شکست بخورد، doctor خطای نصب را گزارش میکند و ورودی Plugin پیکربندیشده را برای تلاش اصلاح بعدی حفظ میکند. - Doctor پیکربندی کهنه Plugin را با حذف شناسههای Plugin مفقود از
plugins.allow/plugins.entries، همراه با پیکربندی کانال آویزان همسان، اهداف Heartbeat و بازنویسیهای مدل کانال، وقتی کشف Plugin سالم است اصلاح میکند. - Doctor پیکربندی نامعتبر Plugin را با غیرفعال کردن ورودی آسیبدیده
plugins.entries.<id>و حذف payload نامعتبرconfigآن قرنطینه میکند. راهاندازی Gateway از قبل فقط همان Plugin خراب را رد میکند تا Pluginها و کانالهای دیگر بتوانند به اجرا ادامه دهند. - وقتی ناظر دیگری مالک چرخه عمر Gateway است،
OPENCLAW_SERVICE_REPAIR_POLICY=externalرا تنظیم کنید. Doctor همچنان سلامت Gateway/سرویس را گزارش میکند و اصلاحهای غیرسرویسی را اعمال میکند، اما نصب/شروع/راهاندازی مجدد/bootstrap سرویس و پاکسازی سرویس قدیمی را رد میکند. - در Linux، doctor واحدهای systemd اضافی شبیه Gateway را که غیرفعالاند نادیده میگیرد و هنگام اصلاح، فراداده فرمان/نقطه ورود را برای یک سرویس systemd Gateway در حال اجرا بازنویسی نمیکند. وقتی عمداً میخواهید راهانداز فعال را جایگزین کنید، ابتدا سرویس را متوقف کنید یا از
openclaw gateway install --forceاستفاده کنید. - Doctor بهطور خودکار پیکربندی تخت قدیمی Talk (
talk.voiceId،talk.modelIdو موارد مشابه) را بهtalk.provider+talk.providers.<provider>مهاجرت میدهد. - اجراهای تکراری
doctor --fixدیگر وقتی تنها تفاوت ترتیب کلیدهای شیء باشد، عادیسازی Talk را گزارش/اعمال نمیکنند. - Doctor یک بررسی آمادگی جستوجوی حافظه دارد و وقتی اعتبارنامههای embedding مفقود باشند میتواند
openclaw configure --section modelرا پیشنهاد کند. - Doctor وقتی هیچ مالک فرمانی پیکربندی نشده باشد هشدار میدهد. مالک فرمان حساب اپراتور انسانی است که مجاز است فرمانهای فقطمالک را اجرا کند و اقدامهای خطرناک را تأیید کند. جفتسازی DM فقط اجازه میدهد فردی با ربات صحبت کند؛ اگر پیش از وجود bootstrap مالک اول فرستندهای را تأیید کردهاید،
commands.ownerAllowFromرا صریح تنظیم کنید. - Doctor وقتی عاملهای حالت Codex پیکربندی شدهاند و داراییهای شخصی Codex CLI در خانه Codex اپراتور وجود دارد هشدار میدهد. راهاندازیهای محلی app-server مربوط به Codex از خانههای جداگانه برای هر عامل استفاده میکنند، بنابراین برای فهرستبرداری از داراییهایی که باید عامدانه ارتقا داده شوند از
openclaw migrate codex --dry-runاستفاده کنید. - Doctor وقتی skills مجاز برای عامل پیشفرض در محیط runtime فعلی در دسترس نیستند، چون باینریها، env varها، پیکربندی یا الزامات 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 یک هشدار فقطخواندنی گزارش میکند و اعتبارنامههای جایگزین متن ساده نمینویسد. - اگر بازرسی SecretRef کانال در مسیر fix شکست بخورد، doctor بهجای خروج زودهنگام ادامه میدهد و هشدار گزارش میکند.
- پس از مهاجرتهای پوشه وضعیت، doctor وقتی حسابهای پیشفرض فعال Telegram یا Discord به fallback محیط وابستهاند و
TELEGRAM_BOT_TOKENیاDISCORD_BOT_TOKENبرای فرایند doctor در دسترس نیست، هشدار میدهد. - تفکیک خودکار نام کاربری
allowFromدر Telegram (doctor --fix) به یک توکن Telegram قابل تفکیک در مسیر فرمان فعلی نیاز دارد. اگر بازرسی توکن در دسترس نباشد، doctor هشدار گزارش میکند و تفکیک خودکار را برای آن عبور رد میکند.
macOS: بازنویسیهای env مربوط به launchctl
اگر پیشتر launchctl setenv OPENCLAW_GATEWAY_TOKEN ... (یا ...PASSWORD) را اجرا کردهاید، آن مقدار فایل پیکربندی شما را بازنویسی میکند و میتواند باعث خطاهای پایدار "unauthorized" شود.
launchctl getenv OPENCLAW_GATEWAY_TOKEN
launchctl getenv OPENCLAW_GATEWAY_PASSWORD
launchctl unsetenv OPENCLAW_GATEWAY_TOKEN
launchctl unsetenv OPENCLAW_GATEWAY_PASSWORD