CLI commands
ตัวตรวจวินิจฉัย
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; เฉพาะ migration ที่ปลอดภัยและการซ่อมแซมที่ไม่เกี่ยวกับบริการเท่านั้น--generate-gateway-token: สร้างและกำหนดค่าโทเค็น Gateway--deep: สแกนบริการระบบเพื่อหา Gateway ที่ติดตั้งเพิ่มเติม และรายงานการส่งต่อการรีสตาร์ทของ supervisor ของ Gateway ล่าสุด
หมายเหตุ:
- ในโหมด Nix (
OPENCLAW_NIX_MODE=1) การตรวจสอบ doctor แบบอ่านอย่างเดียวยังทำงานได้ แต่doctor --fix,doctor --repair,doctor --yesและdoctor --generate-gateway-tokenจะถูกปิดใช้งานเพราะopenclaw.jsonเปลี่ยนแปลงไม่ได้ ให้แก้ไขซอร์ส Nix สำหรับการติดตั้งนี้แทน; สำหรับ nix-openclaw ให้ใช้ เริ่มต้นอย่างรวดเร็ว แบบ agent-first - prompt แบบโต้ตอบ (เช่น การแก้ไข keychain/OAuth) จะรันเฉพาะเมื่อ stdin เป็น TTY และไม่ได้ตั้งค่า
--non-interactiveการรันแบบ headless (cron, Telegram, ไม่มีเทอร์มินัล) จะข้าม prompt - ประสิทธิภาพ: การรัน
doctorแบบไม่โต้ตอบจะข้ามการโหลด Plugin ล่วงหน้า เพื่อให้การตรวจสุขภาพแบบ headless ยังรวดเร็ว session แบบโต้ตอบยังโหลด Plugin เต็มรูปแบบเมื่อการตรวจสอบต้องการส่วนร่วมจาก Plugin เหล่านั้น --fix(นามแฝงของ--repair) เขียนข้อมูลสำรองไปที่~/.openclaw/openclaw.json.bakและตัดคีย์การกำหนดค่าที่ไม่รู้จักออก พร้อมแสดงรายการที่ถูกลบแต่ละรายการdoctor --fix --non-interactiveรายงานนิยามบริการ Gateway ที่ขาดหายหรือล้าสมัย แต่จะไม่ติดตั้งหรือเขียนใหม่ภายนอกโหมดซ่อมแซมการอัปเดต รันopenclaw gateway installสำหรับบริการที่ขาดหาย หรือopenclaw gateway install --forceเมื่อคุณตั้งใจต้องการแทนที่ launcher- ตอนนี้การตรวจสอบความถูกต้องของสถานะจะตรวจจับไฟล์ transcript กำพร้าในไดเรกทอรี sessions การเก็บถาวรเป็น
.deleted.<timestamp>ต้องมีการยืนยันแบบโต้ตอบ;--fix,--yesและการรันแบบ headless จะปล่อยไว้ตามเดิม - Doctor ยังสแกน
~/.openclaw/cron/jobs.json(หรือcron.store) เพื่อหารูปแบบงาน Cron แบบเก่า และสามารถเขียนใหม่ทับที่เดิมก่อนที่ scheduler จะต้อง auto-normalize ตอน runtime - บน Linux doctor จะเตือนเมื่อ crontab ของผู้ใช้ยังรัน
~/.openclaw/bin/ensure-whatsapp.shแบบเก่า; สคริปต์นั้นไม่ได้รับการดูแลแล้ว และอาจบันทึก outage ของ Gateway สำหรับ WhatsApp แบบผิดพลาดเมื่อ cron ไม่มีสภาพแวดล้อม systemd user-bus - เมื่อเปิดใช้ WhatsApp doctor จะตรวจสอบ event loop ของ Gateway ที่เสื่อมสภาพโดยมีไคลเอนต์
openclaw-tuiภายในเครื่องยังทำงานอยู่doctor --fixจะหยุดเฉพาะไคลเอนต์ TUI ภายในเครื่องที่ตรวจยืนยันแล้ว เพื่อให้การตอบกลับ WhatsApp ไม่ถูกคิวไว้หลังลูป refresh ของ TUI ที่ค้างอยู่ - Doctor เขียน model ref แบบเก่า
openai-codex/*ใหม่เป็น ref มาตรฐานopenai/*ทั่วทั้งโมเดลหลัก fallback, override ของ heartbeat/subagent/compaction, hooks, override โมเดลช่องทาง และ route pin ของ session ที่ล้าสมัย--fixจะเลือกagentRuntime.id: "codex"เฉพาะเมื่อมีการติดตั้ง Plugin Codex, เปิดใช้งานอยู่, มี harnesscodexและมี OAuth ที่ใช้งานได้; มิฉะนั้นจะเลือกagentRuntime.id: "pi"เพื่อให้ route ยังคงอยู่บน runner เริ่มต้นของ OpenClaw - Doctor ล้างสถานะ staging ของ dependency ของ Plugin แบบเก่าที่สร้างโดย OpenClaw เวอร์ชันเก่า นอกจากนี้ยังซ่อม Plugin ที่ดาวน์โหลดได้ซึ่งขาดหายและถูกอ้างอิงโดยการกำหนดค่า เช่น
plugins.entries, ช่องทางที่กำหนดค่าไว้, การตั้งค่า provider/search ที่กำหนดค่าไว้ หรือ runtime ของ agent ที่กำหนดค่าไว้ ระหว่างการอัปเดตแพ็กเกจ doctor จะข้ามการซ่อม Plugin ของ package-manager จนกว่าการสลับแพ็กเกจจะเสร็จสมบูรณ์; จากนั้นให้รันopenclaw doctor --fixอีกครั้งหาก Plugin ที่กำหนดค่าไว้ยังต้องกู้คืน หากการดาวน์โหลดล้มเหลว doctor จะรายงานข้อผิดพลาดการติดตั้งและเก็บรายการ Plugin ที่กำหนดค่าไว้สำหรับความพยายามซ่อมครั้งถัดไป - Doctor ซ่อมการกำหนดค่า Plugin ที่ล้าสมัยโดยลบ id ของ Plugin ที่ขาดหายออกจาก
plugins.allow/plugins.entriesพร้อมกับการกำหนดค่าช่องทางที่ค้างอยู่, target ของ heartbeat และ override โมเดลช่องทางที่ตรงกัน เมื่อการค้นพบ Plugin อยู่ในสถานะปกติ - Doctor กักกันการกำหนดค่า Plugin ที่ไม่ถูกต้องโดยปิดใช้งานรายการ
plugins.entries.<id>ที่ได้รับผลกระทบ และลบ payloadconfigที่ไม่ถูกต้องออก การเริ่มต้น Gateway ข้ามเฉพาะ Plugin ที่เสียตัวนั้นอยู่แล้ว เพื่อให้ Plugin และช่องทางอื่นยังทำงานต่อได้ - ตั้งค่า
OPENCLAW_SERVICE_REPAIR_POLICY=externalเมื่อ supervisor อื่นเป็นเจ้าของ lifecycle ของ Gateway Doctor ยังรายงานสุขภาพ Gateway/บริการและใช้การซ่อมแซมที่ไม่เกี่ยวกับบริการ แต่จะข้ามการติดตั้ง/เริ่ม/รีสตาร์ท/บูตสแตรปบริการ และการล้างบริการเก่า - บน Linux doctor จะเพิกเฉยต่อ systemd unit เพิ่มเติมที่คล้าย Gateway ซึ่งไม่ได้ active และจะไม่เขียน metadata ของ command/entrypoint ใหม่สำหรับบริการ Gateway ของ systemd ที่กำลังทำงานระหว่างการซ่อม หยุดบริการก่อน หรือใช้
openclaw gateway install --forceเมื่อคุณตั้งใจต้องการแทนที่ launcher ที่ active อยู่ - Doctor auto-migrate การกำหนดค่า Talk แบบ flat เก่า (
talk.voiceId,talk.modelIdและรายการที่เกี่ยวข้อง) ไปเป็นtalk.provider+talk.providers.<provider> - การรัน
doctor --fixซ้ำจะไม่รายงาน/ใช้การ normalize ของ Talk อีกต่อไปเมื่อความแตกต่างมีเพียงลำดับคีย์ของ object - Doctor รวมการตรวจสอบความพร้อมของ memory-search และสามารถแนะนำ
openclaw configure --section modelเมื่อไม่มี credentials สำหรับ embedding - Doctor เตือนเมื่อไม่มีการกำหนดค่าเจ้าของคำสั่ง เจ้าของคำสั่งคือบัญชีผู้ดำเนินการที่เป็นมนุษย์ซึ่งได้รับอนุญาตให้รันคำสั่งเฉพาะเจ้าของและอนุมัติการดำเนินการอันตราย การจับคู่ DM เพียงแค่ทำให้บางคนคุยกับ bot ได้; หากคุณเคยอนุมัติผู้ส่งก่อนมีการบูตสแตรปเจ้าของคนแรก ให้ตั้งค่า
commands.ownerAllowFromอย่างชัดเจน - Doctor เตือนเมื่อมีการกำหนดค่า agent โหมด Codex และมี asset ของ Codex CLI ส่วนตัวอยู่ใน Codex home ของผู้ดำเนินการ การเปิด app-server ของ Codex ภายในเครื่องใช้ home แบบแยกต่อ agent ดังนั้นให้ใช้
openclaw migrate codex --dry-runเพื่อทำ inventory asset ที่ควรโปรโมตอย่างตั้งใจ - Doctor เตือนเมื่อ Skills ที่อนุญาตสำหรับ agent เริ่มต้นไม่พร้อมใช้งานในสภาพแวดล้อม runtime ปัจจุบัน เพราะขาด bin, env var, config หรือข้อกำหนดของ OS
doctor --fixสามารถปิดใช้งาน Skills ที่ไม่พร้อมใช้งานเหล่านั้นด้วยskills.entries.<skill>.enabled=false; ให้ติดตั้ง/กำหนดค่าข้อกำหนดที่ขาดหายแทนเมื่อคุณต้องการให้ skill ยัง active - หากเปิดใช้โหมด 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จะ migrate รายการที่ถูกต้องไปยังไดเรกทอรี registry แบบ sharded และกักกันไฟล์เก่าที่ไม่ถูกต้อง - หาก
gateway.auth.token/gateway.auth.passwordถูกจัดการโดย SecretRef และไม่พร้อมใช้งานใน command path ปัจจุบัน doctor จะรายงานคำเตือนแบบอ่านอย่างเดียวและไม่เขียน credentials สำรองแบบ plaintext - หากการตรวจสอบ SecretRef ของช่องทางล้มเหลวใน path การแก้ไข doctor จะทำงานต่อและรายงานคำเตือนแทนที่จะออกก่อนกำหนด
- หลัง migration ของไดเรกทอรีสถานะ doctor จะเตือนเมื่อบัญชี Telegram หรือ Discord เริ่มต้นที่เปิดใช้งานอยู่พึ่งพา env fallback และ
TELEGRAM_BOT_TOKENหรือDISCORD_BOT_TOKENไม่พร้อมใช้งานกับ process ของ doctor - การ auto-resolution ชื่อผู้ใช้
allowFromของ Telegram (doctor --fix) ต้องใช้โทเค็น Telegram ที่ resolve ได้ใน command path ปัจจุบัน หากการตรวจสอบโทเค็นไม่พร้อมใช้งาน doctor จะรายงานคำเตือนและข้าม auto-resolution สำหรับรอบนั้น
macOS: override env ของ launchctl
หากก่อนหน้านี้คุณเคยรัน launchctl setenv OPENCLAW_GATEWAY_TOKEN ... (หรือ ...PASSWORD) ค่านั้นจะ override ไฟล์ config ของคุณ และอาจทำให้เกิดข้อผิดพลาด "unauthorized" อย่างต่อเนื่อง
launchctl getenv OPENCLAW_GATEWAY_TOKEN
launchctl getenv OPENCLAW_GATEWAY_PASSWORD
launchctl unsetenv OPENCLAW_GATEWAY_TOKEN
launchctl unsetenv OPENCLAW_GATEWAY_PASSWORD