Doctor¶
openclaw doctor คือเครื่องมือซ่อมแซมและย้ายข้อมูลสำหรับ OpenClaw ใช้แก้ไข
คอนฟิก/สถานะที่ค้าง ตรวจสุขภาพ และให้ขั้นตอนการซ่อมแซมที่ทำได้จริง 26. มันแก้ไขคอนฟิก/สถานะที่ค้าง ตรวจสอบสุขภาพ และให้ขั้นตอนการซ่อมแซมที่นำไปปฏิบัติได้
เริ่มต้นอย่างรวดเร็ว¶
openclaw doctor
แบบไม่ต้องโต้ตอบ / อัตโนมัติ¶
openclaw doctor --yes
ยอมรับค่าเริ่มต้นโดยไม่ถาม (รวมถึงขั้นตอนการรีสตาร์ท/บริการ/sandbox เมื่อมี)
openclaw doctor --repair
ใช้การซ่อมแซมที่แนะนำโดยไม่ถาม (ซ่อมแซม+รีสตาร์ทเมื่อปลอดภัย)
openclaw doctor --repair --force
ใช้การซ่อมแซมเชิงรุกด้วย (เขียนทับคอนฟิก supervisor ที่กำหนดเอง)
openclaw doctor --non-interactive
รันโดยไม่ถามและใช้เฉพาะการย้ายข้อมูลที่ปลอดภัย (การทำให้คอนฟิกเป็นมาตรฐาน+การย้ายสถานะบนดิสก์) ข้ามการรีสตาร์ท/บริการ/sandbox ที่ต้องการการยืนยันจากมนุษย์ การย้ายสถานะรุ่นเก่าจะรันอัตโนมัติเมื่อถูกตรวจพบ 27. ข้ามการรีสตาร์ต/บริการ/แซนด์บ็อกซ์ที่ต้องการการยืนยันจากมนุษย์ 28. การย้ายสถานะเดิม (legacy) จะรันอัตโนมัติเมื่อถูกตรวจพบ
openclaw doctor --deep
สแกนบริการระบบเพื่อค้นหาการติดตั้ง gateway เพิ่มเติม (launchd/systemd/schtasks)
หากต้องการตรวจทานการเปลี่ยนแปลงก่อนเขียน ให้เปิดไฟล์คอนฟิกก่อน:
cat ~/.openclaw/openclaw.json
ทำอะไรบ้าง (สรุป)¶
- อัปเดตก่อนเริ่มต้นแบบเลือกได้สำหรับการติดตั้งจาก git (เฉพาะโหมดโต้ตอบ)
- ตรวจความใหม่ของโปรโตคอล UI (สร้าง Control UI ใหม่เมื่อสคีมาของโปรโตคอลใหม่กว่า)
- ตรวจสุขภาพ+พรอมต์รีสตาร์ท
- สรุปสถานะ Skills (เข้าเกณฑ์/ขาดหาย/ถูกบล็อก)
- ทำให้คอนฟิกเป็นมาตรฐานสำหรับค่ารุ่นเก่า
- คำเตือนการ override ผู้ให้บริการ OpenCode Zen (
models.providers.opencode) - การย้ายสถานะบนดิสก์รุ่นเก่า (เซสชัน/ไดเรกทอรีเอเจนต์/การยืนยันตัวตน WhatsApp)
- ตรวจความถูกต้องและสิทธิ์ของสถานะ (เซสชัน ทรานสคริปต์ ไดเรกทอรีสถานะ)
- ตรวจสิทธิ์ไฟล์คอนฟิก (chmod 600) เมื่อรันในเครื่อง
- สุขภาพการยืนยันตัวตนของโมเดล: ตรวจวันหมดอายุ OAuth สามารถรีเฟรชโทเคนที่ใกล้หมดอายุ และรายงานสถานะคูลดาวน์/ปิดใช้งานของโปรไฟล์การยืนยันตัวตน
-
- การตรวจจับไดเรกทอรีเวิร์กสเปซเพิ่มเติม (
~/openclaw).
- การตรวจจับไดเรกทอรีเวิร์กสเปซเพิ่มเติม (
- ซ่อมแซมอิมเมจ Sandbox เมื่อเปิดใช้งาน sandboxing
- การย้ายบริการรุ่นเก่าและการตรวจพบ gateway เพิ่มเติม
- ตรวจรันไทม์ของ Gateway(เกตเวย์) (ติดตั้งบริการแล้วแต่ไม่รัน; แคช label ของ launchd)
- คำเตือนสถานะช่องทาง (ตรวจจาก gateway ที่กำลังรัน)
- ตรวจสอบคอนฟิก supervisor (launchd/systemd/schtasks) พร้อมซ่อมแซมแบบเลือกได้
- ตรวจแนวปฏิบัติที่ดีของรันไทม์ Gateway(เกตเวย์) (Node เทียบกับ Bun, พาธตัวจัดการเวอร์ชัน)
- วินิจฉัยการชนพอร์ตของ Gateway(เกตเวย์) (ค่าเริ่มต้น
18789) - คำเตือนความปลอดภัยสำหรับนโยบาย DM แบบเปิด
- คำเตือนการยืนยันตัวตนของ Gateway(เกตเวย์) เมื่อไม่ได้ตั้งค่า
gateway.auth.token(โหมดภายในเครื่อง; เสนอการสร้างโทเคน) - ตรวจ systemd linger บน Linux
- ตรวจการติดตั้งจากซอร์ส (pnpm workspace ไม่ตรงกัน, ขาด UI assets, ขาดไบนารี tsx)
- เขียนคอนฟิกที่อัปเดตแล้ว+เมทาดาทาของวิซาร์ด
พฤติกรรมและเหตุผลโดยละเอียด¶
0. อัปเดตแบบเลือกได้ (การติดตั้งจาก git)¶
หากเป็นการเช็กเอาต์จาก git และรัน doctor แบบโต้ตอบ ระบบจะเสนอให้อัปเดต (fetch/rebase/build) ก่อนรัน doctor
1. การทำให้คอนฟิกเป็นมาตรฐาน¶
หากคอนฟิกมีรูปแบบค่ารุ่นเก่า (เช่น messages.ackReaction
โดยไม่มี override เฉพาะช่องทาง) doctor จะทำให้เป็นสคีมาปัจจุบัน
2. การย้ายคีย์คอนฟิกรุ่นเก่า¶
เมื่อคอนฟิกมีคีย์ที่เลิกใช้แล้ว คำสั่งอื่นจะปฏิเสธการรันและขอให้คุณรัน
openclaw doctor.
Doctor จะ:
- อธิบายว่าพบคีย์รุ่นเก่าใดบ้าง
- แสดงการย้ายข้อมูลที่นำไปใช้
- เขียน
~/.openclaw/openclaw.jsonใหม่ด้วยสคีมาที่อัปเดตแล้ว
Gateway(เกตเวย์)ยังรันการย้ายข้อมูลของ doctor อัตโนมัติเมื่อเริ่มต้น หากตรวจพบ รูปแบบคอนฟิกรุ่นเก่า เพื่อซ่อมแซมคอนฟิกที่ค้างโดยไม่ต้องแทรกแซงด้วยตนเอง
การย้ายข้อมูลปัจจุบัน:
routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternsrouting.queue→messages.queuerouting.bindings→ ระดับบนสุดbindingsrouting.agents/routing.defaultAgentId→agents.list+agents.list[].defaultrouting.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsbindings[].match.accountID→bindings[].match.accountIdidentity→agents.list[].identityagent.*→agents.defaults+tools.*(tools/elevated/exec/sandbox/subagents)agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks→agents.defaults.models+agents.defaults.model.primary/fallbacks+agents.defaults.imageModel.primary/fallbacks
2b) การ override ผู้ให้บริการ OpenCode Zen¶
หากคุณเพิ่ม models.providers.opencode (หรือ opencode-zen) ด้วยตนเอง
มันจะ override แคตตาล็อก OpenCode Zen ที่มีมาในตัวจาก @mariozechner/pi-ai
ซึ่งอาจบังคับให้ทุกโมเดลใช้ API เดียวหรือทำให้ค่าใช้จ่ายเป็นศูนย์ Doctor จะเตือน
เพื่อให้คุณลบ override และกู้คืนการกำหนดเส้นทาง API และค่าใช้จ่ายรายโมเดล 30. สิ่งนั้นสามารถบังคับให้ทุกโมเดลใช้ API เดียว หรือทำให้ค่าใช้จ่ายเป็นศูนย์ได้ 31. Doctor จะเตือนเพื่อให้คุณลบการกำหนดทับ และคืนค่าการกำหนดเส้นทาง API และค่าใช้จ่ายแบบรายโมเดล
3. การย้ายสถานะรุ่นเก่า (โครงร่างดิสก์)¶
Doctor สามารถย้ายโครงร่างบนดิสก์รุ่นเก่าไปยังโครงสร้างปัจจุบันได้:
- ที่เก็บเซสชัน+ทรานสคริปต์:
- จาก
~/.openclaw/sessions/ไปยัง~/.openclaw/agents/<agentId>/sessions/ - ไดเรกทอรีเอเจนต์:
- จาก
~/.openclaw/agent/ไปยัง~/.openclaw/agents/<agentId>/agent/ - สถานะการยืนยันตัวตน WhatsApp (Baileys):
- จากรุ่นเก่า
~/.openclaw/credentials/*.json(ยกเว้นoauth.json) - ไปยัง
~/.openclaw/credentials/whatsapp/<accountId>/...(ไอดีบัญชีเริ่มต้น:default)
- การย้ายเหล่านี้เป็นแบบ best-effort และ idempotent; doctor จะส่งคำเตือนเมื่อยังมีโฟลเดอร์ legacy เหลือไว้เป็นแบ็กอัป การย้ายเหล่านี้เป็นแบบ best-effort และ idempotent; doctor จะส่งคำเตือนเมื่อ
ยังคงเหลือโฟลเดอร์รุ่นเก่าไว้เป็นแบ็กอัป Gateway(เกตเวย์)/CLI ยังย้าย
เซสชันรุ่นเก่า+ไดเรกทอรีเอเจนต์อัตโนมัติเมื่อเริ่มต้น เพื่อให้ประวัติ/การยืนยันตัวตน/โมเดลไปอยู่ในพาธต่อเอเจนต์โดยไม่ต้องรัน doctor ด้วยตนเอง การยืนยันตัวตน WhatsApp
ตั้งใจให้ย้ายผ่าน
openclaw doctorเท่านั้น 33. การยืนยันตัวตน WhatsApp ถูกออกแบบให้ย้ายผ่านopenclaw doctorเท่านั้น
4. การตรวจความถูกต้องของสถานะ (การคงอยู่ของเซสชัน การกำหนดเส้นทาง และความปลอดภัย)¶
- ไดเรกทอรีสถานะคือสมองส่วนควบคุมการทำงาน ไดเรกทอรีสถานะคือศูนย์กลางการทำงาน หากหายไป คุณจะสูญเสีย เซสชัน ข้อมูลยืนยันตัวตน บันทึก และคอนฟิก (เว้นแต่มีแบ็กอัปที่อื่น)
Doctor ตรวจสอบ:
- ไดเรกทอรีสถานะหายไป: เตือนการสูญเสียสถานะอย่างร้ายแรง พรอมต์ให้สร้างไดเรกทอรีใหม่ และย้ำว่าไม่สามารถกู้คืนข้อมูลที่หายไปได้
- สิทธิ์ไดเรกทอรีสถานะ: ตรวจความสามารถในการเขียน; เสนอซ่อมแซมสิทธิ์
(และแสดงคำแนะนำ
chownเมื่อพบ owner/group ไม่ตรงกัน) - ไดเรกทอรีเซสชันหายไป: ต้องมี
sessions/และไดเรกทอรีที่เก็บเซสชัน เพื่อคงประวัติและหลีกเลี่ยงการล่มแบบENOENT - ทรานสคริปต์ไม่ตรงกัน: เตือนเมื่อรายการเซสชันล่าสุดขาดไฟล์ทรานสคริปต์
- เซสชันหลัก “JSONL บรรทัดเดียว”: แจ้งเตือนเมื่อทรานสคริปต์หลักมีเพียงหนึ่งบรรทัด (ประวัติไม่สะสม)
- หลายไดเรกทอรีสถานะ: เตือนเมื่อมีโฟลเดอร์
~/.openclawหลายแห่งในโฮมไดเรกทอรี หรือเมื่อOPENCLAW_STATE_DIRชี้ไปที่อื่น (ประวัติอาจแยกระหว่างการติดตั้ง) - เตือนโหมดรีโมต: หากเป็น
gateway.mode=remotedoctor จะเตือนให้คุณรัน บนโฮสต์ระยะไกล (สถานะอยู่ที่นั่น) - สิทธิ์ไฟล์คอนฟิก: เตือนหาก
~/.openclaw/openclaw.jsonอ่านได้โดยกลุ่ม/สาธารณะ และเสนอให้ปรับให้เข้มงวดเป็น600
5. สุขภาพการยืนยันตัวตนของโมเดล (วันหมดอายุ OAuth)¶
Doctor ตรวจโปรไฟล์ OAuth ในที่เก็บการยืนยันตัวตน เตือนเมื่อโทเคนใกล้หมดอายุ/หมดอายุ
และสามารถรีเฟรชได้เมื่อปลอดภัย หากโปรไฟล์ Anthropic Claude Code ค้าง
จะแนะนำให้รัน claude setup-token (หรือวาง setup-token)
พรอมต์การรีเฟรชจะปรากฏเฉพาะเมื่อรันแบบโต้ตอบ (TTY); --non-interactive
จะข้ามความพยายามรีเฟรช 35. หากโปรไฟล์ Anthropic Claude Code ล้าสมัย ระบบจะแนะนำให้รัน claude setup-token (หรือวาง setup-token)
36. การรีเฟรชพรอมป์จะปรากฏเฉพาะเมื่อรันแบบโต้ตอบ (TTY); --non-interactive จะข้ามความพยายามรีเฟรช
Doctor ยังรายงานโปรไฟล์การยืนยันตัวตนที่ใช้งานไม่ได้ชั่วคราวเนื่องจาก:
- คูลดาวน์สั้น (อัตราจำกัด/หมดเวลา/ล้มเหลวการยืนยันตัวตน)
- การปิดใช้งานที่ยาวกว่า (ปัญหาการเรียกเก็บเงิน/เครดิต)
6. การตรวจสอบโมเดล Hooks¶
หากตั้งค่า hooks.gmail.model doctor จะตรวจอ้างอิงโมเดลกับแคตตาล็อกและรายการอนุญาต
และเตือนเมื่อไม่สามารถ resolve ได้หรือถูกห้ามใช้
7. การซ่อมแซมอิมเมจ Sandbox¶
เมื่อเปิดใช้งาน sandboxing doctor จะตรวจอิมเมจ Docker และเสนอให้สร้างหรือ สลับไปใช้ชื่อรุ่นเก่าหากอิมเมจปัจจุบันหายไป
8. การย้ายบริการ Gateway(เกตเวย์)และคำแนะนำการทำความสะอาด¶
Doctor ตรวจพบบริการ gateway รุ่นเก่า (launchd/systemd/schtasks) และ เสนอให้ลบออกและติดตั้งบริการ OpenClaw ด้วยพอร์ต gateway ปัจจุบัน นอกจากนี้ยังสแกน หาบริการลักษณะ gateway เพิ่มเติมและพิมพ์คำแนะนำการทำความสะอาด บริการ OpenClaw gateway ที่ตั้งชื่อตามโปรไฟล์ถือเป็นชั้นหนึ่งและไม่ถูก ทำเครื่องหมายว่าเป็น "ส่วนเกิน" 37. นอกจากนี้ยังสามารถสแกนหาบริการคล้าย gateway เพิ่มเติมและพิมพ์คำแนะนำการทำความสะอาด 38. บริการ OpenClaw gateway ที่ตั้งชื่อตามโปรไฟล์ถือเป็น first-class และจะไม่ถูกทำเครื่องหมายว่าเป็น "extra"
9. คำเตือนด้านความปลอดภัย¶
Doctor ส่งคำเตือนเมื่อผู้ให้บริการเปิดรับ DM โดยไม่มีรายการอนุญาต หรือ เมื่อคอนฟิกนโยบายถูกตั้งค่าในลักษณะที่อันตราย
10. systemd linger (Linux)¶
หากรันเป็นบริการผู้ใช้ systemd doctor จะตรวจให้แน่ใจว่าเปิดใช้งาน lingering เพื่อให้ gateway ทำงานต่อหลังออกจากระบบ
11. สถานะ Skills¶
Doctor พิมพ์สรุปอย่างรวดเร็วของ Skills ที่เข้าเกณฑ์/ขาดหาย/ถูกบล็อกสำหรับเวิร์กสเปซปัจจุบัน
12. การตรวจการยืนยันตัวตนของ Gateway(เกตเวย์) (โทเคนภายในเครื่อง)¶
- Doctor จะเตือนเมื่อไม่มี
gateway.authบน gateway ภายในเครื่อง และเสนอที่จะสร้างโทเค็น Doctor เตือนเมื่อไม่มีgateway.authบน gateway ภายในเครื่อง และเสนอให้ สร้างโทเคน ใช้openclaw doctor --generate-gateway-tokenเพื่อบังคับการสร้างโทเคนในงานอัตโนมัติ
13. ตรวจสุขภาพ Gateway(เกตเวย์)+รีสตาร์ท¶
Doctor รันการตรวจสุขภาพและเสนอให้รีสตาร์ท gateway เมื่อดูไม่ปกติ
14. คำเตือนสถานะช่องทาง¶
หาก gateway สุขภาพดี doctor จะรันการตรวจสถานะช่องทางและรายงาน คำเตือนพร้อมวิธีแก้ไขที่แนะนำ
15. ตรวจสอบคอนฟิก supervisor+ซ่อมแซม¶
Doctor ตรวจคอนฟิก supervisor ที่ติดตั้ง (launchd/systemd/schtasks) ว่าขาดหรือ ล้าสมัยจากค่าเริ่มต้นหรือไม่ (เช่น dependency network-online ของ systemd และ ดีเลย์การรีสตาร์ท) เมื่อพบความไม่ตรงกัน จะเสนอการอัปเดตและสามารถ เขียนไฟล์บริการ/งานใหม่เป็นค่าเริ่มต้นปัจจุบัน 40. เมื่อพบความไม่ตรงกัน ระบบจะแนะนำให้อัปเดตและสามารถเขียนไฟล์บริการ/งานใหม่ให้เป็นค่าเริ่มต้นปัจจุบันได้
หมายเหตุ:
openclaw doctorจะถามก่อนเขียนคอนฟิก supervisor ใหม่openclaw doctor --yesยอมรับพรอมต์การซ่อมแซมค่าเริ่มต้นopenclaw doctor --repairใช้การแก้ไขที่แนะนำโดยไม่ถามopenclaw doctor --repair --forceเขียนทับคอนฟิก supervisor ที่กำหนดเอง- คุณสามารถบังคับการเขียนใหม่ทั้งหมดได้ผ่าน
openclaw gateway install --force
16. วินิจฉัยรันไทม์และพอร์ตของ Gateway(เกตเวย์)¶
- Doctor ตรวจสอบรันไทม์ของบริการ (PID, สถานะการออกล่าสุด) และเตือนเมื่อบริการถูกติดตั้งแต่ไม่ได้กำลังทำงาน Doctor ตรวจรันไทม์ของบริการ (PID, สถานะการออกล่าสุด) และเตือนเมื่อ
ติดตั้งบริการแล้วแต่ไม่ได้รันจริง นอกจากนี้ยังตรวจการชนพอร์ต
บนพอร์ต gateway (ค่าเริ่มต้น
18789) และรายงานสาเหตุที่เป็นไปได้ (gateway กำลังรันอยู่แล้ว, อุโมงค์SSH)
17. แนวปฏิบัติที่ดีของรันไทม์ Gateway(เกตเวย์)¶
Doctor เตือนเมื่อบริการ gateway รันบน Bun หรือพาธ Node ที่จัดการเวอร์ชัน
(nvm, fnm, volta, asdf ฯลฯ) ช่องทาง WhatsApp+Telegram ต้องการ Node
และพาธจากตัวจัดการเวอร์ชันอาจพังหลังอัปเกรดเพราะบริการไม่โหลด shell init
Doctor จะเสนอให้ย้ายไปใช้ Node ที่ติดตั้งในระบบเมื่อมี (Homebrew/apt/choco) 42. ช่องทาง WhatsApp + Telegram ต้องใช้ Node และพาธของตัวจัดการเวอร์ชันอาจพังหลังอัปเกรด เพราะบริการไม่โหลด shell init ของคุณ 43. Doctor เสนอให้ย้ายไปใช้ Node ที่ติดตั้งในระบบเมื่อมีให้ใช้ (Homebrew/apt/choco)
18. การเขียนคอนฟิก+เมทาดาทาของวิซาร์ด¶
Doctor จะบันทึกการเปลี่ยนแปลงคอนฟิกและประทับเมทาดาทาของวิซาร์ดเพื่อบันทึกการรัน doctor
19. เคล็ดลับเวิร์กสเปซ (แบ็กอัป+ระบบหน่วยความจำ)¶
Doctor แนะนำระบบหน่วยความจำของเวิร์กสเปซเมื่อยังไม่มี และพิมพ์เคล็ดลับการแบ็กอัป หากเวิร์กสเปซยังไม่อยู่ภายใต้ git
ดู /concepts/agent-workspace สำหรับคู่มือฉบับเต็มเกี่ยวกับ โครงสร้างเวิร์กสเปซและการแบ็กอัปด้วย git (แนะนำ GitHub หรือ GitLab แบบส่วนตัว)