Gateway
การแก้ไขปัญหา
หน้านี้คือ runbook แบบละเอียด เริ่มที่ /help/troubleshooting หากคุณต้องการ flow การ triage แบบรวดเร็วก่อน
ลำดับคำสั่ง
รันคำสั่งเหล่านี้ก่อนตามลำดับนี้:
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe
สัญญาณที่คาดหวังเมื่อระบบปกติ:
openclaw gateway statusแสดงRuntime: running,Connectivity probe: okและบรรทัดCapability: ...openclaw doctorรายงานว่าไม่มีปัญหา config/service ที่บล็อกการทำงานopenclaw channels status --probeแสดงสถานะ transport แบบสดแยกตามบัญชี และในที่ที่รองรับ จะแสดงผล probe/audit เช่นworksหรือaudit ok
การติดตั้งแบบ split brain และตัวป้องกัน config รุ่นใหม่กว่า
ใช้ส่วนนี้เมื่อบริการ gateway หยุดโดยไม่คาดคิดหลังอัปเดต หรือ logs แสดงว่า binary openclaw ตัวหนึ่งเก่ากว่าเวอร์ชันที่เขียน openclaw.json ล่าสุด
OpenClaw ประทับตราการเขียน config ด้วย meta.lastTouchedVersion คำสั่งอ่านอย่างเดียวยังสามารถตรวจสอบ config ที่เขียนโดย OpenClaw รุ่นใหม่กว่าได้ แต่การเปลี่ยนแปลง process และ service จะปฏิเสธการดำเนินการต่อจาก binary รุ่นเก่ากว่า การกระทำที่ถูกบล็อกรวมถึงการ start, stop, restart, uninstall ของบริการ gateway, การบังคับติดตั้งบริการใหม่, การเริ่ม gateway ใน service-mode และการ cleanup port ด้วย gateway --force
which openclaw
openclaw --version
openclaw gateway status --deep
openclaw config get meta.lastTouchedVersion
Fix PATH
แก้ PATH ให้ openclaw ชี้ไปยังการติดตั้งรุ่นใหม่กว่า แล้วรันการกระทำนั้นอีกครั้ง
Reinstall the gateway service
ติดตั้งบริการ gateway ที่ต้องการใหม่จากการติดตั้งรุ่นใหม่กว่า:
openclaw gateway install --force
openclaw gateway restart
Remove stale wrappers
ลบแพ็กเกจระบบเก่าหรือรายการ wrapper เก่าที่ยังชี้ไปยัง binary openclaw ตัวเก่า
Anthropic 429 ต้องการ extra usage สำหรับ long context
ใช้ส่วนนี้เมื่อ logs/errors มีข้อความ: HTTP 429: rate_limit_error: Extra usage is required for long context requests
openclaw logs --follow
openclaw models status
openclaw config get agents.defaults.models
ตรวจหา:
- โมเดล Anthropic Opus/Sonnet ที่เลือกมี
params.context1m: true - credential Anthropic ปัจจุบันไม่มีสิทธิ์ใช้ long-context
- คำขอล้มเหลวเฉพาะใน session/model run ที่ยาวซึ่งต้องใช้ path เบต้า 1M
ตัวเลือกการแก้ไข:
Disable context1m
ปิด context1m สำหรับโมเดลนั้นเพื่อ fallback ไปยัง context window ปกติ
Use an eligible credential
ใช้ credential Anthropic ที่มีสิทธิ์สำหรับคำขอ long-context หรือเปลี่ยนไปใช้ Anthropic API key
Configure fallback models
กำหนดค่าโมเดล fallback เพื่อให้ run ดำเนินต่อได้เมื่อคำขอ long-context ของ Anthropic ถูกปฏิเสธ
เกี่ยวข้อง:
backend ที่เข้ากันได้กับ OpenAI แบบ local ผ่าน probe ตรง แต่ agent run ล้มเหลว
ใช้ส่วนนี้เมื่อ:
curl ... /v1/modelsทำงาน- การเรียก
/v1/chat/completionsตรงแบบเล็กมากทำงาน - การรันโมเดลของ OpenClaw ล้มเหลวเฉพาะใน turn agent ปกติ
curl http://127.0.0.1:1234/v1/models
curl http://127.0.0.1:1234/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'
openclaw infer model run --model <provider/model> --prompt "hi" --json
openclaw logs --follow
ตรวจหา:
- การเรียกตรงแบบเล็กมากสำเร็จ แต่การรัน OpenClaw ล้มเหลวเฉพาะกับ prompt ที่ใหญ่กว่า
- ข้อผิดพลาด
model_not_foundหรือ 404 แม้ว่า/v1/chat/completionsตรง จะทำงานกับ bare model id เดียวกัน - ข้อผิดพลาดจาก backend เกี่ยวกับ
messages[].contentที่คาดหวัง string - คำเตือน
incomplete turn detected ... stopReason=stop payloads=0เป็นครั้งคราวกับ backend local ที่เข้ากันได้กับ OpenAI - backend crash ที่เกิดเฉพาะกับจำนวน prompt-token ที่มากขึ้นหรือ prompt runtime agent แบบเต็ม
Common signatures
model_not_foundกับเซิร์ฟเวอร์ local สไตล์ MLX/vLLM → ตรวจสอบว่าbaseUrlมี/v1,apiเป็น"openai-completions"สำหรับ backend/v1/chat/completionsและmodels.providers.<provider>.models[].idเป็น bare provider-local id เลือกด้วย provider prefix ครั้งเดียว เช่นmlx/mlx-community/Qwen3-30B-A3B-6bit; เก็บรายการ catalog เป็นmlx-community/Qwen3-30B-A3B-6bitmessages[...].content: invalid type: sequence, expected a string→ backend ปฏิเสธ structured Chat Completions content parts การแก้ไข: ตั้งmodels.providers.<provider>.models[].compat.requiresStringContent: trueincomplete turn detected ... stopReason=stop payloads=0→ backend ทำคำขอ Chat Completions เสร็จแล้ว แต่ไม่ส่งข้อความ assistant ที่ผู้ใช้มองเห็นได้สำหรับ turn นั้น OpenClaw retry turn ว่างที่เข้ากันได้กับ OpenAI และ replay-safe หนึ่งครั้ง; หากยังล้มเหลวซ้ำมักหมายความว่า backend กำลังส่ง content ว่าง/ไม่ใช่ข้อความ หรือ suppress ข้อความ final-answer- คำขอเล็กมากแบบตรงสำเร็จ แต่การรัน agent ของ OpenClaw ล้มเหลวด้วย backend/model crash (เช่น Gemma บน build
inferrsบางตัว) → transport ของ OpenClaw มีแนวโน้มว่าถูกต้องแล้ว; backend ล้มเหลวกับรูปแบบ prompt agent-runtime ที่ใหญ่กว่า - ความล้มเหลวลดลงหลังปิด tools แต่ไม่หายไป → tool schemas เป็นส่วนหนึ่งของแรงกดดัน แต่ปัญหาที่เหลือยังเป็นความจุของ upstream model/server หรือ bug ของ backend
Fix options
- ตั้ง
compat.requiresStringContent: trueสำหรับ backend Chat Completions ที่รับเฉพาะ string - ตั้ง
compat.supportsTools: falseสำหรับโมเดล/backend ที่จัดการ tool schema surface ของ OpenClaw ได้ไม่น่าเชื่อถือ - ลดแรงกดดันของ prompt เมื่อทำได้: workspace bootstrap ที่เล็กลง, ประวัติ session ที่สั้นลง, โมเดล local ที่เบากว่า หรือ backend ที่รองรับ long-context ได้ดีกว่า
- หากคำขอเล็กมากแบบตรงยังผ่าน แต่ turn agent ของ OpenClaw ยัง crash ภายใน backend ให้ถือว่าเป็นข้อจำกัดของ upstream server/model และส่ง repro ที่นั่นพร้อมรูปแบบ payload ที่ backend ยอมรับ
เกี่ยวข้อง:
ไม่มีการตอบกลับ
หาก channels ทำงานอยู่แต่ไม่มีอะไรตอบ ให้ตรวจสอบ routing และ policy ก่อนเชื่อมต่ออะไรใหม่
openclaw status
openclaw channels status --probe
openclaw pairing list --channel <channel> [--account <id>]
openclaw config get channels
openclaw logs --follow
ตรวจหา:
- Pairing pending สำหรับผู้ส่ง DM
- การ gating การ mention ในกลุ่ม (
requireMention,mentionPatterns) - ความไม่ตรงกันของ allowlist สำหรับ channel/group
รูปแบบที่พบบ่อย:
drop guild message (mention required→ ข้อความกลุ่มถูกละเว้นจนกว่าจะมีการ mentionpairing request→ ผู้ส่งต้องได้รับการอนุมัติblocked/allowlist→ ผู้ส่ง/channel ถูกกรองโดย policy
เกี่ยวข้อง:
การเชื่อมต่อ Dashboard control UI
เมื่อ dashboard/control UI เชื่อมต่อไม่ได้ ให้ตรวจสอบ URL, auth mode และสมมติฐานเรื่อง secure context
openclaw gateway status
openclaw status
openclaw logs --follow
openclaw doctor
openclaw gateway status --json
ตรวจหา:
- probe URL และ dashboard URL ที่ถูกต้อง
- auth mode/token ไม่ตรงกันระหว่าง client และ gateway
- การใช้ HTTP ในที่ที่ต้องใช้ device identity
Connect / auth signatures
device identity required→ context ไม่ secure หรือขาด device authorigin not allowed→ browserOriginไม่อยู่ในgateway.controlUi.allowedOrigins(หรือคุณกำลังเชื่อมต่อจาก browser origin ที่ไม่ใช่ loopback โดยไม่มี allowlist ที่ระบุชัดเจน)device nonce required/device nonce mismatch→ client ไม่ได้ทำ flow device auth แบบ challenge-based ให้เสร็จ (connect.challenge+device.nonce)device signature invalid/device signature expired→ client ลงนาม payload ผิด (หรือ timestamp เก่า) สำหรับ handshake ปัจจุบันAUTH_TOKEN_MISMATCHพร้อมcanRetryWithDeviceToken=true→ client สามารถ retry แบบ trusted ได้หนึ่งครั้งด้วย device token ที่ cache ไว้- การ retry ด้วย cached-token นั้นใช้ชุด scope ที่ cache ไว้ซึ่งเก็บพร้อมกับ paired device token ผู้เรียกที่ส่ง
deviceTokenชัดเจน /scopesชัดเจน จะคงชุด scope ที่ร้องขอไว้แทน - นอก path retry นั้น ลำดับความสำคัญของ connect auth คือ shared token/password ที่ระบุชัดเจนก่อน จากนั้น
deviceTokenที่ระบุชัดเจน จากนั้น stored device token แล้วจึงเป็น bootstrap token - บน path async Tailscale Serve Control UI ความพยายามที่ล้มเหลวสำหรับ
{scope, ip}เดียวกันจะถูก serialize ก่อนที่ limiter จะบันทึกความล้มเหลว ดังนั้นการ retry พร้อมกันที่ผิดสองครั้งจาก client เดียวกันอาจแสดงretry laterในครั้งที่สองแทนที่จะเป็น mismatch ธรรมดาสองครั้ง too many failed authentication attempts (retry later)จาก browser-origin local loopback client → ความล้มเหลวซ้ำจาก normalizedOriginเดียวกันนั้นถูก lock out ชั่วคราว; origin localhost อื่นใช้ bucket แยกกันunauthorizedซ้ำหลัง retry นั้น → shared token/device token drift; refresh การกำหนดค่า token และ re-approve/rotate device token หากจำเป็นgateway connect failed:→ เป้าหมาย host/port/url ผิด
แผนที่ด่วนสำหรับ auth detail codes
ใช้ error.details.code จาก response connect ที่ล้มเหลวเพื่อเลือกการกระทำถัดไป
| รหัสรายละเอียด | ความหมาย | การดำเนินการที่แนะนำ |
|---|---|---|
AUTH_TOKEN_MISSING |
ไคลเอนต์ไม่ได้ส่งโทเค็นที่ใช้ร่วมกันที่จำเป็น | วาง/ตั้งค่าโทเค็นในไคลเอนต์แล้วลองใหม่ สำหรับพาธแดชบอร์ด: openclaw config get gateway.auth.token จากนั้นวางลงในการตั้งค่า Control UI |
AUTH_TOKEN_MISMATCH |
โทเค็นที่ใช้ร่วมกันไม่ตรงกับโทเค็นยืนยันตัวตนของ Gateway | หาก canRetryWithDeviceToken=true ให้อนุญาตการลองใหม่ที่เชื่อถือได้หนึ่งครั้ง การลองใหม่ด้วยโทเค็นที่แคชไว้จะใช้ขอบเขตที่อนุมัติและจัดเก็บไว้ซ้ำ ผู้เรียกที่ระบุ deviceToken / scopes โดยตรงจะคงขอบเขตที่ร้องขอไว้ หากยังล้มเหลว ให้รันเช็กลิสต์กู้คืนความคลาดเคลื่อนของโทเค็น |
AUTH_DEVICE_TOKEN_MISMATCH |
โทเค็นต่ออุปกรณ์ที่แคชไว้ล้าสมัยหรือถูกเพิกถอน | หมุนเวียน/อนุมัติโทเค็นอุปกรณ์อีกครั้งโดยใช้ CLI อุปกรณ์ จากนั้นเชื่อมต่อใหม่ |
PAIRING_REQUIRED |
ต้องอนุมัติตัวตนอุปกรณ์ ตรวจสอบ error.details.reason สำหรับ not-paired, scope-upgrade, role-upgrade หรือ metadata-upgrade และใช้ requestId / remediationHint เมื่อมีอยู่ |
อนุมัติคำขอที่รอดำเนินการ: openclaw devices list จากนั้น openclaw devices approve <requestId> การอัปเกรดขอบเขต/บทบาทใช้ขั้นตอนเดียวกันหลังจากคุณตรวจสอบสิทธิ์เข้าถึงที่ร้องขอแล้ว |
การตรวจสอบการย้ายข้อมูลการยืนยันตัวตนอุปกรณ์ v2:
openclaw --version
openclaw doctor
openclaw gateway status
หากบันทึกแสดงข้อผิดพลาด nonce/signature ให้อัปเดตไคลเอนต์ที่เชื่อมต่อและตรวจสอบ:
Wait for connect.challenge
ไคลเอนต์รอ connect.challenge ที่ Gateway ออกให้
Sign the payload
ไคลเอนต์ลงนาม payload ที่ผูกกับ challenge
Send the device nonce
ไคลเอนต์ส่ง connect.params.device.nonce พร้อม nonce ของ challenge เดียวกัน
หาก openclaw devices rotate / revoke / remove ถูกปฏิเสธโดยไม่คาดคิด:
- เซสชันโทเค็นอุปกรณ์ที่จับคู่แล้วสามารถจัดการได้เฉพาะอุปกรณ์ ของตนเอง เว้นแต่ว่าผู้เรียกจะมี
operator.adminด้วย openclaw devices rotate --scope ...สามารถร้องขอได้เฉพาะขอบเขต operator ที่เซสชันผู้เรียกมีอยู่แล้ว
ที่เกี่ยวข้อง:
- การกำหนดค่า (โหมดการยืนยันตัวตน Gateway)
- Control UI
- อุปกรณ์
- การเข้าถึงระยะไกล
- การยืนยันตัวตนพร็อกซีที่เชื่อถือได้
บริการ Gateway ไม่ได้ทำงาน
ใช้ส่วนนี้เมื่อบริการติดตั้งแล้ว แต่โปรเซสไม่คงสถานะทำงาน
openclaw gateway status
openclaw status
openclaw logs --follow
openclaw doctor
openclaw gateway status --deep # also scan system-level services
ตรวจหา:
Runtime: stoppedพร้อมคำใบ้การออก- การกำหนดค่าบริการไม่ตรงกัน (
Config (cli)เทียบกับConfig (service)) - ความขัดแย้งของพอร์ต/listener
- การติดตั้ง launchd/systemd/schtasks เพิ่มเติมเมื่อใช้
--deep - คำใบ้การล้างข้อมูล
Other gateway-like services detected (best effort)
Common signatures
Gateway start blocked: set gateway.mode=localหรือexisting config is missing gateway.mode→ ยังไม่ได้เปิดใช้โหมด Gateway แบบโลคัล หรือไฟล์ config ถูกเขียนทับจนสูญเสียgateway.modeวิธีแก้: ตั้งค่าgateway.mode="local"ใน config ของคุณ หรือรันopenclaw onboard --mode local/openclaw setupอีกครั้งเพื่อประทับ config โหมดโลคัลที่คาดไว้ใหม่ หากคุณรัน OpenClaw ผ่าน Podman พาธ config เริ่มต้นคือ~/.openclaw/openclaw.jsonrefusing to bind gateway ... without auth→ การ bind ที่ไม่ใช่ loopback โดยไม่มีพาธการยืนยันตัวตน Gateway ที่ถูกต้อง (โทเค็น/รหัสผ่าน หรือ trusted-proxy เมื่อกำหนดค่าไว้)another gateway instance is already listening/EADDRINUSE→ พอร์ตขัดแย้งOther gateway-like services detected (best effort)→ มีหน่วย launchd/systemd/schtasks ที่ค้างอยู่หรือทำงานขนานกัน การตั้งค่าส่วนใหญ่ควรมี Gateway หนึ่งตัวต่อเครื่อง หากคุณจำเป็นต้องมีมากกว่าหนึ่งจริงๆ ให้แยกพอร์ต + config/state/workspace ดู /gateway#multiple-gateways-same-hostSystem-level OpenClaw gateway service detectedจาก doctor → มี systemd system unit อยู่ขณะที่บริการระดับผู้ใช้หายไป ลบหรือปิดใช้งานตัวซ้ำก่อนอนุญาตให้ doctor ติดตั้งบริการผู้ใช้ หรือตั้งค่าOPENCLAW_SERVICE_REPAIR_POLICY=externalหาก system unit เป็น supervisor ที่ตั้งใจใช้Gateway service port does not match current gateway config→ supervisor ที่ติดตั้งไว้ยังคงตรึง--portเก่าไว้ รันopenclaw doctor --fixหรือopenclaw gateway install --forceจากนั้นรีสตาร์ตบริการ Gateway
ที่เกี่ยวข้อง:
Gateway ปฏิเสธ config ที่ไม่ถูกต้อง
ใช้ส่วนนี้เมื่อการเริ่มต้น Gateway ล้มเหลวด้วย Invalid config หรือบันทึก hot reload ระบุว่า
ข้ามการแก้ไขที่ไม่ถูกต้อง
openclaw logs --follow
openclaw config file
openclaw config validate
openclaw doctor
ตรวจหา:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- ไฟล์
openclaw.json.rejected.*ที่มี timestamp อยู่ข้าง config ที่ใช้งานอยู่ - ไฟล์
openclaw.json.clobbered.*ที่มี timestamp หากdoctor --fixซ่อมการแก้ไขโดยตรงที่เสียหาย
What happened
- config ไม่ผ่านการตรวจสอบระหว่างเริ่มต้น, hot reload หรือการเขียนที่ OpenClaw เป็นเจ้าของ
- การเริ่มต้น Gateway ล้มเหลวแบบปิดแทนที่จะเขียน
openclaw.jsonใหม่ - Hot reload ข้ามการแก้ไขภายนอกที่ไม่ถูกต้องและคง config runtime ปัจจุบันไว้
- การเขียนที่ OpenClaw เป็นเจ้าของปฏิเสธ payload ที่ไม่ถูกต้อง/ทำลายข้อมูลก่อน commit และบันทึก
.rejected.* openclaw doctor --fixเป็นเจ้าของการซ่อมแซม โดยสามารถลบ prefix ที่ไม่ใช่ JSON หรือกู้คืนสำเนา last-known-good พร้อมเก็บ payload ที่ถูกปฏิเสธไว้เป็น.clobbered.*
Inspect and repair
CONFIG="$(openclaw config file)"
ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | head
diff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"
openclaw config validate
openclaw doctor
Common signatures
- มี
.clobbered.*→ doctor เก็บการแก้ไขภายนอกที่เสียหายไว้ขณะซ่อม config ที่ใช้งานอยู่ - มี
.rejected.*→ การเขียน config ที่ OpenClaw เป็นเจ้าของล้มเหลวจาก schema หรือการตรวจสอบการเขียนทับก่อน commit Config write rejected:→ การเขียนพยายามลดรูปทรงที่จำเป็น ลดขนาดไฟล์อย่างมาก หรือคง config ที่ไม่ถูกต้องconfig reload skipped (invalid config):→ การแก้ไขโดยตรงไม่ผ่านการตรวจสอบและถูก Gateway ที่กำลังทำงานละเว้นInvalid config at ...→ การเริ่มต้นล้มเหลวก่อนบริการ Gateway บูตmissing-meta-vs-last-good,gateway-mode-missing-vs-last-goodหรือsize-drop-vs-last-good:*→ การเขียนที่ OpenClaw เป็นเจ้าของถูกปฏิเสธเพราะสูญเสียฟิลด์หรือขนาดเมื่อเทียบกับข้อมูลสำรอง last-known-goodConfig last-known-good promotion skipped→ candidate มี placeholder ความลับที่ถูกปกปิด เช่น***
Fix options
- รัน
openclaw doctor --fixเพื่อให้ doctor ซ่อม config ที่มี prefix/ถูกเขียนทับ หรือกู้คืน last-known-good - คัดลอกเฉพาะคีย์ที่ตั้งใจจาก
.clobbered.*หรือ.rejected.*จากนั้นนำไปใช้ด้วยopenclaw config setหรือconfig.patch - รัน
openclaw config validateก่อนรีสตาร์ต - หากคุณแก้ไขด้วยมือ ให้คง config JSON5 แบบเต็มไว้ ไม่ใช่แค่วัตถุบางส่วนที่คุณต้องการเปลี่ยน
ที่เกี่ยวข้อง:
คำเตือนจากการ probe Gateway
ใช้ส่วนนี้เมื่อ openclaw gateway probe เข้าถึงบางอย่างได้ แต่ยังพิมพ์บล็อกคำเตือน
openclaw gateway probe
openclaw gateway probe --json
openclaw gateway probe --ssh user@gateway-host
ตรวจหา:
warnings[].codeและprimaryTargetIdในเอาต์พุต JSON- ว่าคำเตือนเกี่ยวกับ fallback ของ SSH, Gateway หลายตัว, ขอบเขตที่ขาดหาย หรือ auth refs ที่ resolve ไม่ได้
ลายเซ็นทั่วไป:
SSH tunnel failed to start; falling back to direct probes.→ การตั้งค่า SSH ล้มเหลว แต่คำสั่งยังลอง target ที่กำหนดค่าไว้/loopback โดยตรงmultiple reachable gateways detected→ มี target มากกว่าหนึ่งตอบกลับ โดยปกติหมายถึงการตั้งค่า Gateway หลายตัวโดยตั้งใจ หรือ listener ที่ค้าง/ซ้ำRead-probe diagnostics are limited by gateway scopes (missing operator.read)→ การเชื่อมต่อสำเร็จ แต่ RPC รายละเอียดถูกจำกัดด้วยขอบเขต จับคู่ตัวตนอุปกรณ์หรือใช้ข้อมูลประจำตัวที่มีoperator.readGateway accepted the WebSocket connection, but follow-up read diagnostics failed→ การเชื่อมต่อสำเร็จ แต่ชุด RPC วินิจฉัยเต็มหมดเวลาหรือล้มเหลว ให้ถือว่าเป็น Gateway ที่เข้าถึงได้พร้อมการวินิจฉัยที่ลดระดับลง เปรียบเทียบconnect.okและconnect.rpcOkในเอาต์พุต--jsonCapability: pairing-pendingหรือgateway closed (1008): pairing required→ Gateway ตอบกลับแล้ว แต่ไคลเอนต์นี้ยังต้องจับคู่/อนุมัติก่อนเข้าถึง operator ตามปกติ- ข้อความเตือน SecretRef ของ
gateway.auth.*/gateway.remote.*ที่ resolve ไม่ได้ → วัสดุยืนยันตัวตนไม่พร้อมใช้งานในพาธคำสั่งนี้สำหรับ target ที่ล้มเหลว
ที่เกี่ยวข้อง:
ช่องเชื่อมต่อแล้ว แต่ข้อความไม่ไหล
หากสถานะช่องเชื่อมต่อแล้วแต่การไหลของข้อความหยุด ให้เน้นที่นโยบาย สิทธิ์ และกฎการส่งเฉพาะช่อง
openclaw channels status --probe
openclaw pairing list --channel <channel> [--account <id>]
openclaw status --deep
openclaw logs --follow
openclaw config get channels
ตรวจหา:
- นโยบาย DM (
pairing,allowlist,open,disabled) - รายการอนุญาตของกลุ่มและข้อกำหนดการกล่าวถึง
- สิทธิ์/ขอบเขต API ของช่องทางที่ขาดหายไป
ลายเซ็นที่พบบ่อย:
mention required→ ข้อความถูกละเว้นโดยนโยบายการกล่าวถึงในกลุ่มpairing/ ร่องรอยการรออนุมัติ → ผู้ส่งยังไม่ได้รับอนุมัติmissing_scope,not_in_channel,Forbidden,401/403→ ปัญหาการยืนยันตัวตน/สิทธิ์ของช่องทาง
ที่เกี่ยวข้อง:
การส่ง Cron และ Heartbeat
หาก Cron หรือ Heartbeat ไม่ทำงานหรือไม่ได้ส่ง ให้ตรวจสอบสถานะตัวจัดตารางเวลาก่อน แล้วจึงตรวจสอบปลายทางการส่ง
openclaw cron status
openclaw cron list
openclaw cron runs --id <jobId> --limit 20
openclaw system heartbeat last
openclaw logs --follow
มองหา:
- เปิดใช้งาน Cron แล้วและมีเวลาปลุกครั้งถัดไป
- สถานะประวัติการรันงาน (
ok,skipped,error) - เหตุผลที่ Heartbeat ถูกข้าม (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file,no-tasks-due)
ลายเซ็นที่พบบ่อย
cron: scheduler disabled; jobs will not run automatically→ Cron ถูกปิดใช้งานcron: timer tick failed→ จังหวะเวลาของตัวจัดตารางเวลาล้มเหลว ให้ตรวจสอบข้อผิดพลาดของไฟล์/ล็อก/รันไทม์heartbeat skippedพร้อมreason=quiet-hours→ อยู่นอกช่วงเวลาทำงานheartbeat skippedพร้อมreason=empty-heartbeat-file→ มีHEARTBEAT.mdอยู่ แต่มีเฉพาะบรรทัดว่าง / หัวข้อ markdown ดังนั้น OpenClaw จึงข้ามการเรียกโมเดลheartbeat skippedพร้อมreason=no-tasks-due→HEARTBEAT.mdมีบล็อกtasks:แต่ไม่มีงานใดถึงกำหนดในจังหวะนี้heartbeat: unknown accountId→ รหัสบัญชีไม่ถูกต้องสำหรับปลายทางการส่ง Heartbeatheartbeat skippedพร้อมreason=dm-blocked→ เป้าหมาย Heartbeat ถูก resolve เป็นปลายทางแบบ DM ขณะที่agents.defaults.heartbeat.directPolicy(หรือ override ต่อเอเจนต์) ถูกตั้งค่าเป็นblock
ที่เกี่ยวข้อง:
Node จับคู่แล้ว แต่เครื่องมือล้มเหลว
หาก Node จับคู่แล้วแต่เครื่องมือล้มเหลว ให้แยกตรวจสอบสถานะ foreground, สิทธิ์ และการอนุมัติ
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
openclaw approvals get --node <idOrNameOrIp>
openclaw logs --follow
openclaw status
มองหา:
- Node ออนไลน์พร้อมความสามารถที่คาดไว้
- การอนุญาตสิทธิ์ของ OS สำหรับกล้อง/ไมโครโฟน/ตำแหน่ง/หน้าจอ
- การอนุมัติ exec และสถานะรายการอนุญาต
ลายเซ็นที่พบบ่อย:
NODE_BACKGROUND_UNAVAILABLE→ แอป Node ต้องอยู่ foreground*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ ขาดสิทธิ์ของ OSSYSTEM_RUN_DENIED: approval required→ การอนุมัติ exec ยังรอดำเนินการSYSTEM_RUN_DENIED: allowlist miss→ คำสั่งถูกบล็อกโดยรายการอนุญาต
ที่เกี่ยวข้อง:
เครื่องมือเบราว์เซอร์ล้มเหลว
ใช้ส่วนนี้เมื่อการทำงานของเครื่องมือเบราว์เซอร์ล้มเหลว แม้ตัว Gateway เองจะทำงานปกติ
openclaw browser status
openclaw browser start --browser-profile openclaw
openclaw browser profiles
openclaw logs --follow
openclaw doctor
มองหา:
- มีการตั้งค่า
plugins.allowหรือไม่ และรวมbrowserไว้หรือไม่ - เส้นทางไฟล์ปฏิบัติการของเบราว์เซอร์ที่ถูกต้อง
- การเข้าถึงโปรไฟล์ CDP
- ความพร้อมใช้งานของ Chrome ในเครื่องสำหรับโปรไฟล์
existing-session/user
ลายเซ็น Plugin / ไฟล์ปฏิบัติการ
unknown command "browser"หรือunknown command 'browser'→ Plugin เบราว์เซอร์ที่บันเดิลมาถูกยกเว้นโดยplugins.allow- เครื่องมือเบราว์เซอร์ขาดหาย / ไม่พร้อมใช้งานขณะที่
browser.enabled=true→plugins.allowไม่รวมbrowserดังนั้น Plugin จึงไม่เคยโหลด Failed to start Chrome CDP on port→ กระบวนการเบราว์เซอร์เริ่มทำงานไม่สำเร็จbrowser.executablePath not found→ เส้นทางที่กำหนดค่าไม่ถูกต้องbrowser.cdpUrl must be http(s) or ws(s)→ URL ของ CDP ที่กำหนดค่าใช้ scheme ที่ไม่รองรับ เช่นfile:หรือftp:browser.cdpUrl has invalid port→ URL ของ CDP ที่กำหนดค่ามีพอร์ตไม่ถูกต้องหรืออยู่นอกช่วงPlaywright is not available in this gateway build; '<feature>' is unsupported.→ การติดตั้ง Gateway ปัจจุบันขาด dependency รันไทม์เบราว์เซอร์หลัก ให้ติดตั้งใหม่หรืออัปเดต OpenClaw แล้วรีสตาร์ท Gateway สแนปช็อต ARIA และภาพหน้าจอพื้นฐานของหน้าเว็บยังคงทำงานได้ แต่การนำทาง, สแนปช็อต AI, ภาพหน้าจอองค์ประกอบด้วย CSS-selector และการส่งออก PDF ยังคงไม่พร้อมใช้งาน
ลายเซ็น Chrome MCP / existing-session
Could not find DevToolsActivePort for chrome→ existing-session ของ Chrome MCP ยังไม่สามารถแนบกับไดเรกทอรีข้อมูลเบราว์เซอร์ที่เลือกได้ เปิดหน้าตรวจสอบของเบราว์เซอร์ เปิดใช้ remote debugging เปิดเบราว์เซอร์ค้างไว้ อนุมัติพรอมป์แนบครั้งแรก แล้วลองใหม่ หากไม่ต้องใช้สถานะการลงชื่อเข้าใช้ ให้ใช้โปรไฟล์openclawที่จัดการให้แทนNo Chrome tabs found for profile="user"→ โปรไฟล์แนบของ Chrome MCP ไม่มีแท็บ Chrome ในเครื่องที่เปิดอยู่Remote CDP for profile "<name>" is not reachable→ ปลายทาง remote CDP ที่กำหนดค่าไม่สามารถเข้าถึงได้จากโฮสต์ GatewayBrowser attachOnly is enabled ... not reachableหรือBrowser attachOnly is enabled and CDP websocket ... is not reachable→ โปรไฟล์ attach-only ไม่มีเป้าหมายที่เข้าถึงได้ หรือ HTTP endpoint ตอบกลับแล้วแต่ยังไม่สามารถเปิด CDP WebSocket ได้
ลายเซ็นองค์ประกอบ / ภาพหน้าจอ / อัปโหลด
fullPage is not supported for element screenshots→ คำขอภาพหน้าจอผสม--full-pageกับ--refหรือ--elementelement screenshots are not supported for existing-session profiles; use ref from snapshot.→ การเรียกภาพหน้าจอของ Chrome MCP /existing-sessionต้องใช้การจับภาพหน้าเว็บหรือ--refจากสแนปช็อต ไม่ใช่ CSS--elementexisting-session file uploads do not support element selectors; use ref/inputRef.→ ฮุกอัปโหลดของ Chrome MCP ต้องใช้ refs จากสแนปช็อต ไม่ใช่ CSS selectorsexisting-session file uploads currently support one file at a time.→ ส่งไฟล์อัปโหลดหนึ่งไฟล์ต่อหนึ่งการเรียกบนโปรไฟล์ Chrome MCPexisting-session dialog handling does not support timeoutMs.→ ฮุกกล่องโต้ตอบบนโปรไฟล์ Chrome MCP ไม่รองรับการ override timeoutexisting-session type does not support timeoutMs overrides.→ ละเว้นtimeoutMsสำหรับact:typeบนprofile="user"/ โปรไฟล์ existing-session ของ Chrome MCP หรือใช้โปรไฟล์เบราว์เซอร์แบบ managed/CDP เมื่อต้องกำหนด timeout เองexisting-session evaluate does not support timeoutMs overrides.→ ละเว้นtimeoutMsสำหรับact:evaluateบนprofile="user"/ โปรไฟล์ existing-session ของ Chrome MCP หรือใช้โปรไฟล์เบราว์เซอร์แบบ managed/CDP เมื่อต้องกำหนด timeout เองresponse body is not supported for existing-session profiles yet.→responsebodyยังต้องใช้เบราว์เซอร์ที่จัดการให้หรือโปรไฟล์ CDP แบบ raw- viewport / dark-mode / locale / offline overrides ที่ค้างอยู่บนโปรไฟล์ attach-only หรือ remote CDP → รัน
openclaw browser stop --browser-profile <name>เพื่อปิดเซสชันควบคุมที่ใช้งานอยู่และปล่อยสถานะ emulation ของ Playwright/CDP โดยไม่ต้องรีสตาร์ท Gateway ทั้งหมด
ที่เกี่ยวข้อง:
หากคุณอัปเกรดแล้วบางอย่างเสียกะทันหัน
ปัญหาส่วนใหญ่หลังอัปเกรดคือ config drift หรือค่าเริ่มต้นที่เข้มงวดขึ้นซึ่งตอนนี้ถูกบังคับใช้
1. พฤติกรรมการยืนยันตัวตนและการ override URL เปลี่ยนไป
openclaw gateway status
openclaw config get gateway.mode
openclaw config get gateway.remote.url
openclaw config get gateway.auth.mode
สิ่งที่ต้องตรวจสอบ:
- หาก
gateway.mode=remoteการเรียก CLI อาจกำลังชี้ไปที่ remote ขณะที่บริการในเครื่องของคุณปกติ - การเรียก
--urlแบบระบุชัดเจนจะไม่ fallback ไปใช้ข้อมูลประจำตัวที่เก็บไว้
ลายเซ็นที่พบบ่อย:
gateway connect failed:→ เป้าหมาย URL ไม่ถูกต้องunauthorized→ endpoint เข้าถึงได้แต่การยืนยันตัวตนไม่ถูกต้อง
2. Guardrails ของ bind และ auth เข้มงวดขึ้น
openclaw config get gateway.bind
openclaw config get gateway.auth.mode
openclaw config get gateway.auth.token
openclaw gateway status
openclaw logs --follow
สิ่งที่ต้องตรวจสอบ:
- การ bind ที่ไม่ใช่ loopback (
lan,tailnet,custom) ต้องมีเส้นทางยืนยันตัวตนของ Gateway ที่ถูกต้อง: การยืนยันตัวตนด้วย token/password ที่ใช้ร่วมกัน หรือ deploymenttrusted-proxyแบบไม่ใช่ loopback ที่กำหนดค่าอย่างถูกต้อง - คีย์เก่าอย่าง
gateway.tokenไม่ได้แทนที่gateway.auth.token
ลายเซ็นที่พบบ่อย:
refusing to bind gateway ... without auth→ bind แบบไม่ใช่ loopback โดยไม่มีเส้นทางยืนยันตัวตนของ Gateway ที่ถูกต้องConnectivity probe: failedขณะที่รันไทม์กำลังทำงาน → Gateway ยังทำงานอยู่แต่เข้าถึงไม่ได้ด้วย auth/url ปัจจุบัน
3. สถานะการจับคู่และตัวตนอุปกรณ์เปลี่ยนไป
openclaw devices list
openclaw pairing list --channel <channel> [--account <id>]
openclaw logs --follow
openclaw doctor
สิ่งที่ต้องตรวจสอบ:
- การอนุมัติอุปกรณ์ที่รอดำเนินการสำหรับแดชบอร์ด/Nodes
- การอนุมัติการจับคู่ DM ที่รอดำเนินการหลังเปลี่ยนนโยบายหรือตัวตน
ลายเซ็นที่พบบ่อย:
device identity required→ ยังไม่ผ่านการยืนยันตัวตนอุปกรณ์pairing required→ ผู้ส่ง/อุปกรณ์ต้องได้รับอนุมัติ
หาก config ของบริการและรันไทม์ยังไม่ตรงกันหลังตรวจสอบแล้ว ให้ติดตั้ง metadata ของบริการใหม่จากไดเรกทอรีโปรไฟล์/สถานะเดียวกัน:
openclaw gateway install --force
openclaw gateway restart
ที่เกี่ยวข้อง: