~/.openclaw/openclaw.json. Jika file tidak ada, OpenClaw menggunakan nilai default yang aman.
Jalur konfigurasi aktif harus berupa file biasa. Penulisan yang dilakukan OpenClaw menggantinya secara atomik (mengganti nama ke jalur tersebut), sehingga target openclaw.json yang berupa symlink akan diganti, bukan ditulisi melalui symlink tersebut - hindari tata letak konfigurasi yang menggunakan symlink. Jika Anda menyimpan konfigurasi di luar direktori status default, arahkan OPENCLAW_CONFIG_PATH langsung ke file sebenarnya.
Alasan umum untuk menambahkan konfigurasi:
- Hubungkan channel dan kendalikan siapa yang dapat mengirim pesan kepada bot
- Atur model, alat, sandboxing, atau otomatisasi (cron, hook)
- Sesuaikan sesi, media, jaringan, atau UI
config.schema.lookup untuk dokumentasi
tingkat bidang yang tepat sebelum mengedit konfigurasi. Gunakan halaman ini untuk panduan berorientasi tugas dan
Referensi konfigurasi untuk peta
bidang dan nilai default yang lebih luas.
Konfigurasi minimal
Mengedit konfigurasi
- Wizard interaktif
- CLI (perintah satu baris)
- UI Kontrol
- Edit langsung
Validasi ketat
openclaw config schema mencetak Skema JSON kanonis yang digunakan oleh UI Kontrol
dan validasi. config.schema.lookup mengambil satu node dengan cakupan jalur beserta
ringkasan turunannya untuk alat penelusuran mendetail. Metadata dokumentasi bidang title/description
diteruskan melalui objek bertingkat, wildcard (*), item array ([]), dan cabang anyOf/
oneOf/allOf. Skema plugin dan channel runtime digabungkan saat
registri manifes dimuat.
Ketika validasi gagal:
- Gateway tidak dimulai
- Hanya perintah diagnostik yang berfungsi (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Jalankan
openclaw doctoruntuk melihat masalah secara tepat - Jalankan
openclaw doctor --fix(--repairadalah flag yang sama;--yesmelewati prompt) untuk menerapkan perbaikan
openclaw doctor --fix
yang melakukannya. Jika openclaw.json gagal divalidasi (termasuk validasi lokal plugin), proses
mulai Gateway gagal atau pemuatan ulang dilewati dan runtime saat ini mempertahankan konfigurasi terakhir
yang diterima. Penulisan yang ditolak juga disimpan sebagai <path>.rejected.<timestamp> untuk diperiksa.
Gateway memblokir penulisan yang tampak seperti penimpaan tidak disengaja - menghapus gateway.mode,
menghilangkan blok meta, atau memperkecil file lebih dari separuh - kecuali penulisan tersebut
secara eksplisit mengizinkan perubahan destruktif. Promosi menjadi salinan terakhir yang diketahui baik dilewati ketika
kandidat berisi placeholder rahasia yang disamarkan seperti *** atau [redacted].
Tugas umum
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
channels.<provider>. Lihat halaman khusus channel untuk langkah-langkah penyiapan:- Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - iMessage -
channels.imessage - Mattermost -
channels.mattermost - Microsoft Teams -
channels.msteams - Signal -
channels.signal - Slack -
channels.slack - Telegram -
channels.telegram - WhatsApp -
channels.whatsapp
Memilih dan mengonfigurasi model
Memilih dan mengonfigurasi model
agents.defaults.modelsmenyimpan alias dan pengaturan per model; menambahkan entri tidak pernah membatasi penggantian/modelatau--model.agents.defaults.modelPolicy.allowadalah daftar izin eksplisit untuk penggantian dan pemilih model. Ini menerima referensi persis dan wildcardprovider/*; hilangkan atau gunakan[]untuk mengizinkan model apa pun.- Referensi model menggunakan format
provider/model(misalnyaanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxmengontrol penurunan skala gambar transkrip/alat (default1200); nilai yang lebih rendah biasanya mengurangi penggunaan token visi pada proses yang sarat tangkapan layar.- Lihat CLI Model untuk mengganti model dalam obrolan dan Failover Model untuk rotasi autentikasi dan perilaku fallback.
- Untuk penyedia khusus/yang dihosting sendiri, lihat Penyedia khusus dalam referensi.
Mengendalikan siapa yang dapat mengirim pesan kepada bot
Mengendalikan siapa yang dapat mengirim pesan kepada bot
dmPolicy (default "pairing"):"pairing": pengirim tidak dikenal mendapatkan kode pemasangan sekali pakai untuk disetujui"allowlist": hanya pengirim dalamallowFrom(atau penyimpanan izin yang telah dipasangkan)"open": izinkan semua DM masuk (memerlukanallowFrom: ["*"])"disabled": abaikan semua DM
groupPolicy ("allowlist" | "open" | "disabled") bersama groupAllowFrom atau daftar izin khusus channel.Lihat referensi lengkap untuk detail per channel.Menyiapkan gerbang penyebutan obrolan grup
Menyiapkan gerbang penyebutan obrolan grup
- Penyebutan metadata: @-mention native (ketuk untuk menyebut di WhatsApp, @bot di Telegram, dll.)
- Pola teks: pola regex aman dalam
mentionPatterns - Balasan terlihat:
messages.visibleRepliesdapat mewajibkan pengiriman alat pesan secara global;messages.groupChat.visibleRepliesmenggantikannya untuk grup/channel. - Lihat referensi lengkap untuk mode balasan terlihat, penggantian per channel, dan mode obrolan dengan diri sendiri.
Membatasi Skills per agen
Membatasi Skills per agen
agents.defaults.skills untuk baseline bersama, lalu ganti untuk agen
tertentu dengan agents.list[].skills:- Hilangkan
agents.defaults.skillsagar Skills tidak dibatasi secara default. - Hilangkan
agents.list[].skillsuntuk mewarisi nilai default. - Atur
agents.list[].skills: []agar tidak ada Skills. - Lihat Skills, Konfigurasi Skills, dan Referensi Konfigurasi.
Mengonfigurasi pemantauan kesehatan per channel
Mengonfigurasi pemantauan kesehatan per channel
- Gunakan
channels.<provider>.healthMonitor.enabledatauchannels.<provider>.accounts.<id>.healthMonitor.enableduntuk mengontrol mulai ulang otomatis bagi satu channel atau akun. - Lihat Pemeriksaan Kesehatan untuk debugging operasional dan referensi lengkap untuk semua bidang.
Mengonfigurasi sesi dan pengaturan ulang
Mengonfigurasi sesi dan pengaturan ulang
dmScope:main(bersama) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: nilai default global untuk perutean sesi yang terikat ke utas./focus,/unfocus,/agents,/session idle, dan/session max-agemengikat, melepas ikatan, mencantumkan, dan menyesuaikan ini per sesi (Discord mengikat utas, Telegram mengikat topik/percakapan).- Lihat Manajemen Sesi untuk cakupan, tautan identitas, dan kebijakan pengiriman.
- Lihat referensi lengkap untuk semua bidang.
Aktifkan sandboxing
Aktifkan sandboxing
scripts/sandbox-setup.sh, atau dari instalasi npm, lihat perintah inline docker build di Sandboxing § Image dan penyiapan.Lihat Sandboxing untuk panduan lengkap dan referensi lengkap untuk semua opsi.Aktifkan push berbasis relay untuk build iOS resmi
Aktifkan push berbasis relay untuk build iOS resmi
https://ios-push-relay.openclaw.ai.Deployment relay khusus memerlukan jalur build/deployment iOS yang sengaja dipisahkan, dengan URL relay yang cocok dengan URL relay gateway. Jika Anda menggunakan build relay khusus, atur ini dalam konfigurasi gateway:- Memungkinkan gateway mengirim
push.test, dorongan untuk membangunkan, dan pembangkitan koneksi ulang melalui relay eksternal. - Menggunakan izin pengiriman dengan cakupan pendaftaran yang diteruskan oleh aplikasi iOS yang dipasangkan. Gateway tidak memerlukan token relay untuk seluruh deployment.
- Mengikat setiap pendaftaran berbasis relay ke identitas gateway yang dipasangkan dengan aplikasi iOS, sehingga gateway lain tidak dapat menggunakan kembali pendaftaran yang tersimpan.
- Mempertahankan penggunaan APNs langsung untuk build iOS lokal/manual. Pengiriman berbasis relay hanya berlaku untuk build resmi yang didistribusikan dan didaftarkan melalui relay.
- Harus cocok dengan URL dasar relay yang disematkan dalam build iOS agar lalu lintas pendaftaran dan pengiriman mencapai deployment relay yang sama.
- Instal aplikasi iOS resmi.
- Opsional: konfigurasikan
gateway.push.apns.relay.baseUrlpada gateway hanya saat menggunakan build relay khusus yang sengaja dipisahkan. - Pasangkan aplikasi iOS dengan gateway dan biarkan sesi node maupun operator terhubung.
- Aplikasi iOS mengambil identitas gateway, mendaftar ke relay menggunakan App Attest beserta tanda terima aplikasi, lalu memublikasikan payload
push.apns.registerberbasis relay ke gateway yang dipasangkan. - Gateway menyimpan handle relay dan izin pengiriman, lalu menggunakannya untuk
push.test, dorongan untuk membangunkan, dan pembangkitan koneksi ulang.
- Jika Anda mengalihkan aplikasi iOS ke gateway lain, hubungkan kembali aplikasi agar dapat memublikasikan pendaftaran relay baru yang terikat ke gateway tersebut.
- Jika Anda merilis build iOS baru yang mengarah ke deployment relay lain, aplikasi memperbarui pendaftaran relay yang di-cache alih-alih menggunakan kembali asal relay lama.
OPENCLAW_APNS_RELAY_BASE_URLdanOPENCLAW_APNS_RELAY_TIMEOUT_MStetap berfungsi sebagai penggantian sementara melalui variabel lingkungan.- URL relay gateway khusus harus cocok dengan URL dasar relay yang disematkan dalam build iOS; jalur rilis App Store publik menolak penggantian URL relay iOS khusus.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=truetetap menjadi jalur darurat pengembangan khusus loopback; jangan simpan URL relay HTTP dalam konfigurasi.
Siapkan Heartbeat (check-in berkala)
Siapkan Heartbeat (check-in berkala)
every: string durasi (30m,2h). Atur0muntuk menonaktifkan. Default:30m.target:last|none|<channel-id>(misalnyadiscord,matrix,telegram, atauwhatsapp)directPolicy:allow(default) ataublockuntuk target Heartbeat bergaya DM- Lihat Heartbeat untuk panduan lengkap.
Konfigurasikan tugas Cron
Konfigurasikan tugas Cron
sessionRetention: pangkas sesi eksekusi terisolasi yang telah selesai dari baris sesi SQLite (default24h; aturfalseuntuk menonaktifkan).- Riwayat eksekusi secara otomatis menyimpan 2000 baris terminal terbaru per tugas; baris yang hilang tetap mempertahankan jangka waktu pembersihan 24 jam.
- Lihat Tugas Cron untuk ikhtisar fitur dan contoh CLI.
Siapkan Webhook (hook)
Siapkan Webhook (hook)
- Perlakukan semua konten payload hook/Webhook sebagai input yang tidak tepercaya.
- Gunakan
hooks.tokenkhusus; jangan gunakan kembali rahasia autentikasi Gateway yang aktif (gateway.auth.token/OPENCLAW_GATEWAY_TOKENataugateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Autentikasi hook hanya melalui header (
Authorization: Bearer ...ataux-openclaw-token); token string kueri ditolak. hooks.pathtidak boleh berupa/; pertahankan ingress Webhook pada subjalur khusus seperti/hooks.- Biarkan flag pengabaian konten tidak aman tetap dinonaktifkan (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), kecuali saat melakukan debugging dengan cakupan yang sangat ketat. - Jika Anda mengaktifkan
hooks.allowRequestSessionKey, atur jugahooks.allowedSessionKeyPrefixesuntuk membatasi kunci sesi yang dipilih pemanggil. - Untuk agen yang digerakkan oleh hook, utamakan tingkat model modern yang kuat dan kebijakan alat yang ketat (misalnya hanya olah pesan ditambah sandboxing jika memungkinkan).
Konfigurasikan perutean multiagen
Konfigurasikan perutean multiagen
Pisahkan konfigurasi menjadi beberapa file ($include)
Pisahkan konfigurasi menjadi beberapa file ($include)
$include untuk mengatur konfigurasi besar:- Satu file: menggantikan objek yang memuatnya
- Array file: digabungkan secara mendalam sesuai urutan (yang lebih akhir menang), hingga kedalaman 10 tingkat bertingkat
- Kunci sejajar: digabungkan setelah penyertaan (menimpa nilai yang disertakan)
- Jalur relatif: diresolusikan relatif terhadap file yang menyertakan
- Format jalur: jalur penyertaan tidak boleh berisi byte null dan panjangnya harus benar-benar kurang dari 4096 karakter sebelum maupun sesudah resolusi
- Penulisan milik OpenClaw: ketika suatu penulisan hanya mengubah satu bagian tingkat teratas
yang didukung oleh penyertaan satu file seperti
plugins: { $include: "./plugins.json5" }, OpenClaw memperbarui file yang disertakan tersebut dan membiarkanopenclaw.jsontetap utuh - Penulisan tembus yang tidak didukung: penyertaan root, array penyertaan, dan penyertaan dengan penggantian sejajar akan gagal secara tertutup untuk penulisan milik OpenClaw, alih-alih meratakan konfigurasi
- Pembatasan: jalur
$includeharus diresolusikan di bawah direktori yang menyimpanopenclaw.json. Untuk berbagi struktur direktori antar mesin atau pengguna, aturOPENCLAW_INCLUDE_ROOTSke daftar jalur (:di POSIX,;di Windows) berisi direktori tambahan yang boleh dirujuk oleh penyertaan. Symlink diresolusikan dan diperiksa kembali, sehingga jalur yang secara leksikal berada dalam direktori konfigurasi tetapi target sebenarnya keluar dari setiap root yang diizinkan tetap ditolak. - Penanganan kesalahan: kesalahan yang jelas untuk file yang tidak ditemukan, kesalahan penguraian, penyertaan melingkar, format jalur tidak valid, dan panjang berlebihan
Muat ulang konfigurasi secara langsung
Gateway memantau~/.openclaw/openclaw.json dan menerapkan perubahan secara otomatis—sebagian besar pengaturan tidak memerlukan mulai ulang manual.
Pengeditan file langsung dianggap tidak tepercaya hingga berhasil divalidasi. Pemantau menunggu
aktivitas penulisan sementara/penggantian nama oleh editor mereda, membaca file akhir, dan menolak
pengeditan eksternal yang tidak valid tanpa menulis ulang openclaw.json. Penulisan konfigurasi
milik OpenClaw menggunakan gerbang skema yang sama sebelum menulis (lihat Validasi ketat
untuk aturan penimpaan/pemulihan yang berlaku pada setiap penulisan).
Jika Anda melihat config reload skipped (invalid config) atau proses mulai melaporkan Invalid config, periksa konfigurasi, jalankan openclaw config validate, lalu jalankan openclaw doctor --fix untuk memperbaikinya. Lihat Pemecahan masalah Gateway
untuk daftar periksa.
Mode muat ulang
Yang diterapkan langsung dibandingkan yang memerlukan mulai ulang
Sebagian besar bidang menerapkan perubahan secara langsung tanpa waktu henti; beberapa bagian yang diterapkan langsung hanya memulai ulang subsistem tersebut (saluran, cron, heartbeat, pemantau kesehatan), bukan seluruh Gateway. Dalam modehybrid, perubahan yang memerlukan mulai ulang Gateway ditangani secara otomatis.
gateway.reload dan gateway.remote merupakan pengecualian dalam gateway.* - mengubahnya tidak memicu mulai ulang. Setiap Plugin juga dapat mengesampingkan tabel ini: Plugin yang dimuat dapat mendeklarasikan prefiks konfigurasinya sendiri yang memicu mulai ulang (misalnya, Plugin Canvas yang disertakan memulai ulang Gateway untuk plugins.enabled, plugins.allow, dan plugins.deny, bukan hanya plugins.entries.canvas miliknya sendiri), sehingga perilaku sebenarnya bergantung pada Plugin yang aktif.Perencanaan pemuatan ulang
Saat Anda mengedit berkas sumber yang dirujuk melalui$include, OpenClaw merencanakan
pemuatan ulang berdasarkan tata letak yang dibuat di sumber, bukan tampilan dalam memori yang telah diratakan.
Hal ini menjaga keputusan pemuatan ulang langsung (penerapan langsung dibandingkan mulai ulang) tetap dapat diprediksi, bahkan saat
satu bagian tingkat atas berada dalam berkas penyertaan tersendiri seperti
plugins: { $include: "./plugins.json5" }. Perencanaan pemuatan ulang gagal secara tertutup jika
tata letak sumber ambigu.
RPC konfigurasi (pembaruan terprogram)
Untuk alat yang menulis konfigurasi melalui API gateway, utamakan alur berikut:config.schema.lookupuntuk memeriksa satu subpohon (simpul skema dangkal + ringkasan turunan)config.getuntuk mengambil snapshot saat ini besertahashconfig.patchuntuk pembaruan parsial (patch penggabungan JSON: objek digabungkan,nullmenghapus, array diganti saat dikonfirmasi secara eksplisit denganreplacePathsjika entri akan dihapus)config.applyhanya saat Anda bermaksud mengganti seluruh konfigurasiupdate.rununtuk pembaruan mandiri eksplisit beserta mulai ulang; sertakancontinuationMessagejika sesi setelah mulai ulang harus menjalankan satu giliran tindak lanjutupdate.statusuntuk memeriksa sentinel mulai ulang pembaruan terbaru dan memverifikasi versi yang berjalan setelah mulai ulang
config.schema.lookup sebagai tujuan pertama untuk dokumentasi
dan batasan tingkat bidang yang tepat. Gunakan Referensi konfigurasi
saat memerlukan peta konfigurasi yang lebih luas, nilai default, atau tautan ke referensi
subsistem khusus.
config.apply, config.patch, update.run)
dibatasi hingga 30 permintaan per 60 detik, per metode, per
deviceId+clientIp; lihat Pembatasan laju. Permintaan mulai ulang
digabungkan, lalu memberlakukan masa tunggu 30 detik di antara siklus mulai ulang.
update.status bersifat hanya-baca tetapi terbatas untuk admin karena sentinel mulai ulang dapat
menyertakan ringkasan langkah pembaruan dan bagian akhir keluaran perintah.config.apply maupun config.patch menerima raw, baseHash, sessionKey,
note, dan restartDelayMs. baseHash diperlukan untuk kedua metode setelah
berkas konfigurasi sudah tersedia (penulisan pertama tanpa konfigurasi yang sudah ada melewati pemeriksaan).
config.patch juga menerima replacePaths, yaitu array jalur konfigurasi yang penggantian
array-nya disengaja. Jika patch akan mengganti atau menghapus array yang sudah ada
dengan entri lebih sedikit, Gateway menolak penulisan kecuali jalur yang tepat tersebut tercantum
dalam replacePaths; array bertingkat di bawah entri array menggunakan [], seperti
agents.list[].skills. Hal ini mencegah snapshot config.get yang terpotong
menimpa array perutean atau daftar izin secara diam-diam. Gunakan config.apply saat Anda
bermaksud mengganti seluruh konfigurasi.
Variabel lingkungan
OpenClaw membaca variabel lingkungan dari proses induk serta:.envdari direktori kerja saat ini (jika ada)~/.openclaw/.env(fallback global)
Impor lingkungan shell (opsional)
Impor lingkungan shell (opsional)
OPENCLAW_LOAD_SHELL_ENV=1. timeoutMs default: 15000.Substitusi variabel lingkungan dalam nilai konfigurasi
Substitusi variabel lingkungan dalam nilai konfigurasi
${VAR_NAME}:- Hanya nama huruf besar yang dicocokkan:
[A-Z_][A-Z0-9_]* - Variabel yang tidak ada/kosong memunculkan kesalahan saat pemuatan
- Loloskan dengan
$${VAR}untuk keluaran literal - Berfungsi di dalam berkas
$include - Substitusi sebaris:
"${BASE}/v1"→"https://api.example.com/v1"
Referensi rahasia (lingkungan, berkas, eksekusi)
Referensi rahasia (lingkungan, berkas, eksekusi)
secrets.providers untuk env/file/exec) tersedia di Pengelolaan rahasia.
Jalur kredensial yang didukung tercantum di Permukaan Kredensial SecretRef.Referensi lengkap
Untuk referensi lengkap setiap bidang, lihat Referensi Konfigurasi.Terkait: Contoh Konfigurasi · Referensi Konfigurasi · Doctor