Konfigurasi
OpenClaw membaca konfigurasi opsional dari~/.openclaw/openclaw.json.
Jika file tidak ada, OpenClaw menggunakan default yang aman. Alasan umum untuk menambahkan konfigurasi:
- Menghubungkan channel dan mengontrol siapa yang dapat mengirim pesan ke bot
- Menetapkan model, alat, sandboxing, atau otomasi (cron, hook)
- Menyesuaikan sesi, media, jaringan, atau UI
Konfigurasi minimal
Mengedit konfigurasi
- Wizard interaktif
- CLI (satu baris)
- Control UI
- Edit langsung
Validasi ketat
Catatan alat skema:openclaw config schemamencetak keluarga JSON Schema yang sama yang digunakan oleh Control UI dan validasi konfigurasi.- Perlakukan keluaran skema tersebut sebagai kontrak kanonis yang dapat dibaca mesin untuk
openclaw.json; ringkasan ini dan referensi konfigurasi merangkumnya. - Nilai field
titledandescriptiondibawa ke keluaran skema untuk alat editor dan formulir. - Entri objek bersarang, wildcard (
*), dan item array ([]) mewarisi metadata dokumentasi yang sama ketika dokumentasi field yang cocok tersedia. - Cabang komposisi
anyOf/oneOf/allOfjuga mewarisi metadata dokumentasi yang sama, sehingga varian union/intersection tetap memiliki bantuan field yang sama. config.schema.lookupmengembalikan satu jalur konfigurasi yang dinormalisasi dengan node skema dangkal (title,description,type,enum,const, batas umum, dan field validasi serupa), metadata petunjuk UI yang cocok, dan ringkasan anak langsung untuk alat penelusuran mendalam.- Skema plugin/channel runtime digabungkan ketika gateway dapat memuat registri manifes saat ini.
pnpm config:docs:checkmendeteksi drift antara artefak baseline konfigurasi yang menghadap dokumen dan permukaan skema saat ini.
- Gateway tidak akan boot
- Hanya perintah diagnostik yang berfungsi (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Jalankan
openclaw doctoruntuk melihat masalah secara persis - Jalankan
openclaw doctor --fix(atau--yes) untuk menerapkan perbaikan
Tugas umum
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
Menyiapkan channel (WhatsApp, Telegram, Discord, dll.)
Setiap channel memiliki bagian konfigurasi sendiri di bawah
channels.<provider>. Lihat halaman channel khusus untuk langkah penyiapan:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Memilih dan mengonfigurasi model
Memilih dan mengonfigurasi model
Tetapkan model utama dan fallback opsional:
agents.defaults.modelsmendefinisikan katalog model dan bertindak sebagai allowlist untuk/model.- Ref model menggunakan format
provider/model(misalnyaanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxmengontrol penskalaan turun gambar transkrip/alat (default1200); nilai yang lebih rendah biasanya mengurangi penggunaan vision-token pada proses yang banyak tangkapan layar.- Lihat Models CLI untuk mengganti model di chat dan Model Failover untuk perilaku rotasi auth dan fallback.
- Untuk provider kustom/self-hosted, lihat Custom providers di referensi.
Mengontrol siapa yang dapat mengirim pesan ke bot
Mengontrol siapa yang dapat mengirim pesan ke bot
Akses DM dikontrol per channel melalui
dmPolicy:"pairing"(default): pengirim yang tidak dikenal mendapatkan kode pairing sekali pakai untuk disetujui"allowlist": hanya pengirim diallowFrom(atau penyimpanan allow berpasangan)"open": izinkan semua DM masuk (memerlukanallowFrom: ["*"])"disabled": abaikan semua DM
groupPolicy + groupAllowFrom atau allowlist khusus channel.Lihat referensi lengkap untuk detail per channel.Menyiapkan mention gating obrolan grup
Menyiapkan mention gating obrolan grup
Pesan grup secara default memerlukan mention. Konfigurasikan pola per agen:
- Metadata mention: @-mention native (WhatsApp ketuk-untuk-mention, Telegram @bot, dll.)
- Pola teks: pola regex aman di
mentionPatterns - Lihat referensi lengkap untuk override per channel dan mode self-chat.
Membatasi Skills per agen
Membatasi Skills per agen
Gunakan
agents.defaults.skills untuk baseline bersama, lalu override agen tertentu
dengan agents.list[].skills:- Hilangkan
agents.defaults.skillsagar Skills tidak dibatasi secara default. - Hilangkan
agents.list[].skillsuntuk mewarisi default. - Tetapkan
agents.list[].skills: []untuk tanpa Skills. - Lihat Skills, Konfigurasi Skills, dan Referensi Konfigurasi.
Menyesuaikan pemantauan kesehatan channel gateway
Menyesuaikan pemantauan kesehatan channel gateway
Kendalikan seberapa agresif gateway me-restart channel yang tampak basi:
- Tetapkan
gateway.channelHealthCheckMinutes: 0untuk menonaktifkan restart health-monitor secara global. channelStaleEventThresholdMinutesharus lebih besar dari atau sama dengan interval pemeriksaan.- Gunakan
channels.<provider>.healthMonitor.enabledatauchannels.<provider>.accounts.<id>.healthMonitor.enableduntuk menonaktifkan restart otomatis bagi satu channel atau akun tanpa menonaktifkan monitor global. - Lihat Health Checks untuk debugging operasional dan referensi lengkap untuk semua field.
Mengonfigurasi sesi dan reset
Mengonfigurasi sesi dan reset
Sesi mengontrol kesinambungan dan isolasi percakapan:
dmScope:main(bersama) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: default global untuk perutean sesi yang terikat thread (Discord mendukung/focus,/unfocus,/agents,/session idle, dan/session max-age).- Lihat Manajemen Sesi untuk cakupan, tautan identitas, dan kebijakan pengiriman.
- Lihat referensi lengkap untuk semua field.
Mengaktifkan sandboxing
Mengaktifkan sandboxing
Jalankan sesi agen dalam container Docker yang terisolasi:Bangun image terlebih dahulu:
scripts/sandbox-setup.shLihat Sandboxing untuk panduan lengkap dan referensi lengkap untuk semua opsi.Mengaktifkan push berbasis relay untuk build iOS resmi
Mengaktifkan push berbasis relay untuk build iOS resmi
Push berbasis relay dikonfigurasi di Padanan CLI:Yang dilakukan ini:
openclaw.json.Tetapkan ini di konfigurasi gateway:- Memungkinkan gateway mengirim
push.test, dorongan bangun, dan bangun reconnect melalui relay eksternal. - Menggunakan grant pengiriman yang dicakup registrasi dan diteruskan oleh aplikasi iOS yang dipasangkan. Gateway tidak memerlukan token relay untuk seluruh deployment.
- Mengikat setiap registrasi berbasis relay ke identitas gateway yang dipasangkan dengan aplikasi iOS, sehingga gateway lain tidak dapat menggunakan ulang registrasi yang tersimpan.
- Menjaga build iOS lokal/manual tetap menggunakan APNs langsung. Pengiriman berbasis relay hanya berlaku untuk build resmi terdistribusi yang mendaftar melalui relay.
- Harus cocok dengan URL dasar relay yang ditanamkan ke dalam build iOS resmi/TestFlight, sehingga lalu lintas registrasi dan pengiriman mencapai deployment relay yang sama.
- Instal build iOS resmi/TestFlight yang dikompilasi dengan URL dasar relay yang sama.
- Konfigurasikan
gateway.push.apns.relay.baseUrlpada gateway. - Pasangkan aplikasi iOS ke gateway dan biarkan sesi node serta operator sama-sama terhubung.
- Aplikasi iOS mengambil identitas gateway, mendaftar ke relay menggunakan App Attest plus receipt aplikasi, lalu memublikasikan payload
push.apns.registerberbasis relay ke gateway yang dipasangkan. - Gateway menyimpan handle relay dan grant pengiriman, lalu menggunakannya untuk
push.test, dorongan bangun, dan bangun reconnect.
- Jika Anda memindahkan aplikasi iOS ke gateway yang berbeda, sambungkan ulang aplikasi agar dapat memublikasikan registrasi relay baru yang terikat ke gateway tersebut.
- Jika Anda merilis build iOS baru yang mengarah ke deployment relay yang berbeda, aplikasi menyegarkan registrasi relay cache-nya alih-alih menggunakan ulang origin relay lama.
OPENCLAW_APNS_RELAY_BASE_URLdanOPENCLAW_APNS_RELAY_TIMEOUT_MStetap berfungsi sebagai override env sementara.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truetetap menjadi jalan keluar pengembangan khusus loopback; jangan simpan URL relay HTTP di konfigurasi.
Menyiapkan heartbeat (check-in berkala)
Menyiapkan heartbeat (check-in berkala)
every: string durasi (30m,2h). Tetapkan0muntuk menonaktifkan.target:last|none|<channel-id>(misalnyadiscord,matrix,telegram, atauwhatsapp)directPolicy:allow(default) ataublockuntuk target heartbeat bergaya DM- Lihat Heartbeat untuk panduan lengkap.
Mengonfigurasi pekerjaan cron
Mengonfigurasi pekerjaan cron
sessionRetention: pangkas sesi run terisolasi yang selesai darisessions.json(default24h; tetapkanfalseuntuk menonaktifkan).runLog: pangkascron/runs/<jobId>.jsonlberdasarkan ukuran dan jumlah baris yang dipertahankan.- Lihat Pekerjaan cron untuk ikhtisar fitur dan contoh CLI.
Menyiapkan webhook (hook)
Menyiapkan webhook (hook)
Aktifkan endpoint webhook HTTP pada Gateway:Catatan keamanan:
- Perlakukan semua konten payload hook/webhook sebagai input yang tidak tepercaya.
- Gunakan
hooks.tokenkhusus; jangan gunakan ulang token Gateway bersama. - Autentikasi hook hanya melalui header (
Authorization: Bearer ...ataux-openclaw-token); token query-string ditolak. hooks.pathtidak boleh berupa/; pertahankan ingress webhook pada subjalur khusus seperti/hooks.- Biarkan flag bypass konten tidak aman dinonaktifkan (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) kecuali saat melakukan debugging yang sangat terbatas. - Jika Anda mengaktifkan
hooks.allowRequestSessionKey, tetapkan jugahooks.allowedSessionKeyPrefixesuntuk membatasi kunci sesi yang dipilih pemanggil. - Untuk agen yang didorong hook, utamakan tier model modern yang kuat dan kebijakan alat yang ketat (misalnya hanya pesan ditambah sandboxing jika memungkinkan).
Mengonfigurasi perutean multi-agen
Mengonfigurasi perutean multi-agen
Jalankan beberapa agen terisolasi dengan workspace dan sesi terpisah:Lihat Multi-Agent dan referensi lengkap untuk aturan binding dan profil akses per agen.
Membagi konfigurasi ke beberapa file ($include)
Membagi konfigurasi ke beberapa file ($include)
Gunakan
$include untuk mengatur konfigurasi yang besar:- Satu file: menggantikan objek yang memuatnya
- Array file: di-deep-merge sesuai urutan (yang belakangan menang)
- Kunci saudara: digabungkan setelah include (menimpa nilai yang disertakan)
- Include bersarang: didukung hingga 10 level kedalaman
- Path relatif: diresolusikan relatif terhadap file yang menyertakan
- Penanganan kesalahan: kesalahan yang jelas untuk file hilang, kesalahan parse, dan include melingkar
Hot reload konfigurasi
Gateway memantau~/.openclaw/openclaw.json dan menerapkan perubahan secara otomatis — tidak perlu restart manual untuk sebagian besar pengaturan.
Mode reload
| Mode | Perilaku |
|---|---|
hybrid (default) | Menerapkan perubahan aman secara hot seketika. Secara otomatis me-restart untuk perubahan kritis. |
hot | Hanya menerapkan perubahan aman secara hot. Mencatat peringatan saat restart diperlukan — Anda yang menanganinya. |
restart | Me-restart Gateway pada setiap perubahan konfigurasi, aman atau tidak. |
off | Menonaktifkan pemantauan file. Perubahan berlaku pada restart manual berikutnya. |
Yang diterapkan secara hot vs yang memerlukan restart
Sebagian besar field diterapkan secara hot tanpa downtime. Dalam modehybrid, perubahan yang memerlukan restart ditangani secara otomatis.
| Category | Fields | Restart needed? |
|---|---|---|
| Channels | channels.*, web (WhatsApp) — semua channel bawaan dan ekstensi | Tidak |
| Agent & models | agent, agents, models, routing | Tidak |
| Automation | hooks, cron, agent.heartbeat | Tidak |
| Sessions & messages | session, messages | Tidak |
| Tools & media | tools, browser, skills, audio, talk | Tidak |
| UI & misc | ui, logging, identity, bindings | Tidak |
| Gateway server | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Ya |
| Infrastructure | discovery, canvasHost, plugins | Ya |
gateway.reload dan gateway.remote adalah pengecualian — mengubahnya tidak memicu restart.RPC konfigurasi (pembaruan terprogram)
RPC penulisan control-plane (
config.apply, config.patch, update.run) dibatasi hingga 3 permintaan per 60 detik per deviceId+clientIp. Saat dibatasi, RPC mengembalikan UNAVAILABLE dengan retryAfterMs.config.schema.lookup: periksa satu subtree konfigurasi yang dibatasi jalur dengan node skema dangkal, metadata petunjuk yang cocok, dan ringkasan anak langsungconfig.get: ambil snapshot + hash saat iniconfig.patch: jalur pembaruan parsial yang disukaiconfig.apply: hanya untuk penggantian konfigurasi penuhupdate.run: self-update + restart eksplisit
config.schema.lookup
lalu config.patch.
config.apply (penggantian penuh)
config.apply (penggantian penuh)
Memvalidasi + menulis konfigurasi penuh dan me-restart Gateway dalam satu langkah.Parameter:
raw(string) — payload JSON5 untuk seluruh konfigurasibaseHash(opsional) — hash konfigurasi dariconfig.get(wajib saat konfigurasi ada)sessionKey(opsional) — kunci sesi untuk ping wake-up pasca-restartnote(opsional) — catatan untuk sentinel restartrestartDelayMs(opsional) — jeda sebelum restart (default 2000)
config.patch (pembaruan parsial)
config.patch (pembaruan parsial)
Menggabungkan pembaruan parsial ke dalam konfigurasi yang ada (semantik JSON merge patch):
- Objek digabungkan secara rekursif
nullmenghapus kunci- Array menggantikan
raw(string) — JSON5 hanya dengan kunci yang akan diubahbaseHash(wajib) — hash konfigurasi dariconfig.getsessionKey,note,restartDelayMs— sama seperticonfig.apply
config.apply: restart tertunda digabungkan ditambah cooldown 30 detik di antara siklus restart.Variabel lingkungan
OpenClaw membaca variabel env dari proses induk serta:.envdari direktori kerja saat ini (jika ada)~/.openclaw/.env(fallback global)
Impor env shell (opsional)
Impor env shell (opsional)
Jika diaktifkan dan kunci yang diharapkan belum ditetapkan, OpenClaw menjalankan shell login Anda dan hanya mengimpor kunci yang hilang:Padanan variabel env:
OPENCLAW_LOAD_SHELL_ENV=1Substitusi variabel env dalam nilai konfigurasi
Substitusi variabel env dalam nilai konfigurasi
Referensikan variabel env dalam nilai string konfigurasi apa pun dengan Aturan:
${VAR_NAME}:- Hanya nama huruf besar yang cocok:
[A-Z_][A-Z0-9_]* - Variabel yang hilang/kosong memunculkan error saat waktu muat
- Escape dengan
$${VAR}untuk keluaran literal - Berfungsi di dalam file
$include - Substitusi inline:
"${BASE}/v1"→"https://api.example.com/v1"
Secret ref (env, file, exec)
Secret ref (env, file, exec)
Untuk field yang mendukung objek SecretRef, Anda dapat menggunakan:Detail SecretRef (termasuk
secrets.providers untuk env/file/exec) ada di Manajemen Secret.
Path kredensial yang didukung tercantum di Permukaan Kredensial SecretRef.Referensi lengkap
Untuk referensi lengkap per field, lihat Referensi Konfigurasi.Terkait: Contoh Konfigurasi · Referensi Konfigurasi · Doctor