Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw doctor คือเครื่องมือซ่อมแซมและย้ายข้อมูลสำหรับ OpenClaw เครื่องมือนี้แก้ไข config/state ที่ค้างเก่า ตรวจสอบสุขภาพ และให้ขั้นตอนการซ่อมแซมที่นำไปปฏิบัติได้
เริ่มใช้งานอย่างรวดเร็ว
โหมด headless และ automation
- --yes
- --repair
- --repair --force
- --non-interactive
- --deep
สิ่งที่เครื่องมือนี้ทำ (สรุป)
สุขภาพ, UI, และการอัปเดต
สุขภาพ, UI, และการอัปเดต
- การอัปเดตก่อนเริ่มแบบเลือกได้สำหรับ git install (เฉพาะแบบ interactive)
- การตรวจสอบความสดใหม่ของโปรโตคอล UI (สร้าง Control UI ใหม่เมื่อ protocol schema ใหม่กว่า)
- การตรวจสุขภาพและ prompt ให้รีสตาร์ต
- สรุปสถานะ Skills (eligible/missing/blocked) และสถานะ Plugin
Config และการย้ายข้อมูล
Config และการย้ายข้อมูล
- การปรับ config ให้เป็นรูปแบบมาตรฐานสำหรับค่า legacy
- การย้าย config ของ Talk จากฟิลด์แบนแบบ legacy
talk.*ไปเป็นtalk.provider+talk.providers.<provider> - การตรวจสอบการย้ายเบราว์เซอร์สำหรับ config ส่วนขยาย Chrome รุ่นเก่าและความพร้อมของ Chrome MCP
- คำเตือน override provider ของ OpenCode (
models.providers.opencode/models.providers.opencode-go) - คำเตือนการ shadowing ของ Codex OAuth (
models.providers.openai-codex) - การตรวจสอบข้อกำหนดเบื้องต้นของ OAuth TLS สำหรับโปรไฟล์ OpenAI Codex OAuth
- คำเตือน allowlist ของ Plugin/tool เมื่อ
plugins.allowจำกัดไว้ แต่ policy ของ tool ยังขอ wildcard หรือ tool ที่ Plugin เป็นเจ้าของ - การย้าย state บนดิสก์รุ่นเก่า (sessions/agent dir/WhatsApp auth)
- การย้ายคีย์สัญญา manifest ของ Plugin รุ่นเก่า (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts) - การย้าย cron store รุ่นเก่า (
jobId,schedule.cron, ฟิลด์ delivery/payload ระดับบน, payloadprovider, งาน webhook fallback แบบง่ายnotify: true) - การล้าง whole-agent runtime-policy รุ่นเก่า; provider/model runtime policy คือ route selector ที่ใช้งานอยู่
- การล้าง config ของ Plugin ที่ค้างเก่าเมื่อเปิดใช้ plugins; เมื่อ
plugins.enabled=falseการอ้างอิง Plugin ที่ค้างเก่าจะถือเป็น inert containment config และจะถูกเก็บไว้
State และความถูกต้องสมบูรณ์
State และความถูกต้องสมบูรณ์
- การตรวจสอบไฟล์ session lock และการล้าง lock ที่ค้างเก่า
- การซ่อม transcript ของ session สำหรับกิ่ง prompt-rewrite ที่ซ้ำกันซึ่งสร้างโดย build วันที่ 2026.4.24 ที่ได้รับผลกระทบ
- การตรวจจับ tombstone ของการกู้คืนด้วยการรีสตาร์ต subagent ที่ค้าง พร้อมรองรับ
--fixเพื่อล้าง flag การกู้คืนที่ถูกยกเลิกซึ่งค้างเก่า เพื่อไม่ให้ startup ยังปฏิบัติต่อ child ว่าเป็น restart-aborted ต่อไป - การตรวจสอบความถูกต้องสมบูรณ์ของ state และสิทธิ์ (sessions, transcripts, state dir)
- การตรวจสอบสิทธิ์ของไฟล์ config (chmod 600) เมื่อรันในเครื่อง
- สุขภาพ auth ของ model: ตรวจสอบการหมดอายุของ OAuth, สามารถ refresh token ที่ใกล้หมดอายุ, และรายงานสถานะ cooldown/disabled ของ auth-profile
- การตรวจจับ workspace dir เพิ่มเติม (
~/openclaw)
Gateway, service, และ supervisor
Gateway, service, และ supervisor
- การซ่อม sandbox image เมื่อเปิดใช้ sandboxing
- การย้าย service รุ่นเก่าและการตรวจจับ gateway เพิ่มเติม
- การย้าย state รุ่นเก่าของช่อง Matrix (ในโหมด
--fix/--repair) - การตรวจสอบ runtime ของ Gateway (ติดตั้ง service แล้วแต่ไม่รัน; label launchd ที่แคชไว้)
- คำเตือนสถานะช่อง (probe จาก gateway ที่กำลังรัน)
- การตรวจสอบสิทธิ์เฉพาะช่องอยู่ภายใต้
openclaw channels capabilities; ตัวอย่างเช่น สิทธิ์ของช่องเสียง Discord จะถูก audit ด้วยopenclaw channels capabilities --channel discord --target channel:<channel-id> - การตรวจสอบการตอบสนองของ WhatsApp สำหรับสุขภาพ event-loop ของ Gateway ที่เสื่อมลงโดยยังมี local TUI client รันอยู่;
--fixหยุดเฉพาะ local TUI client ที่ยืนยันแล้วเท่านั้น - การซ่อม route ของ Codex สำหรับ model ref รุ่นเก่า
openai-codex/*ใน primary models, fallbacks, heartbeat/subagent/compaction overrides, hooks, channel model overrides, และ session route pins;--fixเขียนใหม่เป็นopenai/*, ลบ session/whole-agent runtime pins ที่ค้างเก่า, และคง OpenAI agent refs แบบ canonical ไว้บน harness Codex เริ่มต้น - การ audit config ของ supervisor (launchd/systemd/schtasks) พร้อมการซ่อมแบบเลือกได้
- การล้างสภาพแวดล้อม proxy แบบ embedded สำหรับ service ของ gateway ที่จับค่า shell
HTTP_PROXY/HTTPS_PROXY/NO_PROXYไว้ระหว่าง install หรือ update - การตรวจสอบ best practice ของ runtime Gateway (Node เทียบกับ Bun, path ของ version-manager)
- การวิเคราะห์ port collision ของ Gateway (ค่าเริ่มต้น
18789)
Auth, security, และ pairing
Auth, security, และ pairing
- คำเตือนด้าน security สำหรับ policy ของ DM ที่เปิดกว้าง
- การตรวจสอบ auth ของ Gateway สำหรับโหมด token local (เสนอการสร้าง token เมื่อไม่มีแหล่ง token; ไม่เขียนทับ config SecretRef ของ token)
- การตรวจจับปัญหา device pairing (คำขอจับคู่ครั้งแรกที่ค้างอยู่, การอัปเกรด role/scope ที่ค้างอยู่, drift ของ local device-token cache ที่ค้างเก่า, และ drift ของ auth ใน paired-record)
Workspace และ shell
Workspace และ shell
- การตรวจสอบ systemd linger บน Linux
- การตรวจสอบขนาดไฟล์ bootstrap ของ workspace (คำเตือนเรื่องการตัดทอน/ใกล้ขีดจำกัดสำหรับไฟล์ context)
- การตรวจสอบความพร้อมของ Skills สำหรับ agent เริ่มต้น; รายงาน skills ที่อนุญาตแต่ขาด bin, env, config, หรือข้อกำหนด OS และ
--fixสามารถปิดใช้ skills ที่ไม่พร้อมในskills.entries - การตรวจสอบสถานะ shell completion และการติดตั้ง/อัปเกรดอัตโนมัติ
- การตรวจสอบความพร้อมของ provider สำหรับ memory search embedding (model local, คีย์ remote API, หรือ binary QMD)
- การตรวจสอบ source install (pnpm workspace ไม่ตรงกัน, asset UI หาย, binary tsx หาย)
- เขียน config และ metadata ของ wizard ที่อัปเดตแล้ว
Dreams UI backfill และ reset
ฉาก Dreams ใน Control UI มี action Backfill, Reset, และ Clear Grounded สำหรับ workflow grounded dreaming action เหล่านี้ใช้เมธอด RPC แบบ gateway doctor แต่ ไม่ใช่ ส่วนหนึ่งของการซ่อม/ย้ายข้อมูลใน CLIopenclaw doctor
สิ่งที่ action เหล่านี้ทำ:
- Backfill สแกนไฟล์ย้อนหลัง
memory/YYYY-MM-DD.mdใน workspace ที่ใช้งานอยู่ รัน grounded REM diary pass และเขียนรายการ backfill ที่ย้อนกลับได้ลงในDREAMS.md - Reset ลบเฉพาะรายการ diary backfill ที่ถูกทำเครื่องหมายเหล่านั้นออกจาก
DREAMS.md - Clear Grounded ลบเฉพาะรายการ short-term แบบ grounded-only ที่ถูก stage ไว้ ซึ่งมาจากการ replay ย้อนหลังและยังไม่ได้สะสม live recall หรือ daily support
- ไม่แก้ไข
MEMORY.md - ไม่รันการย้ายข้อมูลทั้งหมดของ doctor
- ไม่ stage grounded candidates เข้าไปใน live short-term promotion store โดยอัตโนมัติ เว้นแต่คุณจะรันเส้นทาง CLI แบบ staged อย่างชัดเจนก่อน
DREAMS.md เป็นพื้นผิวสำหรับตรวจทาน
พฤติกรรมโดยละเอียดและเหตุผล
0. การอัปเดตแบบเลือกได้ (git installs)
0. การอัปเดตแบบเลือกได้ (git installs)
1. การปรับ config ให้เป็นรูปแบบมาตรฐาน
1. การปรับ config ให้เป็นรูปแบบมาตรฐาน
messages.ackReaction โดยไม่มี override เฉพาะช่อง) doctor จะปรับค่าเหล่านั้นให้เป็น schema ปัจจุบันซึ่งรวมถึงฟิลด์แบนของ Talk รุ่นเก่าด้วย config speech ของ Talk แบบ public ปัจจุบันคือ talk.provider + talk.providers.<provider> และ config realtime voice คือ talk.realtime.* Doctor เขียนรูปแบบเก่า talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey ใหม่เข้าไปใน provider map และเขียน selector realtime ระดับบนแบบ legacy (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) ใหม่เข้าไปใน talk.realtimeDoctor ยังเตือนเมื่อ plugins.allow ไม่ว่างและ tool policy ใช้
รายการ tool แบบ wildcard หรือที่ Plugin เป็นเจ้าของ tools.allow: ["*"] จับคู่เฉพาะ tool
จาก plugins ที่โหลดจริงเท่านั้น; ไม่ได้ข้าม allowlist ของ Plugin แบบ exclusive
Doctor เขียน plugins.bundledDiscovery: "compat" สำหรับ config allowlist
legacy ที่ถูกย้ายข้อมูล เพื่อรักษาพฤติกรรม bundled provider ที่มีอยู่ และ
จากนั้นชี้ไปยังการตั้งค่า "allowlist" ที่เข้มงวดกว่า2. การย้ายคีย์ config รุ่นเก่า
2. การย้ายคีย์ config รุ่นเก่า
openclaw doctorDoctor จะ:- อธิบายว่าพบคีย์ legacy ใด
- แสดงการย้ายข้อมูลที่ใช้ไป
- เขียน
~/.openclaw/openclaw.jsonใหม่ด้วย schema ที่อัปเดตแล้ว
openclaw doctor --fix; จะไม่เขียน openclaw.json ใหม่ตอน startup การย้าย job store ของ Cron ก็จัดการโดย openclaw doctor --fix เช่นกันการย้ายข้อมูลปัจจุบัน:routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternschannels.telegram.requireMention→channels.telegram.groups."*".requireMention- การกำหนดค่าช่องทางที่กำหนดไว้ซึ่งไม่มีนโยบายการตอบกลับที่มองเห็นได้ →
messages.groupChat.visibleReplies: "message_tool" routing.queue→messages.queuerouting.bindings→bindingsระดับบนสุดrouting.agents/routing.defaultAgentId→agents.list+agents.list[].defaulttalk.voiceId/talk.voiceAliases/talk.modelId/talk.outputFormat/talk.apiKeyแบบเดิม →talk.provider+talk.providers.<provider>- ตัวเลือก Talk แบบเรียลไทม์ระดับบนสุดแบบเดิม (
talk.mode/talk.transport/talk.brain/talk.model/talk.voice) +talk.provider/talk.providers→talk.realtime routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>messages.tts.provider: "edge"และmessages.tts.providers.edge→messages.tts.provider: "microsoft"และmessages.tts.providers.microsoftchannels.discord.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.voice.tts.providers.<provider>channels.discord.accounts.<id>.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.accounts.<id>.voice.tts.providers.<provider>plugins.entries.voice-call.config.tts.<provider>(openai/elevenlabs/microsoft/edge) →plugins.entries.voice-call.config.tts.providers.<provider>plugins.entries.voice-call.config.tts.provider: "edge"และplugins.entries.voice-call.config.tts.providers.edge→provider: "microsoft"และproviders.microsoftplugins.entries.voice-call.config.provider: "log"→"mock"plugins.entries.voice-call.config.twilio.from→plugins.entries.voice-call.config.fromNumberplugins.entries.voice-call.config.streaming.sttProvider→plugins.entries.voice-call.config.streaming.providerplugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold→plugins.entries.voice-call.config.streaming.providers.openai.*bindings[].match.accountID→bindings[].match.accountId- สำหรับช่องทางที่มี
accountsแบบตั้งชื่อ แต่ยังมีค่าช่องทางระดับบนสุดสำหรับบัญชีเดียวหลงเหลืออยู่ ให้ย้ายค่าที่อยู่ในขอบเขตบัญชีเหล่านั้นเข้าไปในบัญชีที่เลื่อนระดับซึ่งเลือกไว้สำหรับช่องทางนั้น (accounts.defaultสำหรับช่องทางส่วนใหญ่; Matrix สามารถคงเป้าหมายแบบตั้งชื่อ/ค่าเริ่มต้นที่ตรงกันซึ่งมีอยู่แล้วได้) identity→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- ลบ
agents.defaults.llm; ใช้models.providers.<id>.timeoutSecondsสำหรับการหมดเวลาของผู้ให้บริการ/โมเดลที่ช้า browser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- ลบ
browser.relayBindHost(การตั้งค่ารีเลย์ส่วนขยายแบบเดิม) models.providers.*.api: "openai"แบบเดิม →"openai-completions"(การเริ่มต้น Gateway จะข้ามผู้ให้บริการที่ตั้งค่าapiเป็นค่า enum ในอนาคตหรือไม่รู้จักด้วย แทนที่จะล้มเหลวแบบปิด)- ลบ
plugins.entries.codex.config.codexDynamicToolsProfile; เซิร์ฟเวอร์แอป Codex จะเก็บเครื่องมือเวิร์กสเปซแบบดั้งเดิมของ Codex ให้เป็นแบบดั้งเดิมเสมอ
- หากกำหนดค่ารายการ
channels.<channel>.accountsสองรายการขึ้นไปโดยไม่มีchannels.<channel>.defaultAccountหรือaccounts.defaultdoctor จะเตือนว่าการกำหนดเส้นทางสำรองอาจเลือกบัญชีที่ไม่คาดคิด - หากตั้งค่า
channels.<channel>.defaultAccountเป็น ID บัญชีที่ไม่รู้จัก doctor จะเตือนและแสดงรายการ ID บัญชีที่กำหนดค่าไว้
2b. การแทนที่ผู้ให้บริการ OpenCode
2b. การแทนที่ผู้ให้บริการ OpenCode
models.providers.opencode, opencode-zen หรือ opencode-go ด้วยตนเอง รายการนั้นจะแทนที่แค็ตตาล็อก OpenCode ในตัวจาก @earendil-works/pi-ai ซึ่งอาจบังคับให้โมเดลใช้ API ผิดตัวหรือทำให้ต้นทุนเป็นศูนย์ Doctor จะเตือนเพื่อให้คุณลบการแทนที่และกู้คืนการกำหนดเส้นทาง API + ต้นทุนรายโมเดล2c. การย้าย Browser และความพร้อมของ Chrome MCP
2c. การย้าย Browser และความพร้อมของ Chrome MCP
browser.profiles.*.driver: "extension"จะกลายเป็น"existing-session"browser.relayBindHostจะถูกลบ
defaultProfile: "user" หรือโปรไฟล์ existing-session ที่กำหนดค่าไว้:- ตรวจสอบว่าติดตั้ง Google Chrome บนโฮสต์เดียวกันสำหรับโปรไฟล์เชื่อมต่ออัตโนมัติค่าเริ่มต้นหรือไม่
- ตรวจสอบเวอร์ชัน Chrome ที่ตรวจพบและเตือนเมื่อเวอร์ชันต่ำกว่า Chrome 144
- เตือนให้คุณเปิดใช้การดีบักระยะไกลในหน้า inspect ของ Browser (เช่น
chrome://inspect/#remote-debugging,brave://inspect/#remote-debuggingหรือedge://inspect/#remote-debugging)
- Browser ที่อิง Chromium 144+ บนโฮสต์ gateway/node
- Browser ที่ทำงานอยู่ในเครื่อง
- เปิดใช้การดีบักระยะไกลใน Browser นั้น
- อนุมัติพรอมป์ยินยอมการแนบครั้งแรกใน Browser
responsebody, การส่งออก PDF, การดักจับการดาวน์โหลด และการดำเนินการแบบชุดยังต้องใช้ Browser ที่จัดการหรือโปรไฟล์ CDP ดิบการตรวจสอบนี้ ไม่ ใช้กับ Docker, sandbox, remote-browser หรือโฟลว์ headless อื่น ๆ รายการเหล่านั้นยังคงใช้ CDP ดิบต่อไป2d. ข้อกำหนดเบื้องต้น OAuth TLS
2d. ข้อกำหนดเบื้องต้น OAuth TLS
UNABLE_TO_GET_ISSUER_CERT_LOCALLY, ใบรับรองหมดอายุ หรือใบรับรองที่ลงนามด้วยตนเอง) doctor จะแสดงคำแนะนำการแก้ไขเฉพาะแพลตฟอร์ม บน macOS ที่ใช้ Homebrew Node การแก้มักเป็น brew postinstall ca-certificates เมื่อใช้ --deep การตรวจสอบจะทำงานแม้ว่า Gateway จะปกติดี2e. การแทนที่ผู้ให้บริการ Codex OAuth
2e. การแทนที่ผู้ให้บริการ Codex OAuth
models.providers.openai-codex การตั้งค่าเหล่านั้นอาจบดบังพาธผู้ให้บริการ Codex OAuth ในตัวที่รีลีสใหม่กว่าใช้โดยอัตโนมัติ Doctor จะเตือนเมื่อพบการตั้งค่า transport เก่าเหล่านั้นร่วมกับ Codex OAuth เพื่อให้คุณลบหรือเขียนการแทนที่ transport ที่ล้าสมัยใหม่ และกู้คืนพฤติกรรมการกำหนดเส้นทาง/สำรองในตัว พร็อกซีแบบกำหนดเองและการแทนที่เฉพาะส่วนหัวดยังคงรองรับ และจะไม่ทำให้เกิดคำเตือนนี้2f. การซ่อมแซมเส้นทาง Codex
2f. การซ่อมแซมเส้นทาง Codex
openai-codex/* แบบเดิม การกำหนดเส้นทาง harness ดั้งเดิมของ Codex ใช้ refs โมเดล openai/* แบบ canonical; รอบของเอเจนต์ OpenAI จะผ่าน harness เซิร์ฟเวอร์แอป Codex แทนพาธ OpenClaw PI OpenAIในโหมด --fix / --repair doctor จะเขียน refs ของเอเจนต์เริ่มต้นและรายเอเจนต์ที่ได้รับผลกระทบใหม่ รวมถึงโมเดลหลัก, fallbacks, การแทนที่ heartbeat/subagent/compaction, hooks, การแทนที่โมเดลของช่องทาง และสถานะเส้นทางเซสชันที่คงอยู่ซึ่งล้าสมัย:openai-codex/gpt-*จะกลายเป็นopenai/gpt-*- ความตั้งใจของ Codex จะย้ายไปยังรายการ
agentRuntime.id: "codex"ที่อยู่ในขอบเขตผู้ให้บริการ/โมเดลสำหรับ refs โมเดลเอเจนต์ที่ซ่อมแล้ว เพื่อให้ยังสามารถเลือกโปรไฟล์ authopenai-codex:...ได้หลังจาก ref โมเดลกลายเป็นopenai/* - การกำหนดค่ารันไทม์ทั้งเอเจนต์ที่ล้าสมัยและ pins รันไทม์ของเซสชันที่คงอยู่จะถูกลบ เพราะการเลือกรันไทม์อยู่ในขอบเขตผู้ให้บริการ/โมเดล
- นโยบายรันไทม์ผู้ให้บริการ/โมเดลที่มีอยู่จะคงเดิม เว้นแต่ ref โมเดลแบบเดิมที่ซ่อมแล้วต้องใช้การกำหนดเส้นทาง Codex เพื่อรักษาพาธ auth เก่า
- รายการ fallback ของโมเดลที่มีอยู่จะคงเดิมพร้อมเขียนรายการแบบเดิมใหม่; การตั้งค่ารายโมเดลที่คัดลอกจะย้ายจากคีย์เดิมไปยังคีย์ canonical
openai/* modelProvider/providerOverride,model/modelOverride, ประกาศ fallback และ pins โปรไฟล์ auth ของเซสชันที่คงอยู่จะถูกซ่อมในที่เก็บเซสชันเอเจนต์ทั้งหมดที่ค้นพบ/codex ...หมายถึง “ควบคุมหรือผูกการสนทนา Codex ดั้งเดิมจากแชต”/acp ...หรือruntime: "acp"หมายถึง “ใช้อะแดปเตอร์ ACP/acpx ภายนอก”
2g. การล้างข้อมูลเส้นทางเซสชัน
2g. การล้างข้อมูลเส้นทางเซสชัน
openclaw doctor --fix สามารถล้างสถานะล้าสมัยที่สร้างอัตโนมัติ เช่น pins โมเดล modelOverrideSource: "auto", เมทาดาทาโมเดลรันไทม์, IDs harness ที่ pin ไว้, การผูกเซสชัน CLI และการแทนที่โปรไฟล์ auth แบบอัตโนมัติ เมื่อเส้นทางเจ้าของของรายการเหล่านั้นไม่ได้ถูกกำหนดค่าไว้อีกต่อไป ตัวเลือกโมเดลเซสชันที่ผู้ใช้ระบุอย่างชัดเจนหรือแบบเดิมจะถูกรายงานเพื่อให้ตรวจสอบด้วยตนเองและปล่อยไว้ตามเดิม; สลับรายการเหล่านั้นด้วย /model ..., /new หรือรีเซ็ตเซสชันเมื่อไม่ต้องการเส้นทางนั้นอีกต่อไป3. การย้ายสถานะแบบเดิม (เลย์เอาต์ดิสก์)
3. การย้ายสถานะแบบเดิม (เลย์เอาต์ดิสก์)
- ที่เก็บเซสชัน + transcripts:
- จาก
~/.openclaw/sessions/ไปยัง~/.openclaw/agents/<agentId>/sessions/
- จาก
- ไดเรกทอรีเอเจนต์:
- จาก
~/.openclaw/agent/ไปยัง~/.openclaw/agents/<agentId>/agent/
- จาก
- สถานะ auth ของ WhatsApp (Baileys):
- จาก
~/.openclaw/credentials/*.jsonแบบเดิม (ยกเว้นoauth.json) - ไปยัง
~/.openclaw/credentials/whatsapp/<accountId>/...(ID บัญชีค่าเริ่มต้น:default)
- จาก
openclaw doctor เท่านั้น ตอนนี้การปรับ provider/provider-map ของ Talk ให้เป็นรูปแบบปกติเปรียบเทียบด้วยความเท่ากันเชิงโครงสร้าง ดังนั้น diff ที่ต่างกันเฉพาะลำดับคีย์จะไม่ทำให้เกิดการเปลี่ยนแปลง doctor --fix แบบไม่มีผลซ้ำอีกต่อไป3a. การย้าย manifest ของ Plugin แบบเดิม
3a. การย้าย manifest ของ Plugin แบบเดิม
speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders, webSearchProviders) เมื่อพบ จะเสนอให้ย้ายรายการเหล่านั้นเข้าไปในอ็อบเจ็กต์ contracts และเขียนไฟล์ manifest ใหม่ในที่เดิม การย้ายนี้ทำซ้ำได้โดยไม่เกิดผลซ้ำ; หากคีย์ contracts มีค่าเดียวกันอยู่แล้ว คีย์เดิมจะถูกลบโดยไม่ทำซ้ำข้อมูล3b. การย้ายที่เก็บ cron แบบเดิม
3b. การย้ายที่เก็บ cron แบบเดิม
~/.openclaw/cron/jobs.json โดยค่าเริ่มต้น หรือ cron.store เมื่อถูกแทนที่) เพื่อหารูปแบบงานเก่าที่ตัวจัดตารางเวลายังยอมรับเพื่อความเข้ากันได้การล้าง cron ปัจจุบันประกอบด้วย:jobId→idschedule.cron→schedule.expr- ฟิลด์ payload ระดับบนสุด (
message,model,thinking, …) →payload - ฟิลด์ delivery ระดับบนสุด (
deliver,channel,to,provider, …) →delivery - นามแฝง delivery
providerของ payload →delivery.channelแบบชัดเจน - งาน fallback webhook แบบเดิมอย่างง่าย
notify: true→delivery.mode="webhook"แบบชัดเจน พร้อมdelivery.to=cron.webhook
notify: true เมื่อสามารถทำได้โดยไม่เปลี่ยนพฤติกรรม หากงานหนึ่งผสม fallback notify แบบเดิมเข้ากับโหมด delivery ที่มีอยู่ซึ่งไม่ใช่ webhook อยู่แล้ว doctor จะเตือนและปล่อยให้งานนั้นรอตรวจสอบด้วยตนเองบน Linux doctor จะเตือนด้วยเมื่อ crontab ของผู้ใช้ยังเรียกใช้ ~/.openclaw/bin/ensure-whatsapp.sh แบบเดิม สคริปต์เฉพาะเครื่องโฮสต์นี้ไม่ได้รับการดูแลโดย OpenClaw ปัจจุบัน และอาจเขียนข้อความ Gateway inactive ที่ไม่ถูกต้องไปยัง ~/.openclaw/logs/whatsapp-health.log เมื่อ cron เข้าถึง systemd user bus ไม่ได้ ให้ลบรายการ crontab ที่ค้างอยู่ด้วย crontab -e; ใช้ openclaw channels status --probe, openclaw doctor และ openclaw gateway status สำหรับการตรวจสอบสถานะปัจจุบัน3c. Session lock cleanup
3c. Session lock cleanup
--fix / --repair ระบบจะลบไฟล์ lock ที่ค้างอยู่โดยอัตโนมัติ ไม่เช่นนั้นจะพิมพ์หมายเหตุและบอกให้คุณรันอีกครั้งพร้อม --fix3d. Session transcript branch repair
3d. Session transcript branch repair
--fix / --repair doctor จะสำรองไฟล์ที่ได้รับผลกระทบแต่ละไฟล์ไว้ข้างไฟล์ต้นฉบับ แล้วเขียน transcript ใหม่ให้เป็น branch ที่ใช้งานอยู่ เพื่อให้ประวัติ Gateway และตัวอ่านหน่วยความจำไม่เห็น turn ซ้ำอีกต่อไป4. State integrity checks (session persistence, routing, and safety)
4. State integrity checks (session persistence, routing, and safety)
- ไดเรกทอรี state หายไป: เตือนเกี่ยวกับการสูญเสีย state อย่างร้ายแรง แจ้งให้สร้างไดเรกทอรีใหม่ และย้ำว่าไม่สามารถกู้ข้อมูลที่หายไปได้
- สิทธิ์ของไดเรกทอรี state: ตรวจสอบว่าสามารถเขียนได้หรือไม่ เสนอให้ซ่อมแซมสิทธิ์ (และแสดงคำแนะนำ
chownเมื่อตรวจพบว่าเจ้าของ/กลุ่มไม่ตรงกัน) - ไดเรกทอรี state ที่ซิงก์กับคลาวด์บน macOS: เตือนเมื่อ state ชี้ไปใต้ iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) หรือ~/Library/CloudStorage/...เพราะเส้นทางที่มีการซิงก์รองรับอาจทำให้ I/O ช้าลงและเกิดการแข่งขันของ lock/การซิงก์ - ไดเรกทอรี state บน SD หรือ eMMC ของ Linux: เตือนเมื่อ state ชี้ไปยังแหล่ง mount
mmcblk*เพราะ random I/O ที่อิง SD หรือ eMMC อาจช้ากว่าและสึกหรอเร็วขึ้นเมื่อมีการเขียนเซสชันและข้อมูลรับรอง - ไดเรกทอรีเซสชันหายไป: ต้องมี
sessions/และไดเรกทอรี session store เพื่อคงประวัติและหลีกเลี่ยง crash แบบENOENT - Transcript ไม่ตรงกัน: เตือนเมื่อรายการเซสชันล่าสุดมีไฟล์ transcript หายไป
- เซสชันหลัก “JSONL 1 บรรทัด”: ทำเครื่องหมายเมื่อ transcript หลักมีเพียงบรรทัดเดียว (ประวัติไม่ได้สะสม)
- มีไดเรกทอรี state หลายชุด: เตือนเมื่อมีโฟลเดอร์
~/.openclawหลายชุดใน home directory ต่าง ๆ หรือเมื่อOPENCLAW_STATE_DIRชี้ไปที่อื่น (ประวัติอาจแยกกันระหว่างการติดตั้ง) - ตัวเตือนโหมด remote: หาก
gateway.mode=remotedoctor จะเตือนให้คุณรันบนโฮสต์ remote (state อยู่ที่นั่น) - สิทธิ์ของไฟล์ config: เตือนหาก
~/.openclaw/openclaw.jsonอ่านได้โดยกลุ่ม/ทุกคน และเสนอให้ปรับเข้มงวดเป็น600
5. Model auth health (OAuth expiry)
5. Model auth health (OAuth expiry)
--non-interactive จะข้ามความพยายาม refreshเมื่อ OAuth refresh ล้มเหลวอย่างถาวร (เช่น refresh_token_reused, invalid_grant หรือ provider แจ้งให้คุณลงชื่อเข้าใช้อีกครั้ง) doctor จะรายงานว่าต้องยืนยันตัวตนใหม่และพิมพ์คำสั่ง openclaw models auth login --provider ... ที่ต้องรันอย่างชัดเจนDoctor ยังรายงานโปรไฟล์ auth ที่ใช้งานไม่ได้ชั่วคราวเนื่องจาก:- cooldown สั้น ๆ (rate limits/timeouts/auth failures)
- การปิดใช้งานที่นานกว่า (billing/credit failures)
6. Hooks model validation
6. Hooks model validation
hooks.gmail.model ไว้ doctor จะตรวจสอบ model reference กับ catalog และ allowlist แล้วเตือนเมื่อ resolve ไม่ได้หรือไม่อนุญาต7. Sandbox image repair
7. Sandbox image repair
7b. Plugin install cleanup
7b. Plugin install cleanup
openclaw doctor --fix / openclaw doctor --repair ซึ่งครอบคลุม dependency root ที่สร้างไว้และค้างเก่า, ไดเรกทอรี install-stage เก่า, เศษไฟล์เฉพาะ package จากโค้ดซ่อมแซม dependency ของ bundled-plugin รุ่นก่อน และสำเนา npm ที่จัดการไว้ของ Plugin @openclaw/* แบบ bundled ที่ orphaned หรือ recovered ซึ่งอาจ shadow manifest แบบ bundled ปัจจุบัน Doctor ยัง relink package openclaw ของโฮสต์เข้าไปใน Plugin npm ที่จัดการไว้ซึ่งประกาศ peerDependencies.openclaw เพื่อให้ runtime import เฉพาะ package เช่น openclaw/plugin-sdk/* ยังคง resolve ได้หลังการอัปเดตหรือการซ่อมแซม npmDoctor ยังสามารถติดตั้ง Plugin แบบดาวน์โหลดได้ที่หายไปใหม่ เมื่อ config อ้างถึง Plugin เหล่านั้นแต่ registry Plugin ภายในเครื่องหาไม่พบ ตัวอย่างได้แก่ plugins.entries ที่เป็นสาระสำคัญ, การตั้งค่า channel/provider/search ที่กำหนดไว้ และ runtime ของ agent ที่กำหนดไว้ ระหว่างการอัปเดต package doctor จะหลีกเลี่ยงการรันการซ่อม Plugin ด้วย package-manager ขณะที่ core package กำลังถูกสลับ ให้รัน openclaw doctor --fix อีกครั้งหลังอัปเดต หาก Plugin ที่กำหนดค่าไว้ยังต้องกู้คืน การเริ่มต้น Gateway และการ reload config จะไม่รัน package manager; การติดตั้ง Plugin ยังคงเป็นงาน doctor/install/update ที่ต้องทำอย่างชัดเจน8. Gateway service migrations and cleanup hints
8. Gateway service migrations and cleanup hints
openclaw gateway status --deep หรือ openclaw doctor --deep จากนั้นลบรายการซ้ำหรือตั้งค่า OPENCLAW_SERVICE_REPAIR_POLICY=external เมื่อ supervisor ระดับระบบเป็นผู้ดูแลวงจรชีวิตของ Gateway8b. Startup Matrix migration
8b. Startup Matrix migration
--fix / --repair) จะสร้าง snapshot ก่อนการย้าย แล้วรันขั้นตอนการย้ายแบบ best-effort: การย้าย state legacy ของ Matrix และการเตรียม encrypted-state legacy ทั้งสองขั้นตอนไม่เป็น fatal; ข้อผิดพลาดจะถูกบันทึกและการเริ่มต้นจะดำเนินต่อ ในโหมดอ่านอย่างเดียว (openclaw doctor โดยไม่มี --fix) การตรวจสอบนี้จะถูกข้ามทั้งหมด8c. Device pairing and auth drift
8c. Device pairing and auth drift
- คำขอจับคู่ครั้งแรกที่ค้างอยู่
- การอัปเกรด role ที่ค้างอยู่สำหรับอุปกรณ์ที่จับคู่แล้ว
- การอัปเกรด scope ที่ค้างอยู่สำหรับอุปกรณ์ที่จับคู่แล้ว
- การซ่อมแซม public-key mismatch เมื่อ device id ยังตรงกันแต่ identity ของอุปกรณ์ไม่ตรงกับระเบียนที่อนุมัติอีกต่อไป
- ระเบียนที่จับคู่แล้วซึ่งไม่มี token ที่ใช้งานอยู่สำหรับ role ที่อนุมัติ
- token ที่จับคู่แล้วซึ่ง scope เบี่ยงออกจาก baseline การจับคู่ที่อนุมัติ
- รายการ device-token ที่แคชไว้ในเครื่องสำหรับเครื่องปัจจุบัน ซึ่งเก่ากว่าการ rotate token ฝั่ง Gateway หรือมี metadata scope ที่ค้างเก่า
- ตรวจสอบคำขอที่ค้างอยู่ด้วย
openclaw devices list - อนุมัติคำขอที่ระบุด้วย
openclaw devices approve <requestId> - rotate token ใหม่ด้วย
openclaw devices rotate --device <deviceId> --role <role> - ลบและอนุมัติระเบียนที่ค้างเก่าใหม่ด้วย
openclaw devices remove <deviceId>
9. Security warnings
9. Security warnings
10. systemd linger (Linux)
10. systemd linger (Linux)
11. Workspace status (skills, plugins, and legacy dirs)
11. Workspace status (skills, plugins, and legacy dirs)
- สถานะ Skills: นับ Skills ที่มีสิทธิ์ใช้งาน, ขาด requirements และถูก allowlist บล็อก
- ไดเรกทอรี workspace แบบเดิม: เตือนเมื่อมี
~/openclawหรือไดเรกทอรี workspace แบบเดิมอื่น ๆ อยู่เคียงข้าง workspace ปัจจุบัน - สถานะ Plugin: นับ Plugin ที่เปิดใช้/ปิดใช้/เกิดข้อผิดพลาด; แสดงรายการ ID ของ Plugin สำหรับข้อผิดพลาดใด ๆ; รายงานความสามารถของ bundle Plugin
- คำเตือนความเข้ากันได้ของ Plugin: ทำเครื่องหมาย Plugin ที่มีปัญหาความเข้ากันได้กับ runtime ปัจจุบัน
- การวินิจฉัย Plugin: แสดงคำเตือนหรือข้อผิดพลาดใด ๆ ระหว่างโหลดที่ปล่อยออกมาจาก registry Plugin
11b. Bootstrap file size
11b. Bootstrap file size
AGENTS.md, CLAUDE.md หรือไฟล์บริบทอื่นที่ inject เข้ามา) ใกล้หรือเกินงบจำนวนอักขระที่กำหนดไว้หรือไม่ โดยรายงานจำนวนอักขระดิบเทียบกับอักขระที่ inject แล้วต่อไฟล์, เปอร์เซ็นต์การตัดทอน, สาเหตุการตัดทอน (max/file หรือ max/total) และจำนวนอักขระที่ inject ทั้งหมดเป็นสัดส่วนของงบทั้งหมด เมื่อไฟล์ถูกตัดทอนหรือใกล้ถึงขีดจำกัด doctor จะพิมพ์คำแนะนำสำหรับปรับ agents.defaults.bootstrapMaxChars และ agents.defaults.bootstrapTotalMaxChars11d. Stale channel plugin cleanup
11d. Stale channel plugin cleanup
openclaw doctor --fix ลบ Plugin channel ที่หายไป ระบบจะลบ config ที่ผูกกับ channel ซึ่ง dangling และอ้างถึง Plugin นั้นด้วย ได้แก่ รายการ channels.<id>, target ของ Heartbeat ที่ระบุชื่อ channel และ override agents.*.models["<channel>/*"] สิ่งนี้ป้องกัน boot loop ของ Gateway ที่ runtime ของ channel หายไปแล้วแต่ config ยังขอให้ Gateway bind เข้ากับมัน11c. Shell completion
11c. Shell completion
- หากโปรไฟล์เชลล์ใช้รูปแบบการเติมคำสั่งแบบไดนามิกที่ช้า (
source <(openclaw completion ...)) doctor จะอัปเกรดเป็นรูปแบบไฟล์แคชที่เร็วกว่า - หากมีการกำหนดค่าการเติมคำสั่งในโปรไฟล์ แต่ไฟล์แคชหายไป doctor จะสร้างแคชใหม่โดยอัตโนมัติ
- หากไม่มีการกำหนดค่าการเติมคำสั่งเลย doctor จะแจ้งให้ติดตั้ง (เฉพาะโหมดโต้ตอบเท่านั้น; ข้ามเมื่อใช้
--non-interactive)
openclaw completion --write-state เพื่อสร้างแคชใหม่ด้วยตนเอง12. การตรวจสอบการยืนยันตัวตนของ Gateway (โทเค็นภายในเครื่อง)
12. การตรวจสอบการยืนยันตัวตนของ Gateway (โทเค็นภายในเครื่อง)
- หากโหมดโทเค็นต้องใช้โทเค็นและไม่มีแหล่งที่มาของโทเค็น doctor จะเสนอให้สร้างให้
- หาก
gateway.auth.tokenจัดการโดย SecretRef แต่ไม่พร้อมใช้งาน doctor จะเตือนและไม่เขียนทับด้วยข้อความธรรมดา openclaw doctor --generate-gateway-tokenจะบังคับสร้างเฉพาะเมื่อไม่ได้กำหนดค่า SecretRef สำหรับโทเค็นไว้
12b. การซ่อมแซมแบบอ่านอย่างเดียวที่รับรู้ SecretRef
12b. การซ่อมแซมแบบอ่านอย่างเดียวที่รับรู้ SecretRef
- ตอนนี้
openclaw doctor --fixใช้โมเดลสรุป SecretRef แบบอ่านอย่างเดียวเดียวกับคำสั่งตระกูลสถานะสำหรับการซ่อมแซมการกำหนดค่าแบบเจาะจง - ตัวอย่าง: การซ่อมแซม Telegram
allowFrom/groupAllowFrom@usernameจะพยายามใช้ข้อมูลรับรองบอตที่กำหนดค่าไว้เมื่อพร้อมใช้งาน - หากมีการกำหนดค่าโทเค็นบอต Telegram ผ่าน SecretRef แต่ไม่พร้อมใช้งานในเส้นทางคำสั่งปัจจุบัน doctor จะรายงานว่ามีการกำหนดค่าข้อมูลรับรองไว้แต่ไม่พร้อมใช้งาน และข้ามการแก้ไขอัตโนมัติแทนที่จะหยุดทำงานหรือรายงานผิดว่าโทเค็นหายไป
13. การตรวจสุขภาพ Gateway + การรีสตาร์ต
13. การตรวจสุขภาพ Gateway + การรีสตาร์ต
13b. ความพร้อมของการค้นหาหน่วยความจำ
13b. ความพร้อมของการค้นหาหน่วยความจำ
- QMD backend: ตรวจสอบว่าไบนารี
qmdพร้อมใช้งานและเริ่มได้หรือไม่ หากไม่พร้อม จะพิมพ์คำแนะนำการแก้ไขรวมถึงแพ็กเกจ npm และตัวเลือกเส้นทางไบนารีด้วยตนเอง - Provider ภายในเครื่องแบบชัดเจน: ตรวจสอบไฟล์โมเดลภายในเครื่องหรือ URL โมเดลระยะไกล/ดาวน์โหลดได้ที่รู้จัก หากหายไป จะแนะนำให้เปลี่ยนไปใช้ provider ระยะไกล
- Provider ระยะไกลแบบชัดเจน (
openai,voyageฯลฯ): ตรวจสอบว่ามี API key อยู่ใน environment หรือ auth store พิมพ์คำแนะนำการแก้ไขที่ดำเนินการได้หากหายไป - Provider อัตโนมัติ: ตรวจสอบความพร้อมของโมเดลภายในเครื่องก่อน จากนั้นลอง provider ระยะไกลแต่ละรายการตามลำดับการเลือกอัตโนมัติ
openclaw memory status --deep เพื่อตรวจสอบความพร้อมของ embedding ขณะรันไทม์14. คำเตือนสถานะช่องทาง
14. คำเตือนสถานะช่องทาง
15. การตรวจสอบ + ซ่อมแซมการกำหนดค่า supervisor
15. การตรวจสอบ + ซ่อมแซมการกำหนดค่า supervisor
openclaw doctorจะแจ้งก่อนเขียนการกำหนดค่า supervisor ใหม่openclaw doctor --yesยอมรับพรอมป์การซ่อมแซมเริ่มต้นopenclaw doctor --repairใช้การแก้ไขที่แนะนำโดยไม่แสดงพรอมป์openclaw doctor --repair --forceเขียนทับการกำหนดค่า supervisor แบบกำหนดเองOPENCLAW_SERVICE_REPAIR_POLICY=externalทำให้ doctor เป็นแบบอ่านอย่างเดียวสำหรับวงจรชีวิต service ของ Gateway โดยยังคงรายงานสุขภาพ service และเรียกใช้การซ่อมแซมที่ไม่ใช่ service แต่ข้ามการติดตั้ง/เริ่ม/รีสตาร์ต/บูตสแตรป service, การเขียนการกำหนดค่า supervisor ใหม่ และการล้าง service เก่า เพราะมี supervisor ภายนอกเป็นเจ้าของวงจรชีวิตนั้น- บน Linux doctor จะไม่เขียน metadata ของคำสั่ง/entrypoint ใหม่ขณะที่ unit systemd ของ Gateway ที่ตรงกันกำลังทำงานอยู่ นอกจากนี้ยังละเว้น unit คล้าย Gateway เพิ่มเติมที่ไม่ใช่ legacy และไม่ได้ทำงานในระหว่างการสแกน service ซ้ำ เพื่อไม่ให้ไฟล์ service ร่วมสร้างสัญญาณรบกวนในการล้างข้อมูล
- หากการยืนยันตัวตนด้วยโทเค็นต้องใช้โทเค็นและ
gateway.auth.tokenจัดการโดย SecretRef การติดตั้ง/ซ่อมแซม service ของ doctor จะตรวจสอบ SecretRef แต่จะไม่บันทึกค่าโทเค็นข้อความธรรมดาที่ resolve แล้วลงใน metadata environment ของ service supervisor - Doctor ตรวจพบค่า environment ของ service ที่จัดการผ่าน
.env/SecretRef ซึ่งการติดตั้ง LaunchAgent, systemd หรือ Windows Scheduled Task รุ่นเก่าฝังไว้แบบ inline และเขียน metadata ของ service ใหม่เพื่อให้ค่าเหล่านั้นโหลดจากแหล่งที่มารันไทม์แทนคำจำกัดความของ supervisor - Doctor ตรวจพบเมื่อคำสั่ง service ยังตรึง
--portเก่าไว้หลังจากgateway.portเปลี่ยน และเขียน metadata ของ service ใหม่ให้เป็นพอร์ตปัจจุบัน - หากการยืนยันตัวตนด้วยโทเค็นต้องใช้โทเค็นและ SecretRef โทเค็นที่กำหนดค่าไว้ยังไม่ได้ resolve doctor จะบล็อกเส้นทางติดตั้ง/ซ่อมแซมพร้อมคำแนะนำที่ดำเนินการได้
- หากกำหนดค่าทั้ง
gateway.auth.tokenและgateway.auth.passwordและไม่ได้ตั้งค่าgateway.auth.modedoctor จะบล็อกการติดตั้ง/ซ่อมแซมจนกว่าจะตั้งค่าโหมดอย่างชัดเจน - สำหรับ unit user-systemd บน Linux ตอนนี้การตรวจสอบ token drift ของ doctor รวมทั้งแหล่งที่มา
Environment=และEnvironmentFile=เมื่อเปรียบเทียบ metadata การยืนยันตัวตนของ service - การซ่อมแซม service ของ Doctor จะปฏิเสธการเขียนใหม่ หยุด หรือรีสตาร์ต service ของ Gateway จากไบนารี OpenClaw รุ่นเก่า เมื่อการกำหนดค่าถูกเขียนครั้งล่าสุดโดยเวอร์ชันใหม่กว่า ดู การแก้ไขปัญหา Gateway
- คุณสามารถบังคับเขียนใหม่ทั้งหมดได้เสมอผ่าน
openclaw gateway install --force
16. การวินิจฉัยรันไทม์ + พอร์ตของ Gateway
16. การวินิจฉัยรันไทม์ + พอร์ตของ Gateway
18789) และรายงานสาเหตุที่เป็นไปได้ (Gateway ทำงานอยู่แล้ว, SSH tunnel)17. แนวทางปฏิบัติที่ดีที่สุดสำหรับรันไทม์ Gateway
17. แนวทางปฏิบัติที่ดีที่สุดสำหรับรันไทม์ Gateway
nvm, fnm, volta, asdf ฯลฯ) ช่องทาง WhatsApp + Telegram ต้องใช้ Node และเส้นทางของตัวจัดการเวอร์ชันอาจเสียหลังอัปเกรด เพราะ service ไม่ได้โหลด shell init ของคุณ Doctor เสนอให้ย้ายไปใช้การติดตั้ง Node ของระบบเมื่อพร้อมใช้งาน (Homebrew/apt/choco)macOS LaunchAgents ที่ติดตั้งหรือซ่อมแซมใหม่จะใช้ PATH ระบบมาตรฐาน (/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) แทนการคัดลอก PATH ของเชลล์แบบโต้ตอบ ดังนั้นไบนารีระบบที่จัดการโดย Homebrew จึงยังพร้อมใช้งาน ขณะที่ Volta, asdf, fnm, pnpm และไดเรกทอรีตัวจัดการเวอร์ชันอื่น ๆ จะไม่เปลี่ยนว่า child process ของ Node resolve ไปที่ใด service ของ Linux ยังคงเก็บ environment root แบบชัดเจน (NVM_DIR, FNM_DIR, VOLTA_HOME, ASDF_DATA_DIR, BUN_INSTALL, PNPM_HOME) และไดเรกทอรี user-bin ที่เสถียร แต่ไดเรกทอรี fallback ของตัวจัดการเวอร์ชันที่คาดเดาจะถูกเขียนลงใน PATH ของ service เฉพาะเมื่อไดเรกทอรีเหล่านั้นมีอยู่บนดิสก์เท่านั้น18. การเขียนการกำหนดค่า + metadata ของ wizard
18. การเขียนการกำหนดค่า + metadata ของ wizard
19. เคล็ดลับ workspace (การสำรองข้อมูล + ระบบหน่วยความจำ)
19. เคล็ดลับ workspace (การสำรองข้อมูล + ระบบหน่วยความจำ)