Gateway
Pemecahan Masalah
Halaman ini adalah runbook mendalam. Mulai dari /help/troubleshooting jika Anda ingin alur triase cepat terlebih dahulu.
Tangga perintah
Jalankan ini terlebih dahulu, dalam urutan ini:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeSinyal sehat yang diharapkan:
openclaw gateway statusmenampilkanRuntime: running,Connectivity probe: ok, dan barisCapability: ....openclaw doctortidak melaporkan masalah konfigurasi/layanan yang memblokir.openclaw channels status --probemenampilkan status transport per akun secara langsung dan, jika didukung, hasil probe/audit sepertiworksatauaudit ok.
Setelah pembaruan
Gunakan ini saat pembaruan selesai tetapi Gateway mati, channel kosong, atau panggilan model mulai gagal dengan 401.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartCari:
Update restartdiopenclaw status/openclaw status --all. Handoff yang tertunda atau gagal menyertakan perintah berikutnya untuk dijalankan.plugin load failed: dependency tree corrupted; run openclaw doctor --fixdi bawah Channels. Itu berarti konfigurasi channel masih ada, tetapi pendaftaran Plugin gagal sebelum channel dapat dimuat.- 401 provider setelah autentikasi ulang.
openclaw doctor --fixmemeriksa bayangan autentikasi OAuth per agen yang usang dan menghapus salinan lama agar semua agen me-resolve profil bersama saat ini.
Instalasi split-brain dan guard konfigurasi yang lebih baru
Gunakan ini saat layanan gateway berhenti tiba-tiba setelah pembaruan, atau log menunjukkan bahwa satu biner openclaw lebih lama daripada versi yang terakhir menulis openclaw.json.
OpenClaw menandai penulisan konfigurasi dengan meta.lastTouchedVersion. Perintah baca-saja masih dapat memeriksa konfigurasi yang ditulis oleh OpenClaw yang lebih baru, tetapi mutasi proses dan layanan menolak melanjutkan dari biner yang lebih lama. Tindakan yang diblokir mencakup memulai, menghentikan, memulai ulang, menghapus instalasi layanan gateway, instal ulang layanan paksa, startup gateway mode layanan, dan pembersihan port gateway --force.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionPerbaiki PATH
Perbaiki PATH agar openclaw me-resolve ke instalasi yang lebih baru, lalu jalankan ulang tindakan tersebut.
Instal ulang layanan gateway
Instal ulang layanan gateway yang dimaksud dari instalasi yang lebih baru:
openclaw gateway install --forceopenclaw gateway restartHapus wrapper usang
Hapus paket sistem usang atau entri wrapper lama yang masih menunjuk ke biner openclaw lama.
Ketidakcocokan protokol setelah rollback
Gunakan ini saat log terus mencetak protocol mismatch setelah Anda menurunkan versi atau melakukan rollback OpenClaw. Ini berarti Gateway yang lebih lama sedang berjalan, tetapi proses klien lokal yang lebih baru masih mencoba menyambung kembali dengan rentang protokol yang tidak dapat digunakan oleh Gateway yang lebih lama.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followCari:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>di log Gateway.Established clients:diopenclaw gateway status --deepatauGateway clientsdiopenclaw doctor --deep. Ini mencantumkan klien TCP aktif yang terhubung ke port Gateway, termasuk PID dan baris perintah jika OS mengizinkannya.- Proses klien yang baris perintahnya menunjuk ke instalasi OpenClaw atau wrapper lebih baru yang Anda rollback.
Perbaikan:
- Hentikan atau mulai ulang proses klien OpenClaw usang yang ditampilkan oleh
gateway status --deep. - Mulai ulang aplikasi atau wrapper yang menyematkan OpenClaw, seperti dasbor lokal, editor, pembantu server aplikasi, atau shell
openclaw logs --followyang berjalan lama. - Jalankan ulang
openclaw gateway status --deepatauopenclaw doctor --deepdan konfirmasi PID klien usang sudah hilang.
Jangan membuat Gateway yang lebih lama menerima protokol baru yang tidak kompatibel. Kenaikan protokol melindungi kontrak wire; pemulihan rollback adalah masalah pembersihan proses/versi.
Symlink Skills dilewati sebagai pelarian jalur
Gunakan ini saat log menyertakan:
Skipping escaped skill path outside its configured root: ... reason=symlink-escapeOpenClaw memperlakukan setiap root skill sebagai batas containment. Symlink di bawah
~/.agents/skills, <workspace>/.agents/skills, <workspace>/skills, atau
~/.openclaw/skills dilewati saat target aslinya me-resolve ke luar root tersebut
kecuali target secara eksplisit dipercaya.
Periksa link:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadJika target disengaja, konfigurasikan root skill langsung dan target symlink yang diizinkan:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Lalu mulai sesi baru atau tunggu watcher skills menyegarkan. Mulai ulang gateway jika proses yang berjalan sudah ada sebelum perubahan konfigurasi.
Jangan gunakan target luas seperti ~, /, atau seluruh folder proyek yang disinkronkan.
Jaga allowSymlinkTargets tetap terbatas pada root skill asli yang berisi direktori
SKILL.md tepercaya.
Jika Skill Workshop apply juga harus menulis melalui jalur skill workspace
tersymlink tepercaya tersebut, aktifkan skills.workshop.allowSymlinkTargetWrites. Biarkan
dinonaktifkan untuk root skill bersama baca-saja.
Terkait:
Anthropic 429 memerlukan penggunaan ekstra untuk konteks panjang
Gunakan ini saat log/error menyertakan: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsCari:
- Model Anthropic yang dipilih adalah model Claude 4.x 1M berkemampuan GA, atau model memiliki
params.context1m: truelama. - Kredensial Anthropic saat ini tidak memenuhi syarat untuk penggunaan konteks panjang.
- Permintaan gagal hanya pada sesi panjang/run model yang memerlukan jalur konteks 1M.
Opsi perbaikan:
Gunakan jendela konteks standar
Beralih ke model dengan jendela standar, atau hapus context1m lama dari konfigurasi
model lama yang tidak berkemampuan GA untuk konteks 1M.
Gunakan kredensial yang memenuhi syarat
Gunakan kredensial Anthropic yang memenuhi syarat untuk permintaan konteks panjang, atau beralih ke kunci API Anthropic.
Konfigurasikan model fallback
Konfigurasikan model fallback agar run berlanjut saat permintaan konteks panjang Anthropic ditolak.
Terkait:
Respons upstream 403 diblokir
Gunakan ini saat provider LLM upstream mengembalikan 403 generik seperti
Your request was blocked.
Jangan berasumsi ini selalu merupakan masalah konfigurasi OpenClaw. Respons dapat berasal dari lapisan keamanan upstream seperti CDN, WAF, aturan manajemen bot, atau reverse proxy di depan endpoint kompatibel OpenAI.
openclaw statusopenclaw gateway statusopenclaw logs --followCari:
- beberapa model di bawah provider yang sama gagal dengan cara yang sama
- HTML atau teks keamanan generik, bukan error API provider normal
- peristiwa keamanan sisi provider untuk waktu permintaan yang sama
- probe
curllangsung kecil berhasil sementara permintaan berbentuk SDK normal gagal
Perbaiki pemfilteran sisi provider terlebih dahulu saat bukti mengarah ke blokir WAF/CDN. Utamakan aturan allow atau skip yang terbatas sempit untuk jalur API yang digunakan OpenClaw, dan hindari menonaktifkan perlindungan untuk seluruh situs.
Terkait:
Backend lokal kompatibel OpenAI lolos probe langsung tetapi run agen gagal
Gunakan ini saat:
curl ... /v1/modelsberfungsi- panggilan langsung kecil
/v1/chat/completionsberfungsi - run model OpenClaw gagal hanya pada giliran agen normal
curl http://127.0.0.1:1234/v1/modelscurl 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" --jsonopenclaw logs --followCari:
- panggilan langsung kecil berhasil, tetapi run OpenClaw gagal hanya pada prompt yang lebih besar
- error
model_not_foundatau 404 meskipun/v1/chat/completionslangsung berfungsi dengan id model polos yang sama - error backend tentang
messages[].contentyang mengharapkan string - peringatan
incomplete turn detected ... stopReason=stop payloads=0intermiten dengan backend lokal kompatibel OpenAI - crash backend yang muncul hanya dengan jumlah token prompt lebih besar atau prompt runtime agen penuh
Tanda umum
model_not_founddengan server lokal bergaya MLX/vLLM → verifikasibaseUrlmenyertakan/v1,apiadalah"openai-completions"untuk backend/v1/chat/completions, danmodels.providers.<provider>.models[].idadalah id lokal-provider polos. Pilih dengan prefiks provider sekali, misalnyamlx/mlx-community/Qwen3-30B-A3B-6bit; pertahankan entri katalog sebagaimlx-community/Qwen3-30B-A3B-6bit.messages[...].content: invalid type: sequence, expected a string→ backend menolak bagian konten Chat Completions terstruktur. Perbaikan: setelmodels.providers.<provider>.models[].compat.requiresStringContent: true.validation.keysatau key pesan yang diizinkan seperti["role","content"]→ backend menolak metadata replay bergaya OpenAI pada pesan Chat Completions. Perbaikan: setelmodels.providers.<provider>.models[].compat.strictMessageKeys: true.incomplete turn detected ... stopReason=stop payloads=0→ backend menyelesaikan permintaan Chat Completions tetapi tidak mengembalikan teks asisten yang terlihat pengguna untuk giliran tersebut. OpenClaw mencoba ulang giliran kosong kompatibel OpenAI yang aman replay satu kali; kegagalan persisten biasanya berarti backend mengeluarkan konten kosong/non-teks atau menekan teks jawaban akhir.- permintaan langsung kecil berhasil, tetapi run agen OpenClaw gagal dengan crash backend/model (misalnya Gemma pada beberapa build
inferrs) → transport OpenClaw kemungkinan sudah benar; backend gagal pada bentuk prompt runtime agen yang lebih besar. - kegagalan berkurang setelah menonaktifkan tools tetapi tidak hilang → skema tool adalah bagian dari tekanan, tetapi masalah yang tersisa masih berupa kapasitas model/server upstream atau bug backend.
Opsi perbaikan
- Setel
compat.requiresStringContent: trueuntuk backend Chat Completions yang hanya menerima string. - Setel
compat.strictMessageKeys: trueuntuk backend Chat Completions ketat yang hanya menerimaroledancontentpada setiap pesan. - Setel
compat.supportsTools: falseuntuk model/backend yang tidak dapat menangani permukaan skema tool OpenClaw secara andal. - Kurangi tekanan prompt jika memungkinkan: bootstrap workspace lebih kecil, riwayat sesi lebih pendek, model lokal lebih ringan, atau backend dengan dukungan konteks panjang yang lebih kuat.
- Jika permintaan langsung kecil tetap lolos sementara giliran agen OpenClaw masih crash di dalam backend, perlakukan sebagai keterbatasan server/model upstream dan ajukan repro di sana dengan bentuk payload yang diterima.
Terkait:
Tidak ada balasan
Jika saluran aktif tetapi tidak ada yang menjawab, periksa perutean dan kebijakan sebelum menghubungkan ulang apa pun.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followCari:
- Penyandingan tertunda untuk pengirim DM.
- Pembatasan penyebutan grup (
requireMention,mentionPatterns). - Ketidakcocokan allowlist saluran/grup.
Tanda umum:
drop guild message (mention required→ pesan grup diabaikan sampai ada penyebutan.pairing request→ pengirim perlu persetujuan.blocked/allowlist→ pengirim/saluran difilter oleh kebijakan.
Terkait:
Konektivitas UI kontrol dasbor
Saat UI dasbor/kontrol tidak dapat terhubung, validasi URL, mode autentikasi, dan asumsi konteks aman.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonCari:
- URL probe dan URL dasbor yang benar.
- Ketidakcocokan mode/token autentikasi antara klien dan gateway.
- Penggunaan HTTP saat identitas perangkat diperlukan.
Jika browser lokal tidak dapat terhubung ke 127.0.0.1:18789 setelah pembaruan, pertama
pulihkan layanan Gateway lokal dan pastikan layanan tersebut menyajikan dasbor:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789Jika curl mengembalikan HTML OpenClaw, Gateway berfungsi dan masalah yang tersisa
kemungkinan adalah cache browser, tautan dalam lama, atau status tab yang kedaluwarsa. Buka
http://127.0.0.1:18789 secara langsung dan navigasi dari dasbor. Jika mulai ulang
tidak membuat layanan tetap berjalan, jalankan openclaw gateway start dan periksa ulang
openclaw gateway status.
Tanda koneksi / autentikasi
device identity required→ konteks tidak aman atau autentikasi perangkat hilang.origin not allowed→Originbrowser tidak ada digateway.controlUi.allowedOrigins(atau Anda terhubung dari asal browser non-loopback tanpa allowlist eksplisit).device nonce required/device nonce mismatch→ klien tidak menyelesaikan alur autentikasi perangkat berbasis tantangan (connect.challenge+device.nonce).device signature invalid/device signature expired→ klien menandatangani payload yang salah (atau timestamp kedaluwarsa) untuk handshake saat ini.AUTH_TOKEN_MISMATCHdengancanRetryWithDeviceToken=true→ klien dapat melakukan satu percobaan ulang tepercaya dengan token perangkat yang di-cache.- Percobaan ulang token yang di-cache tersebut menggunakan kembali kumpulan scope yang di-cache dan disimpan bersama token perangkat yang dipasangkan. Pemanggil
deviceTokeneksplisit /scopeseksplisit tetap memakai kumpulan scope yang mereka minta. AUTH_SCOPE_MISMATCH→ token perangkat dikenali, tetapi scope yang disetujui tidak mencakup permintaan koneksi ini; pasangkan ulang atau setujui kontrak scope yang diminta alih-alih merotasi token gateway bersama.- Di luar jalur percobaan ulang tersebut, prioritas autentikasi koneksi adalah token/kata sandi bersama eksplisit terlebih dahulu, lalu
deviceTokeneksplisit, lalu token perangkat tersimpan, lalu token bootstrap. - Pada jalur UI Kontrol Tailscale Serve asinkron, upaya gagal untuk
{scope, ip}yang sama diserialkan sebelum limiter mencatat kegagalan. Karena itu, dua percobaan ulang buruk yang bersamaan dari klien yang sama dapat menampilkanretry laterpada percobaan kedua alih-alih dua ketidakcocokan biasa. too many failed authentication attempts (retry later)dari klien loopback asal browser → kegagalan berulang dariOriginternormalisasi yang sama dikunci sementara; asal localhost lain menggunakan bucket terpisah.unauthorizedberulang setelah percobaan ulang tersebut → token bersama/token perangkat bergeser; segarkan konfigurasi token dan setujui ulang/rotasi token perangkat jika perlu.gateway connect failed:→ target host/port/url salah.
Peta cepat kode detail autentikasi
Gunakan error.details.code dari respons connect yang gagal untuk memilih tindakan berikutnya:
| Kode detail | Arti | Tindakan yang disarankan |
|---|---|---|
AUTH_TOKEN_MISSING |
Klien tidak mengirim token bersama yang diperlukan. | Tempel/atur token di klien dan coba lagi. Untuk jalur dasbor: openclaw config get gateway.auth.token lalu tempelkan ke pengaturan UI Kontrol. |
AUTH_TOKEN_MISMATCH |
Token bersama tidak cocok dengan token autentikasi gateway. | Jika canRetryWithDeviceToken=true, izinkan satu percobaan ulang tepercaya. Percobaan ulang token yang di-cache menggunakan kembali scope yang disetujui dan tersimpan; pemanggil deviceToken / scopes eksplisit tetap memakai scope yang diminta. Jika masih gagal, jalankan daftar periksa pemulihan pergeseran token. |
AUTH_DEVICE_TOKEN_MISMATCH |
Token per perangkat yang di-cache sudah usang atau dicabut. | Rotasi/setujui ulang token perangkat menggunakan CLI perangkat, lalu hubungkan ulang. |
AUTH_SCOPE_MISMATCH |
Token perangkat valid, tetapi peran/scope yang disetujui tidak mencakup permintaan koneksi ini. | Pasangkan ulang perangkat atau setujui kontrak scope yang diminta; jangan perlakukan ini sebagai pergeseran token bersama. |
PAIRING_REQUIRED |
Identitas perangkat perlu persetujuan. Periksa error.details.reason untuk not-paired, scope-upgrade, role-upgrade, atau metadata-upgrade, dan gunakan requestId / remediationHint jika ada. |
Setujui permintaan tertunda: openclaw devices list lalu openclaw devices approve <requestId>. Peningkatan scope/peran menggunakan alur yang sama setelah Anda meninjau akses yang diminta. |
Pemeriksaan migrasi auth perangkat v2:
openclaw --versionopenclaw doctoropenclaw gateway statusJika log menampilkan kesalahan nonce/tanda tangan, perbarui klien yang terhubung dan verifikasi:
Tunggu connect.challenge
Klien menunggu connect.challenge yang diterbitkan gateway.
Tandatangani payload
Klien menandatangani payload yang terikat tantangan.
Kirim nonce perangkat
Klien mengirim connect.params.device.nonce dengan nonce tantangan yang sama.
Jika openclaw devices rotate / revoke / remove ditolak secara tidak terduga:
- sesi token perangkat yang dipasangkan hanya dapat mengelola perangkat miliknya sendiri kecuali pemanggil juga memiliki
operator.admin openclaw devices rotate --scope ...hanya dapat meminta scope operator yang sudah dimiliki sesi pemanggil
Terkait:
- Konfigurasi (mode autentikasi gateway)
- UI Kontrol
- Perangkat
- Akses jarak jauh
- Autentikasi proxy tepercaya
Layanan Gateway tidak berjalan
Gunakan ini saat layanan terinstal tetapi proses tidak tetap aktif.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # juga pindai layanan tingkat sistemCari:
Runtime: stoppeddengan petunjuk kode keluar.- Ketidakcocokan konfigurasi layanan (
Config (cli)vsConfig (service)). - Konflik port/listener.
- Instalasi launchd/systemd/schtasks tambahan saat
--deepdigunakan. - Petunjuk pembersihan
Other gateway-like services detected (best effort).
Tanda umum
Gateway start blocked: set gateway.mode=localatauexisting config is missing gateway.mode→ mode gateway lokal tidak diaktifkan, atau file konfigurasi tertimpa dan kehilangangateway.mode. Perbaikan: aturgateway.mode="local"di konfigurasi Anda, atau jalankan ulangopenclaw onboard --mode local/openclaw setupuntuk mencap ulang konfigurasi mode lokal yang diharapkan. Jika Anda menjalankan OpenClaw melalui Podman, path konfigurasi default adalah~/.openclaw/openclaw.json.refusing to bind gateway ... without auth→ bind non-loopback tanpa jalur autentikasi gateway yang valid (token/kata sandi, atau proxy tepercaya jika dikonfigurasi).another gateway instance is already listening/EADDRINUSE→ konflik port.Other gateway-like services detected (best effort)→ unit launchd/systemd/schtasks yang kedaluwarsa atau paralel ada. Sebagian besar setup sebaiknya mempertahankan satu gateway per mesin; jika Anda memang memerlukan lebih dari satu, pisahkan port + konfigurasi/status/workspace. Lihat /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detecteddari doctor → unit sistem systemd ada sementara layanan tingkat pengguna hilang. Hapus atau nonaktifkan duplikat sebelum mengizinkan doctor memasang layanan pengguna, atau aturOPENCLAW_SERVICE_REPAIR_POLICY=externaljika unit sistem adalah supervisor yang dimaksud.Gateway service port does not match current gateway config→ supervisor terinstal masih mengunci--portlama. Jalankanopenclaw doctor --fixatauopenclaw gateway install --force, lalu mulai ulang layanan gateway.
Terkait:
Gateway macOS berhenti merespons diam-diam, lalu pulih saat Anda menyentuh dasbor
Gunakan ini saat saluran (Telegram, WhatsApp, dll.) pada host macOS menjadi senyap selama beberapa menit hingga berjam-jam, dan gateway tampaknya kembali begitu Anda membuka UI Kontrol, masuk melalui SSH, atau berinteraksi dengan host dengan cara lain. Biasanya tidak ada gejala jelas di openclaw status karena saat Anda memeriksa, gateway sudah hidup kembali.
ls ~/.openclaw/logs/stability/ | tail -5openclaw gateway stability --bundle latestpmset -g log | grep -iE "sleep|wake|maintenance" | tail -50launchctl print gui/$UID/ai.openclaw.gateway | grep -E "state|last exit|runs"Cari:
- Satu atau beberapa bundle
*-uncaught_exception.jsondi~/.openclaw/logs/stability/denganerror.codediatur ke kode jaringan transien sepertiENETDOWN,ENETUNREACH,EHOSTUNREACH, atauECONNREFUSED. - Baris
pmset -g logsepertiEntering Sleep state due to 'Maintenance Sleep'atauen0 driver is slow (msg: WillChangeState to 0)yang selaras dengan timestamp crash. Power Nap / Maintenance Sleep secara singkat menempatkan driver Wi-Fi ke status 0; setiapconnect()keluar yang terjadi dalam jendela itu dapat gagal denganENETDOWNbahkan pada host yang selain itu memiliki konektivitas jaringan penuh. - Output
launchctl printyang menunjukkanstate = not runningdengan beberaparunsterbaru dan kode keluar, terutama ketika jeda antara crash dan peluncuran berikutnya berada di kisaran satu jam, bukan detik. macOS launchd menerapkan gerbang perlindungan respawn yang tidak terdokumentasi setelah rentetan crash yang dapat berhenti menghormatiKeepAlive=truesampai pemicu eksternal seperti login interaktif, koneksi dasbor, ataulaunchctl kickstartmengaktifkannya kembali.
Tanda umum:
- Bundle stabilitas yang
error.code-nya adalahENETDOWNatau kode terkait, dengan stack panggilan mengarah ke NodenetlookupAndConnect/Socket.connect. OpenClaw2026.5.26dan yang lebih baru mengklasifikasikan ini sebagai kesalahan jaringan transien jinak sehingga tidak lagi menyebar ke handler uncaught tingkat atas; jika Anda memakai rilis yang lebih lama, tingkatkan versi terlebih dahulu. - Periode senyap panjang yang berakhir seketika saat Anda terhubung ke Control UI atau SSH ke host: aktivitas yang terlihat oleh pengguna itulah yang mengaktifkan kembali gerbang respawn launchd, bukan apa pun yang dilakukan dasbor pada Gateway.
- Hitungan
runsbertambah sepanjang hari tanpa barisreceived SIG*; shutting downyang sesuai di~/Library/Logs/openclaw/gateway.log: shutdown bersih mencatat sinyal; crash transien tidak.
Yang harus dilakukan:
-
Tingkatkan Gateway jika Anda menjalankan rilis sebelum
2026.5.26. Setelah peningkatan, kesalahanENETDOWNberikutnya dicatat sebagai peringatan, bukan menghentikan proses. -
Kurangi aktivitas maintenance sleep pada host Mac mini / desktop yang dimaksudkan berjalan sebagai server selalu aktif:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0Ini secara signifikan mengurangi, tetapi tidak sepenuhnya menghilangkan, flap driver yang mendasarinya. Sistem masih dapat melakukan sebagian maintenance sleep untuk TCP keepalive dan pemeliharaan mDNS terlepas dari flag ini.
-
Tambahkan watchdog liveness agar rentetan crash di masa depan yang diparkir oleh launchd tertangkap dengan cepat:
bash # Example launchd-aware liveness check, suitable for a 5-minute cron or LaunchAgentstate=$(launchctl print gui/$UID/ai.openclaw.gateway 2>/dev/null | awk -F'= ' '/state =/ {print $2; exit}')if [ "$state" != "running" ]; then launchctl kickstart -k gui/$UID/ai.openclaw.gatewayfiIntinya adalah mengaktifkan kembali gerbang respawn secara eksternal;
KeepAlive=truesaja tidak cukup di macOS setelah rentetan crash.
Terkait:
Gateway keluar selama penggunaan memori tinggi
Gunakan ini saat Gateway menghilang saat beban tinggi, supervisor melaporkan restart bergaya OOM, atau log menyebutkan critical memory pressure bundle written.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportCari:
Reason: diagnostic.memory.pressure.criticaldi bundle stabilitas terbaru.Memory pressure:dengancritical/rss_threshold,critical/heap_threshold, ataucritical/rss_growth.- Nilai
V8 heap:yang mendekati batas heap. - Entri
Largest session files:sepertiagents/<agent>/sessions/<session>.jsonlatausessions/<session>.jsonl. - Counter memori cgroup Linux saat Gateway berjalan di dalam container atau layanan dengan batas memori.
Tanda umum:
critical memory pressure bundle writtenmuncul tidak lama sebelum restart → OpenClaw menangkap bundle stabilitas pra-OOM. Periksa denganopenclaw gateway stability --bundle latest.memory pressure: level=critical ... memoryPressureSnapshot=disabledmuncul di log Gateway → OpenClaw mendeteksi tekanan memori kritis, tetapi snapshot stabilitas pra-OOM dimatikan.Largest session files:mengarah ke path transkrip tersunting yang sangat besar → kurangi riwayat sesi yang dipertahankan, periksa pertumbuhan sesi, atau pindahkan transkrip lama keluar dari penyimpanan aktif sebelum restart.- Byte terpakai
V8 heap:mendekati batas heap → turunkan tekanan prompt/sesi, kurangi pekerjaan serentak, atau naikkan batas heap Node hanya setelah memastikan workload memang diharapkan. Memory pressure: critical/rss_growth→ memori tumbuh cepat dalam satu jendela sampling. Periksa log terbaru untuk impor besar, output tool yang tidak terkendali, retry berulang, atau batch pekerjaan agen yang antre.- Tekanan memori kritis muncul di log tetapi tidak ada bundle → ini adalah default. Atur
diagnostics.memoryPressureSnapshot: trueuntuk menangkap bundle stabilitas pra-OOM pada peristiwa tekanan memori kritis berikutnya.
Bundle stabilitas bebas payload. Isinya mencakup bukti memori operasional dan path file relatif yang disunting, bukan teks pesan, body webhook, kredensial, token, cookie, atau id sesi mentah. Lampirkan ekspor diagnostik ke laporan bug alih-alih menyalin log mentah.
Terkait:
Gateway menolak config yang tidak valid
Gunakan ini saat startup Gateway gagal dengan Invalid config atau log hot reload mengatakan
ia melewati edit yang tidak valid.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorCari:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- File
openclaw.json.rejected.*bertimestamp di samping config aktif - File
openclaw.json.clobbered.*bertimestamp jikadoctor --fixmemperbaiki edit langsung yang rusak - OpenClaw menyimpan 32 file
.clobbered.*terbaru untuk setiap path config dan merotasi yang lebih lama
What happened
- Config tidak lolos validasi selama startup, hot reload, atau penulisan milik OpenClaw.
- Startup Gateway gagal tertutup alih-alih menulis ulang
openclaw.json. - Hot reload melewati edit eksternal yang tidak valid dan menjaga config runtime saat ini tetap aktif.
- Penulisan milik OpenClaw menolak payload yang tidak valid/destruktif sebelum commit dan menyimpan
.rejected.*. openclaw doctor --fixmemiliki perbaikan. Ia dapat menghapus prefiks non-JSON atau memulihkan salinan terakhir yang diketahui baik sambil mempertahankan payload yang ditolak sebagai.clobbered.*.- Saat banyak perbaikan terjadi untuk satu path config, OpenClaw merotasi file
.clobbered.*lama sehingga payload yang paling baru diperbaiki masih tersedia.
Inspect and repair
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | headdiff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"openclaw config validateopenclaw doctorCommon signatures
.clobbered.*ada → doctor mempertahankan edit eksternal yang rusak saat memperbaiki config aktif..rejected.*ada → penulisan config milik OpenClaw gagal schema atau pemeriksaan clobber sebelum commit.Config write rejected:→ penulisan mencoba menghapus bentuk yang wajib, mengecilkan file secara tajam, atau mempertahankan config yang tidak valid.config reload skipped (invalid config):→ edit langsung gagal validasi dan diabaikan oleh Gateway yang sedang berjalan.Invalid config at ...→ startup gagal sebelum layanan Gateway boot.missing-meta-vs-last-good,gateway-mode-missing-vs-last-good, atausize-drop-vs-last-good:*→ penulisan milik OpenClaw ditolak karena kehilangan field atau ukuran dibandingkan backup terakhir yang diketahui baik.Config last-known-good promotion skipped→ kandidat berisi placeholder rahasia tersunting seperti***.
Fix options
- Jalankan
openclaw doctor --fixagar doctor memperbaiki config berprefiks/ter-clobber atau memulihkan terakhir yang diketahui baik. - Salin hanya key yang dimaksud dari
.clobbered.*atau.rejected.*, lalu terapkan denganopenclaw config setatauconfig.patch. - Jalankan
openclaw config validatesebelum restart. - Jika Anda mengedit manual, pertahankan config JSON5 lengkap, bukan hanya objek parsial yang ingin Anda ubah.
Terkait:
Peringatan probe Gateway
Gunakan ini saat openclaw gateway probe mencapai sesuatu, tetapi tetap mencetak blok peringatan.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostCari:
warnings[].codedanprimaryTargetIddi output JSON.- Apakah peringatan terkait fallback SSH, beberapa Gateway, scope yang hilang, atau ref auth yang tidak terselesaikan.
Tanda umum:
SSH tunnel failed to start; falling back to direct probes.→ penyiapan SSH gagal, tetapi perintah tetap mencoba target langsung yang dikonfigurasi/loopback.multiple reachable gateway identities detected→ Gateway berbeda menjawab, atau OpenClaw tidak dapat membuktikan target yang dapat dijangkau adalah Gateway yang sama. Tunnel SSH, URL proxy, atau URL remote yang dikonfigurasi ke Gateway yang sama diperlakukan sebagai satu Gateway dengan beberapa transport, bahkan saat port transport berbeda.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ koneksi berhasil, tetapi RPC detail dibatasi scope; pasangkan identitas perangkat atau gunakan kredensial denganoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ koneksi berhasil, tetapi set RPC diagnostik penuh timeout atau gagal. Perlakukan ini sebagai Gateway yang dapat dijangkau dengan diagnostik terdegradasi; bandingkanconnect.okdanconnect.rpcOkdi output--json.Capability: pairing-pendingataugateway closed (1008): pairing required→ Gateway menjawab, tetapi klien ini masih membutuhkan pairing/persetujuan sebelum akses operator normal.- teks peringatan SecretRef
gateway.auth.*/gateway.remote.*yang tidak terselesaikan → material auth tidak tersedia di path perintah ini untuk target yang gagal.
Terkait:
Channel terhubung, pesan tidak mengalir
Jika status channel terhubung tetapi alur pesan mati, fokus pada kebijakan, izin, dan aturan pengiriman khusus channel.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsCari:
- Kebijakan DM (
pairing,allowlist,open,disabled). - Allowlist grup dan persyaratan mention.
- Izin/scope API channel yang hilang.
Tanda umum:
mention required→ pesan diabaikan oleh kebijakan mention grup.- Jejak
pairing/ persetujuan tertunda → pengirim belum disetujui. missing_scope,not_in_channel,Forbidden,401/403→ masalah auth/izin channel.
Terkait:
Pengiriman Cron dan Heartbeat
Jika Cron atau Heartbeat tidak berjalan atau tidak terkirim, verifikasi status scheduler terlebih dahulu, lalu target pengiriman.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followCari:
- Cron aktif dan wake berikutnya tersedia.
- Status riwayat eksekusi job (
ok,skipped,error). - Alasan Heartbeat dilewati (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file,no-tasks-due).
Tanda umum
cron: scheduler disabled; jobs will not run automatically→ cron dinonaktifkan.cron: timer tick failed→ tick penjadwal gagal; periksa kesalahan file/log/runtime.heartbeat skippeddenganreason=quiet-hours→ di luar jendela jam aktif.heartbeat skippeddenganreason=empty-heartbeat-file→HEARTBEAT.mdada tetapi hanya berisi scaffolding kosong, komentar, header, fence, atau checklist kosong, sehingga OpenClaw melewati panggilan model.heartbeat skippeddenganreason=no-tasks-due→HEARTBEAT.mdberisi bloktasks:, tetapi tidak ada tugas yang jatuh tempo pada tick ini.heartbeat: unknown accountId→ id akun tidak valid untuk target pengiriman heartbeat.heartbeat skippeddenganreason=dm-blocked→ target heartbeat diselesaikan ke tujuan bergaya DM saatagents.defaults.heartbeat.directPolicy(atau override per agen) diatur keblock.
Terkait:
Node dipasangkan, alat gagal
Jika sebuah node dipasangkan tetapi alat gagal, isolasi status foreground, izin, dan persetujuan.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusCari:
- Node online dengan kapabilitas yang diharapkan.
- Pemberian izin OS untuk kamera/mikrofon/lokasi/layar.
- Persetujuan exec dan status allowlist.
Tanda umum:
NODE_BACKGROUND_UNAVAILABLE→ aplikasi node harus berada di foreground.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ izin OS tidak ada.SYSTEM_RUN_DENIED: approval required→ persetujuan exec tertunda.SYSTEM_RUN_DENIED: allowlist miss→ perintah diblokir oleh allowlist.
Terkait:
Alat browser gagal
Gunakan ini saat tindakan alat browser gagal meskipun gateway itu sendiri sehat.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorCari:
- Apakah
plugins.allowdiatur dan menyertakanbrowser. - Path executable browser yang valid.
- Keterjangkauan profil CDP.
- Ketersediaan Chrome lokal untuk profil
existing-session/user.
Tanda Plugin / executable
unknown command "browser"atauunknown command 'browser'→ plugin browser bawaan dikecualikan olehplugins.allow.- alat browser hilang / tidak tersedia saat
browser.enabled=true→plugins.allowmengecualikanbrowser, sehingga plugin tidak pernah dimuat. Failed to start Chrome CDP on port→ proses browser gagal diluncurkan.browser.executablePath not found→ path yang dikonfigurasi tidak valid.browser.cdpUrl must be http(s) or ws(s)→ URL CDP yang dikonfigurasi menggunakan skema yang tidak didukung sepertifile:atauftp:.browser.cdpUrl has invalid port→ URL CDP yang dikonfigurasi memiliki port yang buruk atau di luar rentang.Playwright is not available in this gateway build; '<feature>' is unsupported.→ instalasi gateway saat ini tidak memiliki dependensi runtime browser inti; instal ulang atau perbarui OpenClaw, lalu mulai ulang gateway. Snapshot ARIA dan tangkapan layar halaman dasar masih dapat berfungsi, tetapi navigasi, snapshot AI, tangkapan layar elemen pemilih CSS, dan ekspor PDF tetap tidak tersedia.
Tanda Chrome MCP / existing-session
Could not find DevToolsActivePort for chrome→ existing-session Chrome MCP belum dapat melampirkan ke dir data browser yang dipilih. Buka halaman inspeksi browser, aktifkan debugging jarak jauh, biarkan browser tetap terbuka, setujui prompt lampiran pertama, lalu coba lagi. Jika status masuk tidak diperlukan, pilih profilopenclawyang dikelola.No Chrome tabs found for profile="user"→ profil lampiran Chrome MCP tidak memiliki tab Chrome lokal yang terbuka.Remote CDP for profile "<name>" is not reachable→ endpoint CDP jarak jauh yang dikonfigurasi tidak dapat dijangkau dari host gateway.Browser attachOnly is enabled ... not reachableatauBrowser attachOnly is enabled and CDP websocket ... is not reachable→ profil attach-only tidak memiliki target yang dapat dijangkau, atau endpoint HTTP menjawab tetapi WebSocket CDP tetap tidak dapat dibuka.
Tanda elemen / tangkapan layar / unggahan
fullPage is not supported for element screenshots→ permintaan tangkapan layar mencampur--full-pagedengan--refatau--element.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ panggilan tangkapan layar Chrome MCP /existing-sessionharus menggunakan pengambilan halaman atau--refsnapshot, bukan--elementCSS.existing-session file uploads do not support element selectors; use ref/inputRef.→ hook unggahan Chrome MCP memerlukan ref snapshot, bukan pemilih CSS.existing-session file uploads currently support one file at a time.→ kirim satu unggahan per panggilan pada profil Chrome MCP.existing-session dialog handling does not support timeoutMs.→ hook dialog pada profil Chrome MCP tidak mendukung override timeout.existing-session type does not support timeoutMs overrides.→ hilangkantimeoutMsuntukact:typepada profilprofile="user"/ existing-session Chrome MCP, atau gunakan profil browser terkelola/CDP saat timeout kustom diperlukan.existing-session evaluate does not support timeoutMs overrides.→ hilangkantimeoutMsuntukact:evaluatepada profilprofile="user"/ existing-session Chrome MCP, atau gunakan profil browser terkelola/CDP saat timeout kustom diperlukan.response body is not supported for existing-session profiles yet.→responsebodymasih memerlukan browser terkelola atau profil CDP mentah.- override viewport / mode gelap / lokal / offline yang basi pada profil attach-only atau CDP jarak jauh → jalankan
openclaw browser stop --browser-profile <name>untuk menutup sesi kontrol aktif dan melepas status emulasi Playwright/CDP tanpa memulai ulang seluruh gateway.
Terkait:
Jika Anda memutakhirkan dan sesuatu tiba-tiba rusak
Sebagian besar kerusakan pascapemutakhiran adalah drift konfigurasi atau default yang lebih ketat yang kini diberlakukan.
1. Perilaku override auth dan URL berubah
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeYang perlu diperiksa:
- Jika
gateway.mode=remote, panggilan CLI mungkin menargetkan remote sementara layanan lokal Anda baik-baik saja. - Panggilan
--urleksplisit tidak fallback ke kredensial tersimpan.
Tanda umum:
gateway connect failed:→ target URL salah.unauthorized→ endpoint dapat dijangkau tetapi auth salah.
2. Guardrail bind dan auth lebih ketat
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followYang perlu diperiksa:
- Bind non-loopback (
lan,tailnet,custom) memerlukan path auth gateway yang valid: auth token/kata sandi bersama, atau deploymenttrusted-proxynon-loopback yang dikonfigurasi dengan benar. - Kunci lama seperti
gateway.tokentidak menggantikangateway.auth.token.
Tanda umum:
refusing to bind gateway ... without auth→ bind non-loopback tanpa path auth gateway yang valid.Connectivity probe: failedsaat runtime berjalan → gateway hidup tetapi tidak dapat diakses dengan auth/url saat ini.
3. Status pairing dan identitas perangkat berubah
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorYang perlu diperiksa:
- Persetujuan perangkat yang tertunda untuk dashboard/node.
- Persetujuan pairing DM yang tertunda setelah perubahan kebijakan atau identitas.
Tanda umum:
device identity required→ auth perangkat belum terpenuhi.pairing required→ pengirim/perangkat harus disetujui.
Jika konfigurasi layanan dan runtime masih tidak cocok setelah pemeriksaan, instal ulang metadata layanan dari direktori profil/status yang sama:
openclaw gateway install --forceopenclaw gateway restartTerkait: