Gateway
Pemecahan Masalah
Ini adalah panduan operasional mendalam. Mulailah dari /help/troubleshooting untuk mengikuti alur triase cepat terlebih dahulu.
Urutan perintah
Jalankan dalam urutan berikut:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeIndikator kondisi sehat:
openclaw gateway statusmenampilkanRuntime: running,Connectivity probe: ok, dan barisCapability: ....openclaw doctormelaporkan tidak ada masalah konfigurasi/layanan yang menghambat.openclaw channels status --probemenampilkan status transportasi langsung per akun dan, jika didukung,worksatauaudit ok.
Setelah pembaruan
Gunakan ketika pembaruan selesai, tetapi Gateway tidak aktif, channel kosong, atau panggilan model gagal dengan 401.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartPeriksa:
Update restartdalamopenclaw status/openclaw status --all. Serah terima yang tertunda atau gagal menyertakan perintah berikutnya yang harus dijalankan.plugin load failed: dependency tree corrupted; run openclaw doctor --fixpada Channels: konfigurasi channel masih ada, tetapi pendaftaran plugin gagal sebelum channel dapat dimuat.- 401 dari penyedia setelah autentikasi ulang:
openclaw doctor --fixmemeriksa bayangan autentikasi OAuth per agen yang sudah usang dan menghapus salinan lama agar semua agen menggunakan profil bersama saat ini.
Instalasi yang tidak sinkron dan perlindungan konfigurasi yang lebih baru
Gunakan ketika layanan Gateway berhenti secara tidak terduga 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 hanya-baca dapat memeriksa konfigurasi yang ditulis oleh OpenClaw versi lebih baru, tetapi mutasi proses dan layanan tidak dapat dijalankan dari biner yang lebih lama. Tindakan yang diblokir: memulai/menghentikan/memulai ulang/menghapus instalasi layanan Gateway, instalasi ulang layanan secara paksa, memulai Gateway dalam mode layanan, dan pembersihan port gateway --force.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionPerbaiki PATH
Perbaiki PATH agar openclaw mengarah ke instalasi yang lebih baru, lalu jalankan kembali 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 entri paket sistem usang atau wrapper lama yang masih mengarah ke biner openclaw lama.
Ketidakcocokan protokol setelah rollback
Gunakan ketika log terus menampilkan protocol mismatch setelah penurunan versi atau rollback. Gateway yang lebih lama sedang berjalan, tetapi proses klien lokal yang lebih baru masih mencoba menyambung kembali dengan rentang protokol yang tidak didukung oleh Gateway lama.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followPeriksa:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>dalam log Gateway.Established clients:dalamopenclaw gateway status --deepatauGateway clientsdalamopenclaw doctor --deep: klien TCP aktif yang terhubung ke port Gateway, beserta PID dan baris perintah jika diizinkan oleh OS.- Proses klien dengan baris perintah yang mengarah ke instalasi atau wrapper OpenClaw lebih baru yang menjadi asal rollback.
Perbaikan:
- Hentikan atau mulai ulang proses klien OpenClaw usang yang ditampilkan oleh
gateway status --deep. - Mulai ulang aplikasi atau wrapper yang menyematkan OpenClaw: dasbor lokal, editor, pembantu server aplikasi, atau shell
openclaw logs --followyang berjalan lama. - Jalankan kembali
openclaw gateway status --deepatauopenclaw doctor --deepdan pastikan PID klien usang sudah tidak ada.
Jangan membuat Gateway lama menerima protokol baru yang tidak kompatibel. Peningkatan versi protokol melindungi kontrak komunikasi; pemulihan rollback merupakan masalah pembersihan proses/versi.
Symlink Skills dilewati karena keluar dari jalur
Gunakan ketika log mencakup:
Melewati jalur Skills yang keluar dari root yang dikonfigurasi: ... reason=symlink-escapeSetiap root Skills merupakan batas penampungan. Symlink di bawah ~/.agents/skills, <workspace>/.agents/skills, <workspace>/skills, atau ~/.openclaw/skills dilewati jika target sebenarnya mengarah ke luar root tersebut, kecuali target secara eksplisit dipercaya.
Periksa tautan:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadJika target memang disengaja, konfigurasikan root Skills langsung dan target symlink yang diizinkan:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Kemudian mulai sesi baru atau tunggu pemantau Skills dimuat ulang. Mulai ulang Gateway jika proses yang sedang berjalan dimulai sebelum perubahan konfigurasi.
Jangan gunakan target luas seperti ~, /, atau seluruh folder proyek yang disinkronkan. Batasi cakupan allowSymlinkTargets pada root Skills sebenarnya yang berisi direktori SKILL.md tepercaya.
Jika penerapan Skill Workshop juga harus menulis melalui jalur Skills ruang kerja bersymlink yang tepercaya tersebut, aktifkan skills.workshop.allowSymlinkTargetWrites. Biarkan tetap dinonaktifkan untuk root Skills bersama yang hanya-baca.
Terkait:
Penggunaan tambahan Anthropic 429 diperlukan untuk konteks panjang
Gunakan ketika log/kesalahan mencakup: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsPeriksa:
- Model Anthropic yang dipilih adalah model Claude 4.x 1M yang mendukung GA (Opus 4.6/4.7/4.8, Sonnet 4.6), atau konfigurasi model masih memuat
params.context1m: truelama. - Kredensial Anthropic saat ini tidak memenuhi syarat untuk penggunaan konteks panjang.
- Permintaan hanya gagal pada sesi panjang/eksekusi model yang memerlukan jalur konteks 1M.
Opsi perbaikan:
Gunakan jendela konteks standar
Beralihlah ke model dengan jendela standar, atau hapus context1m lama dari
konfigurasi model lama yang tidak mendukung GA untuk konteks 1M.
Gunakan kredensial yang memenuhi syarat
Gunakan kredensial Anthropic yang memenuhi syarat untuk permintaan konteks panjang, atau beralihlah ke kunci API Anthropic.
Konfigurasikan model fallback
Konfigurasikan model fallback agar eksekusi berlanjut ketika permintaan konteks panjang Anthropic ditolak.
Terkait:
Respons 403 yang diblokir upstream
Gunakan ketika penyedia LLM upstream mengembalikan 403 generik seperti Your request was blocked.
Jangan berasumsi bahwa hal ini selalu merupakan masalah konfigurasi OpenClaw. Respons dapat berasal dari lapisan keamanan upstream seperti CDN, WAF, aturan pengelolaan bot, atau proksi terbalik di depan endpoint yang kompatibel dengan OpenAI.
openclaw statusopenclaw gateway statusopenclaw logs --followPeriksa:
- Beberapa model dari penyedia yang sama gagal dengan cara yang sama.
- HTML atau teks keamanan generik, bukan kesalahan API penyedia normal.
- Peristiwa keamanan di sisi penyedia untuk waktu permintaan yang sama.
- Probe langsung
curlyang sangat kecil berhasil, sedangkan permintaan normal berbentuk SDK gagal.
Perbaiki pemfilteran di sisi penyedia terlebih dahulu jika bukti mengarah pada pemblokiran WAF/CDN. Utamakan aturan pengizinan atau pelewatan yang dibatasi secara ketat untuk jalur API yang digunakan OpenClaw, dan hindari menonaktifkan perlindungan untuk seluruh situs.
Terkait:
Backend lokal yang kompatibel dengan OpenAI lolos probe langsung, tetapi eksekusi agen gagal
Gunakan ketika:
curl ... /v1/modelsberfungsi.- Panggilan langsung
/v1/chat/completionsyang sangat kecil berfungsi. - Eksekusi model OpenClaw hanya gagal 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 --followPeriksa:
- Panggilan langsung yang sangat kecil berhasil, tetapi eksekusi OpenClaw hanya gagal pada prompt yang lebih besar.
- Kesalahan
model_not_foundatau 404 meskipun/v1/chat/completionslangsung berfungsi dengan ID model polos yang sama. - Kesalahan backend tentang
messages[].contentyang mengharapkan string. - Peringatan
incomplete turn detected ... stopReason=stop payloads=0berselang-seling dengan backend lokal yang kompatibel dengan OpenAI. - Backend mengalami crash yang hanya muncul dengan jumlah token prompt lebih besar atau prompt runtime agen lengkap.
Pola umum
model_not_founddengan server lokal bergaya MLX/vLLM: pastikanbaseUrlmenyertakan/v1,apiadalah"openai-completions"untuk backend/v1/chat/completions, danmodels.providers.<provider>.models[].idmerupakan ID lokal penyedia yang polos. Pilih sekali dengan prefiks penyedia, 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: tetapkanmodels.providers.<provider>.models[].compat.requiresStringContent: true.validation.keysatau kunci pesan yang diizinkan seperti["role","content"]: backend menolak metadata pemutaran ulang bergaya OpenAI pada pesan Chat Completions. Perbaikan: tetapkanmodels.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 oleh pengguna untuk giliran tersebut. OpenClaw mencoba kembali satu kali untuk giliran kosong kompatibel dengan OpenAI yang aman diputar ulang; kegagalan berulang biasanya berarti backend menghasilkan konten kosong/nonteks atau menyembunyikan teks jawaban akhir.- Permintaan langsung yang sangat kecil berhasil, tetapi eksekusi agen OpenClaw gagal akibat crash backend/model (misalnya Gemma pada beberapa build
inferrs): transportasi OpenClaw kemungkinan sudah benar; backend gagal menangani bentuk prompt runtime agen yang lebih besar. - Kegagalan berkurang setelah alat dinonaktifkan, tetapi tidak hilang: skema alat merupakan bagian dari beban, tetapi masalah yang tersisa tetap berupa kapasitas model/server upstream atau bug backend.
Opsi perbaikan
- Tetapkan
compat.requiresStringContent: trueuntuk backend Chat Completions yang hanya menerima string. - Tetapkan
compat.strictMessageKeys: trueuntuk backend Chat Completions ketat yang hanya menerimaroledancontentpada setiap pesan. - Tetapkan
compat.supportsTools: falseuntuk model/backend yang tidak dapat menangani permukaan skema alat OpenClaw secara andal. - Kurangi beban prompt jika memungkinkan: bootstrap ruang kerja yang lebih kecil, riwayat sesi yang lebih pendek, model lokal yang lebih ringan, atau backend dengan dukungan konteks panjang yang lebih kuat.
- Jika permintaan langsung yang sangat kecil tetap berhasil sementara giliran agen OpenClaw masih mengalami crash di dalam backend, perlakukan hal tersebut sebagai keterbatasan server/model upstream dan ajukan reproduksi di sana dengan bentuk payload yang diterima.
Terkait:
Tidak ada balasan
Jika saluran aktif tetapi tidak ada yang menjawab, periksa perutean dan kebijakan sebelum menyambungkan kembali apa pun.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followCari:
- Pemasangan tertunda untuk pengirim DM.
- Pembatasan penyebutan grup (
requireMention,mentionPatterns). - Ketidakcocokan daftar yang diizinkan untuk saluran/grup.
Pola umum:
drop guild message (mention required→ pesan grup diabaikan hingga ada penyebutan.pairing request→ pengirim memerlukan persetujuan.blocked/allowlist→ pengirim/saluran difilter oleh kebijakan.
Terkait:
Konektivitas UI kontrol dasbor
Jika dasbor/UI kontrol tidak dapat terhubung, validasi URL, mode autentikasi, dan asumsi konteks aman.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonCari:
- URL pemeriksaan dan URL dasbor yang benar.
- Ketidakcocokan mode autentikasi/token antara klien dan gateway.
- Penggunaan HTTP saat identitas perangkat diwajibkan.
Jika peramban lokal tidak dapat terhubung ke 127.0.0.1:18789 setelah pembaruan, pulihkan layanan Gateway lokal terlebih dahulu 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 peramban, tautan dalam lama, atau status tab yang usang. Buka http://127.0.0.1:18789 secara langsung dan navigasikan dari dasbor. Jika layanan tidak tetap berjalan setelah dimulai ulang, jalankan openclaw gateway start dan periksa kembali openclaw gateway status.
Pola koneksi/autentikasi
device identity required→ konteks tidak aman atau autentikasi perangkat tidak ada.origin not allowed→Originperamban tidak ada digateway.controlUi.allowedOrigins(atau Anda terhubung dari origin peramban non-loopback tanpa daftar yang diizinkan secara 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 stempel waktu usang) untuk handshake saat ini.AUTH_TOKEN_MISMATCHdengancanRetryWithDeviceToken=true→ klien dapat melakukan satu percobaan ulang tepercaya dengan token perangkat yang disimpan dalam cache.- Percobaan ulang dengan token cache tersebut menggunakan kembali kumpulan cakupan cache yang disimpan bersama token perangkat yang telah dipasangkan. Pemanggil
deviceTokeneksplisit /scopeseksplisit tetap menggunakan kumpulan cakupan yang dimintanya. AUTH_SCOPE_MISMATCH→ token perangkat dikenali, tetapi cakupan yang disetujuinya tidak mencakup permintaan koneksi ini; pasangkan ulang atau setujui kontrak cakupan yang diminta alih-alih merotasi token gateway bersama.- Di luar jalur percobaan ulang tersebut, urutan prioritas autentikasi koneksi adalah token bersama/kata sandi eksplisit terlebih dahulu, lalu
deviceTokeneksplisit, kemudian token perangkat tersimpan, lalu token bootstrap. - Pada jalur UI Kontrol Tailscale Serve asinkron, percobaan gagal untuk
{scope, ip}yang sama diserialisasi sebelum pembatas mencatat kegagalan. Oleh karena itu, dua percobaan ulang bersamaan yang salah dari klien yang sama dapat menampilkanretry laterpada percobaan kedua, bukan dua ketidakcocokan biasa. too many failed authentication attempts (retry later)dari klien loopback ber-origin peramban → kegagalan berulang dariOriginternormalisasi yang sama diblokir sementara; origin localhost lain menggunakan bucket terpisah.unauthorizedyang berulang setelah percobaan ulang tersebut → pergeseran token bersama/token perangkat; segarkan konfigurasi token dan setujui ulang/rotasi token perangkat jika diperlukan.gateway connect failed:→ target host/port/URL salah.
Peta ringkas kode detail autentikasi
Gunakan error.details.code dari respons connect yang gagal untuk menentukan tindakan berikutnya:
| Kode detail | Arti | Tindakan yang disarankan |
|---|---|---|
AUTH_TOKEN_MISSING |
Klien tidak mengirim token bersama yang diwajibkan. | Tempelkan/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 dengan token cache menggunakan kembali cakupan tersimpan yang telah disetujui; pemanggil deviceToken / scopes eksplisit tetap menggunakan cakupan yang diminta. Jika masih gagal, jalankan daftar periksa pemulihan pergeseran token. |
AUTH_DEVICE_TOKEN_MISMATCH |
Token per perangkat yang disimpan dalam cache sudah usang atau dicabut. | Rotasi/setujui ulang token perangkat menggunakan CLI perangkat, lalu sambungkan kembali. |
AUTH_SCOPE_MISMATCH |
Token perangkat valid, tetapi peran/cakupan yang disetujuinya tidak mencakup permintaan koneksi ini. | Pasangkan ulang perangkat atau setujui kontrak cakupan yang diminta; jangan perlakukan ini sebagai pergeseran token bersama. |
PAIRING_REQUIRED |
Identitas perangkat memerlukan persetujuan. Periksa error.details.reason untuk not-paired, scope-upgrade, role-upgrade, atau metadata-upgrade, dan gunakan requestId / remediationHint jika tersedia. |
Setujui permintaan tertunda: openclaw devices list, lalu openclaw devices approve <requestId>. Peningkatan cakupan/peran menggunakan alur yang sama setelah Anda meninjau akses yang diminta. |
Pemeriksaan migrasi autentikasi perangkat v2:
openclaw --versionopenclaw doctoropenclaw gateway statusJika log menunjukkan 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 pada 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 terpasang hanya dapat mengelola perangkat miliknya sendiri, kecuali pemanggil juga memiliki
operator.admin. openclaw devices rotate --scope ...hanya dapat meminta cakupan operator yang sudah dimiliki oleh sesi pemanggil.
Terkait:
- Konfigurasi (mode autentikasi gateway)
- UI Kontrol
- Perangkat
- Akses jarak jauh
- Autentikasi proksi tepercaya
Layanan Gateway tidak berjalan
Gunakan ketika layanan terpasang tetapi proses tidak tetap aktif.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # juga pindai layanan tingkat sistemCari:
Runtime: stoppeddengan petunjuk 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).
Pola 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"dalam konfigurasi Anda, atau jalankan ulangopenclaw onboard --mode local/openclaw setupuntuk menetapkan ulang konfigurasi mode lokal yang diharapkan. Jika Anda menjalankan OpenClaw melalui Podman, jalur 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 proksi tepercaya jika dikonfigurasi).another gateway instance is already listening/EADDRINUSE→ konflik port.Other gateway-like services detected (best effort)→ terdapat unit launchd/systemd/schtasks yang usang atau berjalan paralel. Sebagian besar penyiapan sebaiknya mempertahankan satu gateway per mesin; jika Anda memang memerlukan lebih dari satu, pisahkan port + konfigurasi/status/ruang kerja. Lihat /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detecteddari doctor → terdapat unit sistem systemd sementara layanan tingkat pengguna tidak ada. Hapus atau nonaktifkan duplikat sebelum mengizinkan doctor memasang layanan pengguna, atau aturOPENCLAW_SERVICE_REPAIR_POLICY=externaljika unit sistem tersebut adalah supervisor yang dimaksudkan.Gateway service port does not match current gateway config→ supervisor yang terpasang masih menetapkan--portlama. Jalankanopenclaw doctor --fixatauopenclaw gateway install --force, lalu mulai ulang layanan gateway.
Terkait:
Gateway macOS berhenti merespons tanpa pemberitahuan, lalu kembali merespons saat Anda menyentuh dasbor
Gunakan ketika channel (Telegram, WhatsApp, dll.) pada host macOS tidak merespons selama beberapa menit hingga beberapa jam, dan Gateway tampak kembali aktif begitu Anda membuka Control UI, masuk melalui SSH, atau berinteraksi dengan host dengan cara lain. Biasanya tidak ada gejala yang jelas di openclaw status karena saat Anda memeriksanya, Gateway sudah aktif 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"Periksa:
- Satu atau beberapa bundel
*-uncaught_exception.jsondi~/.openclaw/logs/stability/denganerror.codeyang ditetapkan ke kode jaringan sementara sepertiENETDOWN,ENETUNREACH,EHOSTUNREACH, atauECONNREFUSED. - Baris
pmset -g logsepertiEntering Sleep state due to 'Maintenance Sleep'atauen0 driver is slow (msg: WillChangeState to 0)yang waktunya selaras dengan stempel waktu crash. Power Nap / Maintenance Sleep secara singkat menempatkan driver Wi-Fi ke status 0; setiapconnect()keluar yang terjadi dalam rentang waktu tersebut dapat gagal denganENETDOWN, bahkan pada host yang selain itu memiliki konektivitas jaringan penuh. - Output
launchctl printyang menampilkanstate = not runningdengan beberaparunsterbaru dan kode keluar, terutama ketika jeda antara crash dan peluncuran berikutnya sekitar satu jam, bukan beberapa detik. launchd macOS menerapkan gerbang perlindungan respawn yang tidak terdokumentasi setelah serangkaian crash, yang dapat berhenti mematuhiKeepAlive=truehingga pemicu eksternal seperti login interaktif, koneksi dasbor, ataulaunchctl kickstartmengaktifkannya kembali.
Pola umum:
- Bundel stabilitas dengan
error.codeberupaENETDOWNatau kode sejenis, dengan tumpukan panggilan yang mengarah ke NodenetlookupAndConnect/Socket.connect. OpenClaw2026.5.26dan yang lebih baru mengklasifikasikannya sebagai kesalahan jaringan sementara yang tidak berbahaya sehingga tidak lagi diteruskan ke handler uncaught tingkat atas; jika Anda menggunakan rilis yang lebih lama, lakukan upgrade terlebih dahulu. - Periode hening yang panjang dan berakhir seketika saat Anda terhubung ke Control UI atau masuk ke host melalui SSH: aktivitas yang terlihat oleh pengguna itulah yang mengaktifkan kembali gerbang respawn launchd, bukan tindakan apa pun yang dilakukan dasbor terhadap Gateway.
- Jumlah
runsbertambah sepanjang hari tanpa barisreceived SIG*; shutting downyang sesuai di~/Library/Logs/openclaw/gateway.log: penghentian bersih mencatat sinyal; crash sementara tidak.
Yang harus dilakukan:
-
Upgrade Gateway jika Anda menjalankan rilis sebelum
2026.5.26. Setelah upgrade, kesalahanENETDOWNberikutnya dicatat sebagai peringatan, bukan menghentikan proses. -
Kurangi aktivitas maintenance sleep pada host Mac mini / desktop yang dimaksudkan untuk berjalan sebagai server yang selalu aktif:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0Ini secara signifikan mengurangi, tetapi tidak sepenuhnya menghilangkan, gangguan driver yang mendasarinya. Sistem masih dapat menjalankan beberapa maintenance sleep untuk pemeliharaan TCP keepalive dan mDNS terlepas dari flag ini.
-
Tambahkan watchdog keaktifan agar serangkaian crash mendatang yang ditahan oleh launchd dapat dideteksi dengan cepat:
bash # Contoh pemeriksaan keaktifan yang memahami launchd, cocok untuk cron atau LaunchAgent setiap 5 menitstate=$(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.gatewayfiTujuannya adalah mengaktifkan kembali gerbang respawn secara eksternal;
KeepAlive=truesaja tidak cukup di macOS setelah serangkaian crash.
Terkait:
Loop supervisor launchd macOS dengan LaunchAgent Gateway/Node duplikat
Gunakan ini ketika instalasi macOS terus dimulai ulang setiap beberapa detik, pemeriksaan kesehatan openclaw
berganti-ganti antara sehat dan tidak tersedia, serta pengiriman channel terhenti
meskipun layanan tampak berjalan.
Hal ini diamati pada instalasi lama ketika ai.openclaw.gateway dan
ai.openclaw.node LaunchAgent sama-sama aktif dan masing-masing menyuntikkan
OPENCLAW_LAUNCHD_LABEL. Dalam keadaan tersebut, OpenClaw dapat mendeteksi supervisi
launchd, mencoba menyerahkan kembali proses mulai ulang kepada launchd, lalu masuk ke loop cepat
EADDRINUSE/respawn alih-alih menjalankan satu proses Gateway yang stabil.
for i in 1 2 3 4; do ps aux | grep 'openclaw.*index.js' | grep -v grep | awk '{print $2}' sleep 10done openclaw gateway status --deepopenclaw node statuslaunchctl print gui/$UID/ai.openclaw.gateway | grep -E 'state|last exit|runs'tail -n 80 ~/Library/Logs/openclaw/gateway.logPeriksa:
- Lebih dari satu PID Gateway selama sampel 30 detik, bukan satu proses yang stabil.
EADDRINUSE,another gateway instance is already listening, atau baris mulai ulang/serah-terima berulang digateway.log.~/Library/LaunchAgents/ai.openclaw.gateway.plistdan~/Library/LaunchAgents/ai.openclaw.node.plistdimuat secara bersamaan pada host yang seharusnya hanya menjalankan satu layanan Gateway terkelola.
Yang harus dilakukan:
-
Jika host ini seharusnya hanya menjalankan layanan Gateway, hapus layanan Node terkelola melalui OpenClaw. Lewati langkah ini jika Anda secara aktif mengandalkan layanan Node untuk fitur Node jarak jauh; menghapus instalasinya akan menghentikan fitur tersebut pada host ini:
bash openclaw node uninstall -
Instal wrapper Gateway persisten yang menghapus penanda launchd yang diwariskan sebelum memulai OpenClaw. Gunakan opsi
--wrapperyang didukung; jangan mengedit berkas yang dihasilkan di bawah~/.openclaw/service-env/, karena instalasi ulang layanan, pembaruan, dan perbaikan Doctor akan membuat ulang berkas tersebut:bash mkdir -p ~/.local/bincat >~/.local/bin/openclaw-launchd-workaround <<'EOF'#!/bin/shset -euunset OPENCLAW_LAUNCHD_LABEL LAUNCH_JOB_LABEL LAUNCH_JOB_NAME XPC_SERVICE_NAME || trueexec openclaw "$@"EOFchmod 700 ~/.local/bin/openclaw-launchd-workaround openclaw gateway install \ --wrapper ~/.local/bin/openclaw-launchd-workaround \ --forcegateway installmempertahankan path wrapper saat instalasi ulang paksa, pembaruan, dan perbaikan Doctor. -
Verifikasi bahwa Gateway stabil dan melayani RPC, bukan sekadar mendengarkan:
bash openclaw gateway status --deep --require-rpc for i in 1 2 3 4; do ps aux | grep 'openclaw.*index.js' | grep -v grep | awk '{print $2}' sleep 10doneSampel PID seharusnya menampilkan satu proses stabil, bukan sekumpulan PID yang terus berganti, dan pengiriman channel masuk seharusnya berlanjut kembali.
-
Setelah melakukan upgrade ke rilis yang telah memperbaiki loop dua LaunchAgent yang mendasarinya, hapus solusi sementara dan instal ulang layanan terkelola normal:
bash OPENCLAW_WRAPPER= openclaw gateway install --forcerm ~/.local/bin/openclaw-launchd-workaround
Terkait:
Gateway berhenti saat penggunaan memori tinggi
Gunakan ketika Gateway menghilang saat menerima beban, supervisor melaporkan mulai ulang bergaya OOM, atau log menyebutkan critical memory pressure bundle written.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportPeriksa:
Reason: diagnostic.memory.pressure.criticaldalam bundel stabilitas terbaru.Memory pressure:dengancritical/rss_threshold,critical/heap_threshold, ataucritical/rss_growth.- Nilai
V8 heap:mendekati batas heap. - Entri
Largest session files:sepertiagents/<agent>/sessions/<session>.jsonlatausessions/<session>.jsonl. - Penghitung memori cgroup Linux ketika Gateway berjalan di dalam container atau layanan dengan batas memori.
Pola umum:
critical memory pressure bundle writtenmuncul sesaat sebelum mulai ulang → OpenClaw merekam bundel stabilitas pra-OOM. Periksa denganopenclaw gateway stability --bundle latest.memory pressure: level=criticalmuncul di log Gateway → OpenClaw mendeteksi tekanan memori kritis dan mencatat fakta memori dalam proses yang tersedia.Largest session files:mengarah ke path transkrip tersamarkan yang sangat besar → kurangi riwayat sesi yang dipertahankan, periksa pertumbuhan sesi, atau pindahkan transkrip lama keluar dari penyimpanan aktif sebelum memulai ulang.- Byte
V8 heap:yang digunakan mendekati batas heap → kurangi tekanan prompt/sesi atau pekerjaan bersamaan terlebih dahulu. Untuk layanan terkelola, periksaGateway heap:diopenclaw gateway status; jika tertulisnot set, buat ulang metadata layanan lama denganopenclaw gateway install --force.NODE_OPTIONSshell sekitar sengaja diabaikan. Gunakan penggantian batas heap eksplisit pada tingkat supervisor hanya setelah memastikan beban kerja berkelanjutan dan menyisakan ruang memori native yang cukup. Memory pressure: critical/rss_growth→ memori bertambah dengan cepat dalam satu rentang pengambilan sampel. Periksa log terbaru untuk impor besar, output alat yang tidak terkendali, percobaan ulang berulang, atau sekumpulan pekerjaan agen yang mengantre.- Tekanan memori kritis muncul di log tetapi tidak ada bundel → rekam
openclaw gateway diagnostics exportsetelah kejadian untuk mendapatkan bukti operasional yang tersedia.
Bundel stabilitas tidak berisi payload. Bundel ini mencakup bukti operasional memori dan path berkas relatif yang disamarkan, bukan teks pesan, isi Webhook, kredensial, token, cookie, atau ID sesi mentah. Lampirkan ekspor diagnostik ke laporan bug alih-alih menyalin log mentah.
Terkait:
Gateway menolak konfigurasi yang tidak valid
Gunakan ketika startup Gateway gagal dengan Invalid config atau log hot reload menyatakan bahwa pengeditan yang tidak valid dilewati.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorPeriksa:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- Berkas
openclaw.json.rejected.*berstempel waktu di samping konfigurasi aktif. - Berkas
openclaw.json.clobbered.*berstempel waktu jikadoctor --fixmemperbaiki pengeditan langsung yang rusak. - OpenClaw menyimpan 32 berkas
.clobbered.*terbaru untuk setiap path konfigurasi dan merotasi berkas yang lebih lama.
Yang terjadi
- Konfigurasi tidak lolos validasi saat startup, hot reload, atau penulisan milik OpenClaw.
- Startup Gateway gagal secara tertutup alih-alih menulis ulang
openclaw.json. - Hot reload melewati pengeditan eksternal yang tidak valid dan mempertahankan konfigurasi runtime saat ini tetap aktif.
- Penulisan milik OpenClaw menolak payload yang tidak valid/destruktif sebelum commit dan menyimpan
.rejected.*. openclaw doctor --fixmenangani perbaikan. Ini dapat menghapus prefiks non-JSON atau memulihkan salinan terakhir yang diketahui baik sambil mempertahankan payload yang ditolak sebagai.clobbered.*.- Ketika banyak perbaikan terjadi untuk satu path konfigurasi, OpenClaw merotasi berkas
.clobbered.*yang lebih lama agar payload terbaru yang diperbaiki tetap tersedia.
Periksa dan perbaiki
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 doctorPola umum
.clobbered.*ada → doctor mempertahankan pengeditan eksternal yang rusak saat memperbaiki konfigurasi aktif..rejected.*ada → penulisan konfigurasi milik OpenClaw gagal dalam pemeriksaan skema atau penimpaan sebelum commit.Config write rejected:→ penulisan mencoba menghilangkan struktur yang diwajibkan, memperkecil berkas secara drastis, atau menyimpan konfigurasi yang tidak valid.config reload skipped (invalid config):→ pengeditan langsung gagal divalidasi dan diabaikan oleh Gateway yang sedang berjalan.Invalid config at ...→ proses awal gagal sebelum layanan Gateway dimulai.missing-meta-vs-last-good,gateway-mode-missing-vs-last-good, atausize-drop-vs-last-good:*→ penulisan milik OpenClaw ditolak karena kehilangan bidang atau ukuran dibandingkan dengan cadangan terakhir yang diketahui baik.Config last-known-good promotion skipped→ kandidat berisi placeholder rahasia yang disamarkan seperti***.
Opsi perbaikan
- Jalankan
openclaw doctor --fixagar doctor memperbaiki konfigurasi yang memiliki prefiks/tertimpa atau memulihkan konfigurasi terakhir yang diketahui baik. - Salin hanya kunci yang dimaksud dari
.clobbered.*atau.rejected.*, lalu terapkan denganopenclaw config setatauconfig.patch. - Jalankan
openclaw config validatesebelum memulai ulang. - Jika Anda mengedit secara manual, pertahankan konfigurasi JSON5 lengkap, bukan hanya objek parsial yang ingin diubah.
Terkait:
Peringatan pemeriksaan Gateway
Gunakan ketika openclaw gateway probe berhasil menjangkau sesuatu, tetapi masih mencetak blok peringatan.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostCari:
warnings[].codedanprimaryTargetIddalam keluaran JSON.- Apakah peringatan berkaitan dengan fallback SSH, beberapa gateway, cakupan yang tidak ada, atau referensi autentikasi yang belum terselesaikan.
Pola umum:
SSH tunnel failed to start; falling back to direct probes.→ penyiapan SSH gagal, tetapi perintah masih mencoba target langsung yang dikonfigurasi/loopback.multiple reachable gateway identities detected→ beberapa gateway yang berbeda merespons, atau OpenClaw tidak dapat membuktikan bahwa target yang dapat dijangkau adalah gateway yang sama. Terowongan SSH, URL proksi, atau URL jarak jauh yang dikonfigurasi ke gateway yang sama diperlakukan sebagai satu gateway dengan beberapa transportasi, bahkan ketika port transportasi berbeda.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ koneksi berhasil, tetapi RPC detail dibatasi oleh cakupan; pasangkan identitas perangkat atau gunakan kredensial denganoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ koneksi berhasil, tetapi rangkaian lengkap RPC diagnostik kehabisan waktu atau gagal. Perlakukan ini sebagai Gateway yang dapat dijangkau dengan diagnostik yang menurun; bandingkanconnect.okdanconnect.rpcOkdalam keluaran--json.Capability: pairing-pendingataugateway closed (1008): pairing required→ gateway merespons, tetapi klien ini masih memerlukan pemasangan/persetujuan sebelum akses operator normal.- Teks peringatan SecretRef
gateway.auth.*/gateway.remote.*yang belum terselesaikan → materi autentikasi tidak tersedia dalam jalur perintah ini untuk target yang gagal.
Terkait:
Kanal terhubung, pesan tidak mengalir
Jika status kanal terhubung tetapi aliran pesan terhenti, fokuslah pada kebijakan, izin, dan aturan pengiriman khusus kanal.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsCari:
- Kebijakan DM (
pairing,allowlist,open,disabled). - Daftar yang diizinkan untuk grup dan persyaratan penyebutan.
- Izin/cakupan API kanal yang tidak ada.
Pola umum:
mention required→ pesan diabaikan oleh kebijakan penyebutan grup.pairing/ jejak persetujuan tertunda → pengirim belum disetujui.missing_scope,not_in_channel,Forbidden,401/403→ masalah autentikasi/izin kanal.
Terkait:
Pengiriman Cron dan Heartbeat
Jika Cron atau Heartbeat tidak berjalan atau tidak mengirim, verifikasi status penjadwal terlebih dahulu, lalu target pengiriman.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followCari:
- Cron diaktifkan dan waktu bangun berikutnya tersedia.
- Status riwayat eksekusi tugas (
ok,skipped,error). - Alasan Heartbeat dilewati (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file,no-tasks-due).
Pola umum
cron: scheduler disabled; jobs will not run automatically→ Cron dinonaktifkan.cron: timer tick failed→ tick penjadwal gagal; periksa kesalahan berkas/log/runtime.heartbeat skippeddenganreason=quiet-hours→ berada di luar rentang jam aktif.heartbeat skippeddenganreason=empty-heartbeat-file→HEARTBEAT.mdada tetapi hanya berisi kerangka kosong, komentar, header, fence, atau daftar periksa kosong, sehingga OpenClaw melewati pemanggilan 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 diidentifikasi sebagai tujuan bergaya DM saatagents.defaults.heartbeat.directPolicy(atau penggantian per agen) diatur keblock.
Terkait:
Node terpasang, alat gagal
Jika Node telah dipasangkan tetapi alat gagal, pisahkan status latar depan, izin, dan persetujuan.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusCari:
- Node daring dengan kemampuan yang diharapkan.
- Pemberian izin OS untuk kamera/mikrofon/lokasi/layar.
- Persetujuan eksekusi dan status daftar yang diizinkan.
Pola umum:
NODE_BACKGROUND_UNAVAILABLE→ aplikasi Node harus berada di latar depan.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ izin OS tidak ada.SYSTEM_RUN_DENIED: approval required→ persetujuan eksekusi tertunda.SYSTEM_RUN_DENIED: allowlist miss→ perintah diblokir oleh daftar yang diizinkan.
Terkait:
Alat peramban gagal
Gunakan ketika tindakan alat peramban gagal meskipun gateway itu sendiri sehat.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorCari:
- Apakah
plugins.allowdiatur dan menyertakanbrowser. - Jalur berkas eksekusi peramban yang valid.
- Keterjangkauan profil CDP.
- Ketersediaan Chrome lokal untuk profil
existing-session/user.
Pola Plugin / berkas eksekusi
unknown command "browser"atauunknown command 'browser'→ Plugin peramban bawaan dikecualikan olehplugins.allow.- Alat peramban tidak ada / tidak tersedia saat
browser.enabled=true→plugins.allowmengecualikanbrowser, sehingga Plugin tidak pernah dimuat. Failed to start Chrome CDP on port→ proses peramban gagal diluncurkan.browser.executablePath not found→ jalur 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 salah atau di luar rentang.Playwright is not available in this gateway build; '<feature>' is unsupported.→ instalasi gateway saat ini tidak memiliki dependensi runtime peramban 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 dengan pemilih CSS, dan ekspor PDF tetap tidak tersedia.
Pola Chrome MCP / sesi yang ada
Could not find DevToolsActivePort for chrome→ sesi yang ada di Chrome MCP belum dapat terhubung ke direktori data peramban yang dipilih. Buka halaman pemeriksaan peramban, aktifkan debugging jarak jauh, biarkan peramban tetap terbuka, setujui permintaan koneksi pertama, lalu coba lagi. Jika status masuk tidak diperlukan, utamakan profilopenclawyang dikelola.No browser tabs found for profile="user"→ profil koneksi Chrome MCP tidak memiliki tab Chrome lokal yang terbuka.Remote CDP for profile "<name>" is not reachable→ titik akhir 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 khusus koneksi tidak memiliki target yang dapat dijangkau, atau titik akhir HTTP merespons tetapi WebSocket CDP masih tidak dapat dibuka.
Pola elemen / tangkapan layar / unggahan
fullPage is not supported for element screenshots→ permintaan tangkapan layar mencampurkan--full-pagedengan--refatau--element.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ pemanggilan 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 referensi snapshot, bukan pemilih CSS.existing-session file uploads currently support one file at a time.→ kirim satu unggahan per pemanggilan pada profil Chrome MCP.existing-session dialog handling does not support timeoutMs.→ hook dialog pada profil Chrome MCP tidak mendukung penggantian batas waktu.existing-session type does not support timeoutMs overrides.→ hilangkantimeoutMsuntukact:typepada profil sesi yang adaprofile="user"/ Chrome MCP, atau gunakan profil peramban terkelola/CDP ketika batas waktu khusus diperlukan.response body is not supported for existing-session profiles yet.→responsebodymasih memerlukan peramban terkelola atau profil CDP mentah.- Penggantian viewport / mode gelap / lokal / luring yang usang pada profil khusus koneksi atau CDP jarak jauh → jalankan
openclaw browser stop --browser-profile <name>untuk menutup sesi kontrol aktif dan melepaskan status emulasi Playwright/CDP tanpa memulai ulang seluruh gateway.
Terkait:
Jika Anda melakukan peningkatan dan sesuatu tiba-tiba rusak
Sebagian besar kerusakan setelah peningkatan disebabkan oleh penyimpangan konfigurasi atau default yang lebih ketat dan kini diberlakukan.
1. Perilaku autentikasi dan penggantian URL berubah
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeHal yang perlu diperiksa:
- Jika
gateway.mode=remote, panggilan CLI mungkin menargetkan sistem jarak jauh sementara layanan lokal Anda berfungsi dengan baik. - Panggilan
--urleksplisit tidak beralih menggunakan kredensial tersimpan.
Indikasi umum:
gateway connect failed:→ target URL salah.unauthorized→ endpoint dapat dijangkau, tetapi autentikasi salah.
2. Batasan pengikatan dan autentikasi lebih ketat
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followHal yang perlu diperiksa:
- Pengikatan non-loopback (
lan,tailnet,custom) memerlukan jalur autentikasi gateway yang valid: autentikasi token/kata sandi bersama, atau deploymenttrusted-proxynon-loopback yang dikonfigurasi dengan benar. - Kunci lama seperti
gateway.tokentidak menggantikangateway.auth.token.
Indikasi umum:
refusing to bind gateway ... without auth→ pengikatan non-loopback tanpa jalur autentikasi gateway yang valid.Connectivity probe: failedsaat runtime berjalan → gateway aktif, tetapi tidak dapat diakses dengan autentikasi/URL saat ini.
3. Status pemasangan dan identitas perangkat berubah
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorHal yang perlu diperiksa:
- Persetujuan perangkat yang tertunda untuk dasbor/node.
- Persetujuan pemasangan DM yang tertunda setelah perubahan kebijakan atau identitas.
Indikasi umum:
device identity required→ autentikasi perangkat belum terpenuhi.pairing required→ pengirim/perangkat harus disetujui.
Jika konfigurasi layanan dan runtime masih tidak sesuai setelah pemeriksaan, instal ulang metadata layanan dari direktori profil/status yang sama:
openclaw gateway install --forceopenclaw gateway restartTerkait: