Referensi Konfigurasi
Referensi konfigurasi inti untuk~/.openclaw/openclaw.json. Untuk ringkasan berbasis tugas, lihat Konfigurasi.
Halaman ini mencakup permukaan konfigurasi utama OpenClaw dan menautkan keluar ketika sebuah subsistem memiliki referensi yang lebih mendalam. Halaman ini tidak mencoba menyisipkan setiap katalog perintah milik channel/plugin atau setiap knob memori/QMD mendalam dalam satu halaman.
Sumber kebenaran kode:
openclaw config schemamencetak JSON Schema aktif yang digunakan untuk validasi dan Control UI, dengan metadata bundled/plugin/channel digabungkan bila tersediaconfig.schema.lookupmengembalikan satu node skema yang dicakup jalur untuk alat penelusuran mendalampnpm config:docs:check/pnpm config:docs:genmemvalidasi hash baseline dokumen konfigurasi terhadap permukaan skema saat ini
- Referensi konfigurasi memori untuk
agents.defaults.memorySearch.*,memory.qmd.*,memory.citations, dan konfigurasi dreaming di bawahplugins.entries.memory-core.config.dreaming - Slash Commands untuk katalog perintah bawaan + bundled saat ini
- halaman channel/plugin pemilik untuk permukaan perintah khusus channel
Channels
Setiap channel dimulai secara otomatis saat bagian konfigurasinya ada (kecualienabled: false).
Akses DM dan grup
Semua channel mendukung kebijakan DM dan kebijakan grup:| Kebijakan DM | Perilaku |
|---|---|
pairing (default) | Pengirim yang tidak dikenal mendapat kode pairing satu kali; pemilik harus menyetujui |
allowlist | Hanya pengirim di allowFrom (atau penyimpanan izin hasil pair) |
open | Izinkan semua DM masuk (memerlukan allowFrom: ["*"]) |
disabled | Abaikan semua DM masuk |
| Kebijakan grup | Perilaku |
|---|---|
allowlist (default) | Hanya grup yang cocok dengan allowlist yang dikonfigurasi |
open | Lewati allowlist grup (pembatasan mention tetap berlaku) |
disabled | Blokir semua pesan grup/room |
channels.defaults.groupPolicy menetapkan default ketika groupPolicy milik provider tidak diatur.
Kode pairing kedaluwarsa setelah 1 jam. Permintaan pairing DM yang tertunda dibatasi hingga 3 per channel.
Jika blok provider tidak ada sama sekali (channels.<provider> tidak ada), kebijakan grup runtime akan fallback ke allowlist (fail-closed) dengan peringatan saat startup.Override model channel
Gunakanchannels.modelByChannel untuk menetapkan ID channel tertentu ke sebuah model. Nilai menerima provider/model atau alias model yang sudah dikonfigurasi. Pemetaan channel diterapkan saat sebuah sesi belum memiliki override model (misalnya, diatur melalui /model).
Default channel dan heartbeat
Gunakanchannels.defaults untuk perilaku kebijakan grup dan heartbeat bersama di seluruh provider:
channels.defaults.groupPolicy: kebijakan grup fallback saatgroupPolicytingkat provider tidak diatur.channels.defaults.contextVisibility: mode visibilitas konteks tambahan default untuk semua channel. Nilai:all(default, sertakan semua konteks kutipan/thread/riwayat),allowlist(hanya sertakan konteks dari pengirim yang diizinkan),allowlist_quote(sama seperti allowlist tetapi pertahankan konteks kutipan/balasan eksplisit). Override per channel:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: sertakan status channel yang sehat dalam output heartbeat.channels.defaults.heartbeat.showAlerts: sertakan status menurun/error dalam output heartbeat.channels.defaults.heartbeat.useIndicator: tampilkan output heartbeat bergaya indikator yang ringkas.
WhatsApp multi-akun
WhatsApp multi-akun
- Perintah keluar secara default menggunakan akun
defaultjika ada; jika tidak, ID akun pertama yang dikonfigurasi (diurutkan). channels.whatsapp.defaultAccountopsional menggantikan pemilihan akun default fallback itu jika cocok dengan ID akun yang dikonfigurasi.- Direktori auth Baileys akun tunggal lama dimigrasikan oleh
openclaw doctorkewhatsapp/default. - Override per akun:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token bot:
channels.telegram.botTokenatauchannels.telegram.tokenFile(hanya file biasa; symlink ditolak), denganTELEGRAM_BOT_TOKENsebagai fallback untuk akun default. channels.telegram.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.- Dalam penyiapan multi-akun (2+ ID akun), tetapkan default eksplisit (
channels.telegram.defaultAccountatauchannels.telegram.accounts.default) untuk menghindari perutean fallback;openclaw doctormemberi peringatan saat ini tidak ada atau tidak valid. configWrites: falsememblokir penulisan konfigurasi yang dipicu Telegram (migrasi ID supergroup,/config set|unset).- Entri
bindings[]tingkat atas dengantype: "acp"mengonfigurasi binding ACP persisten untuk topik forum (gunakanchatId:topic:topicIdkanonis dimatch.peer.id). Semantik bidang dibagikan di ACP Agents. - Pratinjau stream Telegram menggunakan
sendMessage+editMessageText(berfungsi di chat langsung dan grup). - Kebijakan retry: lihat Kebijakan retry.
Discord
- Token:
channels.discord.token, denganDISCORD_BOT_TOKENsebagai fallback untuk akun default. - Panggilan keluar langsung yang memberikan
tokenDiscord eksplisit menggunakan token tersebut untuk panggilan; pengaturan retry/kebijakan akun tetap berasal dari akun yang dipilih dalam snapshot runtime aktif. channels.discord.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.- Gunakan
user:<id>(DM) atauchannel:<id>(channel guild) untuk target pengiriman; ID numerik tanpa awalan ditolak. - Slug guild menggunakan huruf kecil dengan spasi diganti menjadi
-; kunci channel menggunakan nama yang sudah di-slug (tanpa#). Lebih disarankan menggunakan ID guild. - Pesan yang ditulis bot diabaikan secara default.
allowBots: truemengaktifkannya; gunakanallowBots: "mentions"untuk hanya menerima pesan bot yang menyebut bot (pesan sendiri tetap difilter). channels.discord.guilds.<id>.ignoreOtherMentions(dan override channel) menghapus pesan yang menyebut pengguna atau role lain tetapi tidak menyebut bot (tidak termasuk @everyone/@here).maxLinesPerMessage(default 17) membagi pesan yang tinggi meskipun di bawah 2000 karakter.channels.discord.threadBindingsmengontrol perutean terikat thread Discord:enabled: override Discord untuk fitur sesi terikat thread (/focus,/unfocus,/agents,/session idle,/session max-age, serta pengiriman/perutean terikat)idleHours: override Discord untuk auto-unfocus karena tidak aktif dalam jam (0menonaktifkan)maxAgeHours: override Discord untuk usia maksimum keras dalam jam (0menonaktifkan)spawnSubagentSessions: sakelar opt-in untuk pembuatan/pengikatan thread otomatissessions_spawn({ thread: true })
- Entri
bindings[]tingkat atas dengantype: "acp"mengonfigurasi binding ACP persisten untuk channel dan thread (gunakan ID channel/thread dimatch.peer.id). Semantik bidang dibagikan di ACP Agents. channels.discord.ui.components.accentColormenetapkan warna aksen untuk kontainer komponen Discord v2.channels.discord.voicemengaktifkan percakapan channel suara Discord dan override auto-join + TTS opsional.channels.discord.voice.daveEncryptiondanchannels.discord.voice.decryptionFailureTolerancediteruskan ke opsi DAVE@discordjs/voice(truedan24secara default).- OpenClaw juga mencoba pemulihan penerimaan suara dengan keluar/bergabung ulang ke sesi suara setelah kegagalan dekripsi berulang.
channels.discord.streamingadalah kunci mode stream kanonis. Nilai booleanstreamModedanstreaminglama dimigrasikan secara otomatis.channels.discord.autoPresencememetakan ketersediaan runtime ke presence bot (healthy => online, degraded => idle, exhausted => dnd) dan mengizinkan override teks status opsional.channels.discord.dangerouslyAllowNameMatchingmengaktifkan kembali pencocokan nama/tag yang dapat berubah (mode kompatibilitas break-glass).channels.discord.execApprovals: pengiriman persetujuan exec native Discord dan otorisasi pemberi persetujuan.enabled:true,false, atau"auto"(default). Dalam mode auto, persetujuan exec aktif saat pemberi persetujuan dapat di-resolve dariapproversataucommands.ownerAllowFrom.approvers: ID pengguna Discord yang diizinkan untuk menyetujui permintaan exec. Fallback kecommands.ownerAllowFromsaat dihilangkan.agentFilter: allowlist ID agen opsional. Hilangkan untuk meneruskan persetujuan bagi semua agen.sessionFilter: pola kunci sesi opsional (substring atau regex).target: tempat mengirim prompt persetujuan."dm"(default) mengirim ke DM pemberi persetujuan,"channel"mengirim ke channel asal,"both"mengirim ke keduanya. Saat target mencakup"channel", tombol hanya dapat digunakan oleh pemberi persetujuan yang berhasil di-resolve.cleanupAfterResolve: saattrue, menghapus DM persetujuan setelah persetujuan, penolakan, atau timeout.
off (tidak ada), own (pesan bot, default), all (semua pesan), allowlist (dari guilds.<id>.users pada semua pesan).
Google Chat
- JSON akun layanan: inline (
serviceAccount) atau berbasis file (serviceAccountFile). - SecretRef akun layanan juga didukung (
serviceAccountRef). - Fallback env:
GOOGLE_CHAT_SERVICE_ACCOUNTatauGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Gunakan
spaces/<spaceId>atauusers/<userId>untuk target pengiriman. channels.googlechat.dangerouslyAllowNameMatchingmengaktifkan kembali pencocokan principal email yang dapat berubah (mode kompatibilitas break-glass).
Slack
- Mode socket memerlukan
botTokendanappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENuntuk fallback env akun default). - Mode HTTP memerlukan
botTokenditambahsigningSecret(di root atau per akun). botToken,appToken,signingSecret, danuserTokenmenerima string plaintext atau objek SecretRef.- Snapshot akun Slack mengekspos bidang sumber/status per kredensial seperti
botTokenSource,botTokenStatus,appTokenStatus, dan, dalam mode HTTP,signingSecretStatus.configured_unavailableberarti akun dikonfigurasi melalui SecretRef tetapi jalur perintah/runtime saat ini tidak dapat me-resolve nilai secret. configWrites: falsememblokir penulisan konfigurasi yang dipicu Slack.channels.slack.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.channels.slack.streaming.modeadalah kunci mode stream Slack kanonis.channels.slack.streaming.nativeTransportmengontrol transport streaming native Slack. Nilai lamastreamMode, booleanstreaming, dannativeStreamingdimigrasikan secara otomatis.- Gunakan
user:<id>(DM) atauchannel:<id>untuk target pengiriman.
off, own (default), all, allowlist (dari reactionAllowlist).
Isolasi sesi thread: thread.historyScope bersifat per-thread (default) atau dibagikan di seluruh channel. thread.inheritParent menyalin transkrip channel induk ke thread baru.
- Streaming native Slack ditambah status thread bergaya asisten Slack “is typing…” memerlukan target thread balasan. DM tingkat atas tetap off-thread secara default, sehingga menggunakan
typingReactionatau pengiriman normal sebagai ganti pratinjau bergaya thread. typingReactionmenambahkan reaksi sementara ke pesan Slack masuk saat balasan sedang berjalan, lalu menghapusnya saat selesai. Gunakan shortcode emoji Slack seperti"hourglass_flowing_sand".channels.slack.execApprovals: pengiriman persetujuan exec native Slack dan otorisasi pemberi persetujuan. Skema sama seperti Discord:enabled(true/false/"auto"),approvers(ID pengguna Slack),agentFilter,sessionFilter, dantarget("dm","channel", atau"both").
| Grup aksi | Default | Catatan |
|---|---|---|
| reactions | enabled | React + daftar reaksi |
| messages | enabled | Baca/kirim/edit/hapus |
| pins | enabled | Sematkan/lepas/list |
| memberInfo | enabled | Info anggota |
| emojiList | enabled | Daftar emoji kustom |
Mattermost
Mattermost dikirim sebagai plugin:openclaw plugins install @openclaw/mattermost.
oncall (merespons pada @-mention, default), onmessage (setiap pesan), onchar (pesan yang dimulai dengan awalan pemicu).
Saat perintah native Mattermost diaktifkan:
commands.callbackPathharus berupa path (misalnya/api/channels/mattermost/command), bukan URL penuh.commands.callbackUrlharus mengarah ke endpoint gateway OpenClaw dan dapat dijangkau dari server Mattermost.- Callback slash native diautentikasi dengan token per perintah yang dikembalikan oleh Mattermost selama pendaftaran slash command. Jika pendaftaran gagal atau tidak ada perintah yang diaktifkan, OpenClaw menolak callback dengan
Unauthorized: invalid command token. - Untuk host callback private/tailnet/internal, Mattermost mungkin memerlukan
ServiceSettings.AllowedUntrustedInternalConnectionsuntuk mencakup host/domain callback. Gunakan nilai host/domain, bukan URL penuh. channels.mattermost.configWrites: izinkan atau tolak penulisan konfigurasi yang dipicu Mattermost.channels.mattermost.requireMention: mewajibkan@mentionsebelum membalas di channel.channels.mattermost.groups.<channelId>.requireMention: override pembatasan mention per channel ("*"untuk default).channels.mattermost.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.
Signal
off, own (default), all, allowlist (dari reactionAllowlist).
channels.signal.account: sematkan startup channel ke identitas akun Signal tertentu.channels.signal.configWrites: izinkan atau tolak penulisan konfigurasi yang dipicu Signal.channels.signal.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.
BlueBubbles
BlueBubbles adalah jalur iMessage yang direkomendasikan (didukung plugin, dikonfigurasi di bawahchannels.bluebubbles).
- Jalur kunci inti yang dicakup di sini:
channels.bluebubbles,channels.bluebubbles.dmPolicy. channels.bluebubbles.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.- Entri
bindings[]tingkat atas dengantype: "acp"dapat mengikat percakapan BlueBubbles ke sesi ACP persisten. Gunakan handle BlueBubbles atau string target (chat_id:*,chat_guid:*,chat_identifier:*) dimatch.peer.id. Semantik bidang bersama: ACP Agents. - Konfigurasi channel BlueBubbles lengkap didokumentasikan di BlueBubbles.
iMessage
OpenClaw menjalankanimsg rpc (JSON-RPC melalui stdio). Tidak memerlukan daemon atau port.
-
channels.imessage.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi. - Memerlukan Full Disk Access ke DB Messages.
-
Lebih disarankan menggunakan target
chat_id:<id>. Gunakanimsg chats --limit 20untuk mencantumkan chat. -
cliPathdapat mengarah ke wrapper SSH; aturremoteHost(hostatauuser@host) untuk pengambilan lampiran SCP. -
attachmentRootsdanremoteAttachmentRootsmembatasi path lampiran masuk (default:/Users/*/Library/Messages/Attachments). -
SCP menggunakan pemeriksaan host-key ketat, jadi pastikan host key relay sudah ada di
~/.ssh/known_hosts. -
channels.imessage.configWrites: izinkan atau tolak penulisan konfigurasi yang dipicu iMessage. -
Entri
bindings[]tingkat atas dengantype: "acp"dapat mengikat percakapan iMessage ke sesi ACP persisten. Gunakan handle yang dinormalisasi atau target chat eksplisit (chat_id:*,chat_guid:*,chat_identifier:*) dimatch.peer.id. Semantik bidang bersama: ACP Agents.
Contoh wrapper SSH iMessage
Contoh wrapper SSH iMessage
Matrix
Matrix didukung extension dan dikonfigurasi di bawahchannels.matrix.
- Autentikasi token menggunakan
accessToken; autentikasi kata sandi menggunakanuserId+password. channels.matrix.proxymerutekan lalu lintas HTTP Matrix melalui proxy HTTP(S) eksplisit. Akun bernama dapat menggantinya denganchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkmengizinkan homeserver private/internal.proxydan opt-in jaringan ini adalah kontrol yang independen.channels.matrix.defaultAccountmemilih akun pilihan dalam penyiapan multi-akun.channels.matrix.autoJoindefault-nyaoff, sehingga room undangan dan undangan bergaya DM baru diabaikan sampai Anda menetapkanautoJoin: "allowlist"denganautoJoinAllowlistatauautoJoin: "always".channels.matrix.execApprovals: pengiriman persetujuan exec native Matrix dan otorisasi pemberi persetujuan.enabled:true,false, atau"auto"(default). Dalam mode auto, persetujuan exec aktif saat pemberi persetujuan dapat di-resolve dariapproversataucommands.ownerAllowFrom.approvers: ID pengguna Matrix (mis.@owner:example.org) yang diizinkan untuk menyetujui permintaan exec.agentFilter: allowlist ID agen opsional. Hilangkan untuk meneruskan persetujuan bagi semua agen.sessionFilter: pola kunci sesi opsional (substring atau regex).target: tempat mengirim prompt persetujuan."dm"(default),"channel"(room asal), atau"both".- Override per akun:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopemengontrol cara DM Matrix dikelompokkan ke dalam sesi:per-user(default) berbagi berdasarkan peer yang dirutekan, sedangkanper-roommengisolasi setiap room DM.- Probe status Matrix dan lookup direktori langsung menggunakan kebijakan proxy yang sama seperti lalu lintas runtime.
- Konfigurasi Matrix lengkap, aturan penargetan, dan contoh penyiapan didokumentasikan di Matrix.
Microsoft Teams
Microsoft Teams didukung extension dan dikonfigurasi di bawahchannels.msteams.
- Jalur kunci inti yang dicakup di sini:
channels.msteams,channels.msteams.configWrites. - Konfigurasi Teams lengkap (kredensial, webhook, kebijakan DM/grup, override per tim/per channel) didokumentasikan di Microsoft Teams.
IRC
IRC didukung extension dan dikonfigurasi di bawahchannels.irc.
- Jalur kunci inti yang dicakup di sini:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopsional menggantikan pemilihan akun default saat cocok dengan ID akun yang dikonfigurasi.- Konfigurasi channel IRC lengkap (host/port/TLS/channels/allowlists/pembatasan mention) didokumentasikan di IRC.
Multi-akun (semua channels)
Jalankan beberapa akun per channel (masing-masing denganaccountId sendiri):
defaultdigunakan saataccountIddihilangkan (CLI + perutean).- Token env hanya berlaku untuk akun default.
- Pengaturan channel dasar berlaku untuk semua akun kecuali dioverride per akun.
- Gunakan
bindings[].match.accountIduntuk merutekan setiap akun ke agen yang berbeda. - Jika Anda menambahkan akun non-default melalui
openclaw channels add(atau onboarding channel) saat masih menggunakan konfigurasi channel tingkat atas akun tunggal, OpenClaw terlebih dahulu mempromosikan nilai akun tunggal tingkat atas yang dicakup akun ke peta akun channel agar akun asli tetap berfungsi. Sebagian besar channel memindahkannya kechannels.<channel>.accounts.default; Matrix dapat mempertahankan target bernama/default yang sudah cocok. - Binding khusus channel yang sudah ada (tanpa
accountId) tetap cocok dengan akun default; binding yang dicakup akun tetap opsional. openclaw doctor --fixjuga memperbaiki bentuk campuran dengan memindahkan nilai akun tunggal tingkat atas yang dicakup akun ke akun hasil promosi yang dipilih untuk channel tersebut. Sebagian besar channel menggunakanaccounts.default; Matrix dapat mempertahankan target bernama/default yang sudah cocok.
Channel extension lainnya
Banyak channel extension dikonfigurasi sebagaichannels.<id> dan didokumentasikan di halaman channel khusus masing-masing (misalnya Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat, dan Twitch).
Lihat indeks channel lengkap: Channels.
Pembatasan mention chat grup
Pesan grup default-nya memerlukan mention (mention metadata atau pola regex aman). Berlaku untuk chat grup WhatsApp, Telegram, Discord, Google Chat, dan iMessage. Jenis mention:- Mention metadata: @-mention native platform. Diabaikan dalam mode chat ke diri sendiri WhatsApp.
- Pola teks: Pola regex aman di
agents.list[].groupChat.mentionPatterns. Pola tidak valid dan repetisi bertingkat yang tidak aman akan diabaikan. - Pembatasan mention hanya diberlakukan saat deteksi dimungkinkan (mention native atau setidaknya satu pola).
messages.groupChat.historyLimit menetapkan default global. Channel dapat mengoverride dengan channels.<channel>.historyLimit (atau per akun). Tetapkan 0 untuk menonaktifkan.
Batas riwayat DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Mode chat ke diri sendiri
Sertakan nomor Anda sendiri diallowFrom untuk mengaktifkan mode chat ke diri sendiri (mengabaikan @-mention native, hanya merespons pola teks):
Perintah (penanganan perintah chat)
Detail perintah
Detail perintah
- Blok ini mengonfigurasi permukaan perintah. Untuk katalog perintah bawaan + bundled saat ini, lihat Slash Commands.
- Halaman ini adalah referensi kunci konfigurasi, bukan katalog perintah lengkap. Perintah milik channel/plugin seperti QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phone, dan Talk/voicedidokumentasikan di halaman channel/plugin masing-masing serta Slash Commands. - Perintah teks harus berupa pesan mandiri dengan awalan
/. native: "auto"mengaktifkan perintah native untuk Discord/Telegram, dan membiarkan Slack nonaktif.nativeSkills: "auto"mengaktifkan perintah Skills native untuk Discord/Telegram, dan membiarkan Slack nonaktif.- Override per channel:
channels.discord.commands.native(bool atau"auto").falsemenghapus perintah yang sebelumnya sudah didaftarkan. - Override pendaftaran skill native per channel dengan
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsmenambahkan entri menu bot Telegram tambahan.bash: truemengaktifkan! <cmd>untuk shell host. Memerlukantools.elevated.enableddan pengirim ada ditools.elevated.allowFrom.<channel>.config: truemengaktifkan/config(membaca/menulisopenclaw.json). Untuk klien gatewaychat.send, penulisan persisten/config set|unsetjuga memerlukanoperator.admin;/config showyang hanya-baca tetap tersedia untuk klien operator biasa dengan cakupan tulis.mcp: truemengaktifkan/mcpuntuk konfigurasi server MCP yang dikelola OpenClaw di bawahmcp.servers.plugins: truemengaktifkan/pluginsuntuk penemuan, pemasangan, dan kontrol aktif/nonaktif plugin.channels.<provider>.configWritesmembatasi mutasi konfigurasi per channel (default: true).- Untuk channel multi-akun,
channels.<provider>.accounts.<id>.configWritesjuga membatasi penulisan yang menargetkan akun tersebut (misalnya/allowlist --config --account <id>atau/config set channels.<provider>.accounts.<id>...). restart: falsemenonaktifkan/restartdan aksi alat restart gateway. Default:true.ownerAllowFromadalah allowlist pemilik eksplisit untuk perintah/alat khusus pemilik. Ini terpisah dariallowFrom.ownerDisplay: "hash"melakukan hash pada ID pemilik di system prompt. AturownerDisplaySecretuntuk mengontrol hashing.allowFrombersifat per-provider. Saat diatur, ini menjadi satu-satunya sumber otorisasi (allowlist/pairing channel danuseAccessGroupsdiabaikan).useAccessGroups: falsememungkinkan perintah melewati kebijakan access-group saatallowFromtidak diatur.- Peta dokumen perintah:
Default agen
agents.defaults.workspace
Default: ~/.openclaw/workspace.
agents.defaults.repoRoot
Root repositori opsional yang ditampilkan di baris Runtime pada system prompt. Jika tidak diatur, OpenClaw mendeteksi secara otomatis dengan menelusuri ke atas dari workspace.
agents.defaults.skills
Allowlist skill default opsional untuk agen yang tidak menetapkan
agents.list[].skills.
- Hilangkan
agents.defaults.skillsuntuk Skills tak dibatasi secara default. - Hilangkan
agents.list[].skillsuntuk mewarisi default. - Tetapkan
agents.list[].skills: []untuk tanpa Skills. - Daftar
agents.list[].skillsyang tidak kosong adalah set akhir untuk agen tersebut; daftar itu tidak digabungkan dengan default.
agents.defaults.skipBootstrap
Menonaktifkan pembuatan otomatis file bootstrap workspace (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.contextInjection
Mengontrol kapan file bootstrap workspace disuntikkan ke system prompt. Default: "always".
"continuation-skip": giliran kelanjutan yang aman (setelah respons asisten selesai) melewati penyuntikan ulang bootstrap workspace, sehingga mengurangi ukuran prompt. Eksekusi heartbeat dan percobaan ulang pasca-pemadatan tetap membangun ulang konteks.
agents.defaults.bootstrapMaxChars
Jumlah karakter maksimum per file bootstrap workspace sebelum dipotong. Default: 20000.
agents.defaults.bootstrapTotalMaxChars
Jumlah total karakter maksimum yang disuntikkan di semua file bootstrap workspace. Default: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Mengontrol teks peringatan yang terlihat oleh agen saat konteks bootstrap dipotong.
Default: "once".
"off": jangan pernah menyuntikkan teks peringatan ke system prompt."once": suntikkan peringatan sekali per signature pemotongan unik (direkomendasikan)."always": suntikkan peringatan pada setiap eksekusi saat pemotongan ada.
agents.defaults.imageMaxDimensionPx
Ukuran piksel maksimum untuk sisi gambar terpanjang pada blok gambar transcript/tool sebelum panggilan provider.
Default: 1200.
Nilai yang lebih rendah biasanya mengurangi penggunaan vision-token dan ukuran payload permintaan untuk eksekusi yang banyak memakai screenshot.
Nilai yang lebih tinggi mempertahankan lebih banyak detail visual.
agents.defaults.userTimezone
Zona waktu untuk konteks system prompt (bukan stempel waktu pesan). Fallback ke zona waktu host.
agents.defaults.timeFormat
Format waktu di system prompt. Default: auto (preferensi OS).
agents.defaults.model
model: menerima string ("provider/model") atau objek ({ primary, fallbacks }).- Bentuk string hanya menetapkan model utama.
- Bentuk objek menetapkan model utama plus model failover berurutan.
imageModel: menerima string ("provider/model") atau objek ({ primary, fallbacks }).- Digunakan oleh jalur alat
imagesebagai konfigurasi model vision. - Juga digunakan sebagai perutean fallback ketika model yang dipilih/default tidak dapat menerima input gambar.
- Digunakan oleh jalur alat
imageGenerationModel: menerima string ("provider/model") atau objek ({ primary, fallbacks }).- Digunakan oleh kapabilitas pembuatan gambar bersama dan permukaan alat/plugin mendatang apa pun yang menghasilkan gambar.
- Nilai umum:
google/gemini-3.1-flash-image-previewuntuk pembuatan gambar Gemini native,fal/fal-ai/flux/devuntuk fal, atauopenai/gpt-image-1untuk OpenAI Images. - Jika Anda memilih provider/model secara langsung, konfigurasikan juga auth/kunci API provider yang sesuai (misalnya
GEMINI_API_KEYatauGOOGLE_API_KEYuntukgoogle/*,OPENAI_API_KEYuntukopenai/*,FAL_KEYuntukfal/*). - Jika dihilangkan,
image_generatemasih dapat menyimpulkan default provider berbasis auth. Alat ini mencoba provider default saat ini terlebih dahulu, lalu provider pembuatan gambar terdaftar lainnya menurut urutan provider-id.
musicGenerationModel: menerima string ("provider/model") atau objek ({ primary, fallbacks }).- Digunakan oleh kapabilitas pembuatan musik bersama dan alat bawaan
music_generate. - Nilai umum:
google/lyria-3-clip-preview,google/lyria-3-pro-preview, atauminimax/music-2.5+. - Jika dihilangkan,
music_generatemasih dapat menyimpulkan default provider berbasis auth. Alat ini mencoba provider default saat ini terlebih dahulu, lalu provider pembuatan musik terdaftar lainnya menurut urutan provider-id. - Jika Anda memilih provider/model secara langsung, konfigurasikan juga auth/kunci API provider yang sesuai.
- Digunakan oleh kapabilitas pembuatan musik bersama dan alat bawaan
videoGenerationModel: menerima string ("provider/model") atau objek ({ primary, fallbacks }).- Digunakan oleh kapabilitas pembuatan video bersama dan alat bawaan
video_generate. - Nilai umum:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flash, atauqwen/wan2.7-r2v. - Jika dihilangkan,
video_generatemasih dapat menyimpulkan default provider berbasis auth. Alat ini mencoba provider default saat ini terlebih dahulu, lalu provider pembuatan video terdaftar lainnya menurut urutan provider-id. - Jika Anda memilih provider/model secara langsung, konfigurasikan juga auth/kunci API provider yang sesuai.
- Provider pembuatan video Qwen bawaan mendukung hingga 1 video output, 1 gambar input, 4 video input, durasi 10 detik, dan opsi tingkat provider
size,aspectRatio,resolution,audio, danwatermark.
- Digunakan oleh kapabilitas pembuatan video bersama dan alat bawaan
pdfModel: menerima string ("provider/model") atau objek ({ primary, fallbacks }).- Digunakan oleh alat
pdfuntuk perutean model. - Jika dihilangkan, alat PDF fallback ke
imageModel, lalu ke model sesi/default yang sudah di-resolve.
- Digunakan oleh alat
pdfMaxBytesMb: batas ukuran PDF default untuk alatpdfsaatmaxBytesMbtidak diberikan saat waktu pemanggilan.pdfMaxPages: jumlah halaman maksimum default yang dipertimbangkan oleh mode fallback ekstraksi dalam alatpdf.verboseDefault: tingkat verbose default untuk agen. Nilai:"off","on","full". Default:"off".elevatedDefault: tingkat output elevated default untuk agen. Nilai:"off","on","ask","full". Default:"on".model.primary: formatprovider/model(mis.openai/gpt-5.4). Jika Anda menghilangkan provider, OpenClaw mencoba alias terlebih dahulu, lalu kecocokan configured-provider unik untuk ID model yang persis sama, dan baru kemudian fallback ke provider default yang dikonfigurasi (perilaku kompatibilitas lama yang sudah deprecated, jadi lebih baik gunakanprovider/modeleksplisit). Jika provider tersebut tidak lagi mengekspos model default yang dikonfigurasi, OpenClaw fallback ke provider/model pertama yang dikonfigurasi alih-alih menampilkan default provider usang dari provider yang sudah dihapus.models: katalog model dan allowlist yang dikonfigurasi untuk/model. Setiap entri dapat menyertakanalias(shortcut) danparams(khusus provider, misalnyatemperature,maxTokens,cacheRetention,context1m).params: parameter provider default global yang diterapkan ke semua model. Tetapkan diagents.defaults.params(mis.{ cacheRetention: "long" }).- Urutan prioritas penggabungan
params(konfigurasi):agents.defaults.params(dasar global) dioverride olehagents.defaults.models["provider/model"].params(per-model), laluagents.list[].params(ID agen yang cocok) mengoverride per kunci. Lihat Prompt Caching untuk detail. embeddedHarness: kebijakan runtime agen embedded tingkat rendah default. Gunakanruntime: "auto"agar plugin harness terdaftar dapat mengklaim model yang didukung,runtime: "pi"untuk memaksa harness PI bawaan, atau ID harness terdaftar sepertiruntime: "codex". Tetapkanfallback: "none"untuk menonaktifkan fallback PI otomatis.- Penulis konfigurasi yang memutasi bidang ini (misalnya
/models set,/models set-image, dan perintah tambah/hapus fallback) menyimpan bentuk objek kanonis dan mempertahankan daftar fallback yang ada bila memungkinkan. maxConcurrent: jumlah maksimum eksekusi agen paralel lintas sesi (setiap sesi tetap diserialisasi). Default: 4.
agents.defaults.embeddedHarness
embeddedHarness mengontrol executor tingkat rendah mana yang menjalankan giliran agen embedded.
Sebagian besar deployment sebaiknya tetap menggunakan default { runtime: "auto", fallback: "pi" }.
Gunakan ini ketika plugin tepercaya menyediakan harness native, seperti harness app-server Codex bawaan.
runtime:"auto","pi", atau ID harness plugin terdaftar. Plugin Codex bawaan mendaftarkancodex.fallback:"pi"atau"none"."pi"mempertahankan harness PI bawaan sebagai fallback kompatibilitas."none"membuat pemilihan harness plugin yang hilang atau tidak didukung gagal alih-alih diam-diam menggunakan PI.- Override environment:
OPENCLAW_AGENT_RUNTIME=<id|auto|pi>mengoverrideruntime;OPENCLAW_AGENT_HARNESS_FALLBACK=nonemenonaktifkan fallback PI untuk proses tersebut. - Untuk deployment khusus Codex, tetapkan
model: "codex/gpt-5.4",embeddedHarness.runtime: "codex", danembeddedHarness.fallback: "none". - Ini hanya mengontrol harness chat embedded. Pembuatan media, vision, PDF, musik, video, dan TTS tetap menggunakan pengaturan provider/model masing-masing.
agents.defaults.models):
| Alias | Model |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off atau mendefinisikan sendiri agents.defaults.models["zai/<model>"].params.thinking.
Model Z.AI mengaktifkan tool_stream secara default untuk streaming panggilan alat. Tetapkan agents.defaults.models["zai/<model>"].params.tool_stream ke false untuk menonaktifkannya.
Model Anthropic Claude 4.6 secara default menggunakan thinking adaptive saat tidak ada tingkat thinking eksplisit yang diatur.
agents.defaults.cliBackends
Backend CLI opsional untuk eksekusi fallback hanya-teks (tanpa panggilan alat). Berguna sebagai cadangan saat provider API gagal.
- Backend CLI bersifat text-first; alat selalu dinonaktifkan.
- Sesi didukung saat
sessionArgdiatur. - Pass-through gambar didukung saat
imageArgmenerima path file.
agents.defaults.systemPromptOverride
Ganti seluruh system prompt yang dirakit OpenClaw dengan string tetap. Tetapkan di tingkat default (agents.defaults.systemPromptOverride) atau per agen (agents.list[].systemPromptOverride). Nilai per agen memiliki prioritas lebih tinggi; nilai kosong atau hanya whitespace diabaikan. Berguna untuk eksperimen prompt yang terkontrol.
agents.defaults.heartbeat
Eksekusi heartbeat berkala.
every: string durasi (ms/s/m/h). Default:30m(auth API-key) atau1h(auth OAuth). Tetapkan ke0muntuk menonaktifkan.includeSystemPromptSection: saat false, menghilangkan bagian Heartbeat dari system prompt dan melewati penyuntikanHEARTBEAT.mdke konteks bootstrap. Default:true.suppressToolErrorWarnings: saat true, menekan payload peringatan error alat selama eksekusi heartbeat.timeoutSeconds: waktu maksimum dalam detik yang diizinkan untuk satu giliran agen heartbeat sebelum dibatalkan. Biarkan tidak diatur untuk menggunakanagents.defaults.timeoutSeconds.directPolicy: kebijakan pengiriman langsung/DM.allow(default) mengizinkan pengiriman target langsung.blockmenekan pengiriman target langsung dan memunculkanreason=dm-blocked.lightContext: saat true, eksekusi heartbeat menggunakan konteks bootstrap ringan dan hanya mempertahankanHEARTBEAT.mddari file bootstrap workspace.isolatedSession: saat true, setiap heartbeat dijalankan dalam sesi baru tanpa riwayat percakapan sebelumnya. Pola isolasi yang sama seperti cronsessionTarget: "isolated". Mengurangi biaya token per heartbeat dari ~100K menjadi ~2-5K token.- Per agen: tetapkan
agents.list[].heartbeat. Saat agen mana pun mendefinisikanheartbeat, hanya agen tersebut yang menjalankan heartbeat. - Heartbeat menjalankan giliran agen penuh — interval yang lebih pendek membakar lebih banyak token.
agents.defaults.compaction
mode:defaultatausafeguard(peringkasan bertahap untuk riwayat panjang). Lihat Compaction.provider: id dari plugin provider compaction terdaftar. Saat diatur,summarize()milik provider dipanggil alih-alih peringkasan LLM bawaan. Fallback ke bawaan jika gagal. Menetapkan provider memaksamode: "safeguard". Lihat Compaction.timeoutSeconds: jumlah detik maksimum yang diizinkan untuk satu operasi compaction sebelum OpenClaw membatalkannya. Default:900.identifierPolicy:strict(default),off, ataucustom.strictmenambahkan panduan bawaan untuk mempertahankan identifier opak selama peringkasan compaction.identifierInstructions: teks kustom opsional untuk mempertahankan identifier yang digunakan saatidentifierPolicy=custom.postCompactionSections: nama bagian H2/H3AGENTS.mdopsional yang akan disuntikkan ulang setelah compaction. Default ke["Session Startup", "Red Lines"]; tetapkan[]untuk menonaktifkan penyuntikan ulang. Saat tidak diatur atau secara eksplisit diatur ke pasangan default tersebut, heading lamaEvery Session/Safetyjuga diterima sebagai fallback kompatibilitas lama.model: overrideprovider/model-idopsional hanya untuk peringkasan compaction. Gunakan ini saat sesi utama harus tetap memakai satu model tetapi ringkasan compaction harus berjalan pada model lain; saat tidak diatur, compaction menggunakan model utama sesi.notifyUser: saattrue, mengirim pemberitahuan singkat kepada pengguna saat compaction dimulai (misalnya, “Compacting context…”). Dinonaktifkan secara default agar compaction tetap senyap.memoryFlush: giliran agentic senyap sebelum auto-compaction untuk menyimpan memori yang tahan lama. Dilewati saat workspace hanya-baca.
agents.defaults.contextPruning
Memangkas hasil alat lama dari konteks dalam memori sebelum dikirim ke LLM. Tidak mengubah riwayat sesi di disk.
Perilaku mode cache-ttl
Perilaku mode cache-ttl
mode: "cache-ttl"mengaktifkan pass pemangkasan.ttlmengontrol seberapa sering pemangkasan dapat dijalankan lagi (setelah sentuhan cache terakhir).- Pemangkasan terlebih dahulu melakukan soft-trim pada hasil alat berukuran besar, lalu hard-clear pada hasil alat yang lebih lama bila diperlukan.
... di tengah.Hard-clear mengganti seluruh hasil alat dengan placeholder.Catatan:- Blok gambar tidak pernah dipangkas/dihapus.
- Rasio berbasis karakter (perkiraan), bukan hitungan token yang tepat.
- Jika ada kurang dari
keepLastAssistantspesan asisten, pemangkasan dilewati.
Streaming blok
- Channel non-Telegram memerlukan
*.blockStreaming: trueeksplisit untuk mengaktifkan balasan blok. - Override channel:
channels.<channel>.blockStreamingCoalesce(dan varian per akun). Signal/Slack/Discord/Google Chat defaultminChars: 1500. humanDelay: jeda acak antar balasan blok.natural= 800–2500md. Override per agen:agents.list[].humanDelay.
Indikator mengetik
- Default:
instantuntuk chat langsung/mention,messageuntuk chat grup tanpa mention. - Override per sesi:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Sandboxing opsional untuk agen embedded. Lihat Sandboxing untuk panduan lengkap.
Detail sandbox
Detail sandbox
Backend:Mode OpenShell:
docker: runtime Docker lokal (default)ssh: runtime jarak jauh umum berbasis SSHopenshell: runtime OpenShell
backend: "openshell" dipilih, pengaturan khusus runtime dipindahkan ke
plugins.entries.openshell.config.Konfigurasi backend SSH:target: target SSH dalam bentukuser@host[:port]command: perintah klien SSH (default:ssh)workspaceRoot: root remote absolut yang digunakan untuk workspace per cakupanidentityFile/certificateFile/knownHostsFile: file lokal yang sudah ada dan diteruskan ke OpenSSHidentityData/certificateData/knownHostsData: konten inline atau SecretRef yang diwujudkan OpenClaw menjadi file sementara saat runtimestrictHostKeyChecking/updateHostKeys: knob kebijakan host-key OpenSSH
identityDatamengungguliidentityFilecertificateDatamengunggulicertificateFileknownHostsDatamengungguliknownHostsFile- Nilai
*Databerbasis SecretRef di-resolve dari snapshot runtime secrets aktif sebelum sesi sandbox dimulai
- menanam workspace remote satu kali setelah create atau recreate
- lalu menjaga workspace SSH remote sebagai yang kanonis
- merutekan
exec, alat file, dan path media melalui SSH - tidak menyinkronkan perubahan remote kembali ke host secara otomatis
- tidak mendukung container browser sandbox
none: workspace sandbox per cakupan di bawah~/.openclaw/sandboxesro: workspace sandbox di/workspace, workspace agen dimount hanya-baca di/agentrw: workspace agen dimount baca/tulis di/workspace
session: container + workspace per sesiagent: satu container + workspace per agen (default)shared: container dan workspace bersama (tanpa isolasi lintas sesi)
mirror: tanam remote dari lokal sebelum exec, sinkronkan kembali setelah exec; workspace lokal tetap kanonisremote: tanam remote satu kali saat sandbox dibuat, lalu jaga workspace remote sebagai yang kanonis
remote, edit host-lokal yang dibuat di luar OpenClaw tidak otomatis disinkronkan ke sandbox setelah langkah penanaman.
Transport menggunakan SSH ke sandbox OpenShell, tetapi plugin memiliki lifecycle sandbox dan sinkronisasi mirror opsional.setupCommand dijalankan satu kali setelah pembuatan container (melalui sh -lc). Memerlukan network egress, root yang dapat ditulis, dan pengguna root.Container default-nya network: "none" — tetapkan ke "bridge" (atau jaringan bridge kustom) jika agen memerlukan akses keluar.
"host" diblokir. "container:<id>" diblokir secara default kecuali Anda secara eksplisit menetapkan
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (break-glass).Lampiran masuk ditempatkan ke media/inbound/* di workspace aktif.docker.binds me-mount direktori host tambahan; bind global dan per agen digabungkan.Browser sandbox (sandbox.browser.enabled): Chromium + CDP di dalam container. URL noVNC disuntikkan ke system prompt. Tidak memerlukan browser.enabled di openclaw.json.
Akses pengamat noVNC menggunakan autentikasi VNC secara default dan OpenClaw mengeluarkan URL token berumur pendek (alih-alih mengekspos kata sandi di URL bersama).allowHostControl: false(default) memblokir sesi sandbox agar tidak menargetkan browser host.networkdefault-nyaopenclaw-sandbox-browser(jaringan bridge khusus). Tetapkan kebridgehanya jika Anda secara eksplisit menginginkan konektivitas bridge global.cdpSourceRangesecara opsional membatasi ingress CDP di tepi container ke rentang CIDR (misalnya172.21.0.1/32).sandbox.browser.bindsme-mount direktori host tambahan hanya ke container browser sandbox. Saat diatur (termasuk[]), ini menggantikandocker.bindsuntuk container browser.- Default peluncuran didefinisikan di
scripts/sandbox-browser-entrypoint.shdan disetel untuk host container:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(diaktifkan secara default)--disable-3d-apis,--disable-software-rasterizer, dan--disable-gpudiaktifkan secara default dan dapat dinonaktifkan denganOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0jika penggunaan WebGL/3D memerlukannya.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0mengaktifkan kembali ekstensi jika alur kerja Anda bergantung padanya.--renderer-process-limit=2dapat diubah denganOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; tetapkan0untuk menggunakan batas proses default Chromium.- plus
--no-sandboxdan--disable-setuid-sandboxsaatnoSandboxdiaktifkan. - Default adalah baseline image container; gunakan image browser kustom dengan entrypoint kustom untuk mengubah default container.
sandbox.docker.binds hanya untuk Docker.
Bangun image:
agents.list (override per agen)
id: ID agen stabil (wajib).default: saat beberapa ditetapkan, yang pertama menang (peringatan dicatat). Jika tidak ada yang ditetapkan, entri daftar pertama menjadi default.model: bentuk string hanya mengoverrideprimary; bentuk objek{ primary, fallbacks }mengoverride keduanya ([]menonaktifkan fallback global). Pekerjaan cron yang hanya mengoverrideprimarytetap mewarisi fallback default kecuali Anda menetapkanfallbacks: [].params: params stream per agen yang digabungkan di atas entri model yang dipilih diagents.defaults.models. Gunakan ini untuk override khusus agen seperticacheRetention,temperature, ataumaxTokenstanpa menduplikasi seluruh katalog model.skills: allowlist skill per agen opsional. Jika dihilangkan, agen mewarisiagents.defaults.skillsbila diatur; daftar eksplisit menggantikan default alih-alih digabungkan, dan[]berarti tanpa skill.thinkingDefault: default tingkat thinking per agen opsional (off | minimal | low | medium | high | xhigh | adaptive). Mengoverrideagents.defaults.thinkingDefaultuntuk agen ini saat tidak ada override per pesan atau sesi.reasoningDefault: default visibilitas reasoning per agen opsional (on | off | stream). Berlaku saat tidak ada override reasoning per pesan atau sesi.fastModeDefault: default mode cepat per agen opsional (true | false). Berlaku saat tidak ada override mode cepat per pesan atau sesi.embeddedHarness: override kebijakan harness tingkat rendah per agen opsional. Gunakan{ runtime: "codex", fallback: "none" }untuk menjadikan satu agen khusus Codex sementara agen lain tetap menggunakan fallback PI default.runtime: deskriptor runtime per agen opsional. Gunakantype: "acp"dengan defaultruntime.acp(agent,backend,mode,cwd) saat agen harus default ke sesi harness ACP.identity.avatar: path relatif workspace, URLhttp(s), atau URIdata:.identitymenurunkan default:ackReactiondariemoji,mentionPatternsdariname/emoji.subagents.allowAgents: allowlist ID agen untuksessions_spawn(["*"]= apa pun; default: hanya agen yang sama).- Guard pewarisan sandbox: jika sesi peminta disandbox,
sessions_spawnmenolak target yang akan berjalan tanpa sandbox. subagents.requireAgentId: saat true, blokir panggilansessions_spawnyang menghilangkanagentId(memaksa pemilihan profil eksplisit; default: false).
Perutean multi-agen
Jalankan beberapa agen terisolasi di dalam satu Gateway. Lihat Multi-Agent.Bidang kecocokan binding
type(opsional):routeuntuk perutean normal (type yang hilang default ke route),acpuntuk binding percakapan ACP persisten.match.channel(wajib)match.accountId(opsional;*= akun apa pun; dihilangkan = akun default)match.peer(opsional;{ kind: direct|group|channel, id })match.guildId/match.teamId(opsional; khusus channel)acp(opsional; hanya untuk entritype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(persis, tanpa peer/guild/team)match.accountId: "*"(cakupan seluruh channel)- Agen default
bindings pertama yang cocok akan menang.
Untuk entri type: "acp", OpenClaw me-resolve berdasarkan identitas percakapan yang persis (match.channel + akun + match.peer.id) dan tidak menggunakan urutan tier binding route di atas.
Profil akses per agen
Akses penuh (tanpa sandbox)
Akses penuh (tanpa sandbox)
Alat + workspace hanya-baca
Alat + workspace hanya-baca
Tanpa akses filesystem (hanya pesan)
Tanpa akses filesystem (hanya pesan)
Sesi
Detail bidang sesi
Detail bidang sesi
scope: strategi pengelompokan sesi dasar untuk konteks chat grup.per-sender(default): setiap pengirim mendapatkan sesi terisolasi di dalam konteks channel.global: semua peserta dalam konteks channel berbagi satu sesi (gunakan hanya jika konteks bersama memang diinginkan).
dmScope: cara DM dikelompokkan.main: semua DM berbagi sesi utama.per-peer: isolasi berdasarkan ID pengirim lintas channel.per-channel-peer: isolasi per channel + pengirim (direkomendasikan untuk inbox multi-pengguna).per-account-channel-peer: isolasi per akun + channel + pengirim (direkomendasikan untuk multi-akun).
identityLinks: memetakan ID kanonis ke peer berawalan provider untuk berbagi sesi lintas channel.reset: kebijakan reset utama.dailymereset padaatHourwaktu lokal;idlemereset setelahidleMinutes. Jika keduanya dikonfigurasi, yang kedaluwarsa lebih dulu akan menang.resetByType: override per tipe (direct,group,thread).dmlama diterima sebagai alias untukdirect.parentForkMaxTokens:totalTokenssesi induk maksimum yang diizinkan saat membuat sesi thread bercabang (default100000).- Jika
totalTokensinduk di atas nilai ini, OpenClaw memulai sesi thread baru alih-alih mewarisi riwayat transkrip induk. - Tetapkan
0untuk menonaktifkan guard ini dan selalu mengizinkan fork dari induk.
- Jika
mainKey: bidang lama. Runtime selalu menggunakan"main"untuk bucket chat langsung utama.agentToAgent.maxPingPongTurns: jumlah giliran balasan maksimum antar agen selama pertukaran agen-ke-agen (integer, rentang:0–5).0menonaktifkan rantai ping-pong.sendPolicy: cocokkan berdasarkanchannel,chatType(direct|group|channel, dengan alias lamadm),keyPrefix, ataurawKeyPrefix. Penolakan pertama yang cocok akan menang.maintenance: kontrol pembersihan + retensi penyimpanan sesi.mode:warnhanya mengeluarkan peringatan;enforcemenerapkan pembersihan.pruneAfter: batas usia untuk entri usang (default30d).maxEntries: jumlah maksimum entri dalamsessions.json(default500).rotateBytes: rotasisessions.jsonsaat melebihi ukuran ini (default10mb).resetArchiveRetention: retensi untuk arsip transkrip*.reset.<timestamp>. Default-nya mengikutipruneAfter; tetapkanfalseuntuk menonaktifkan.maxDiskBytes: anggaran disk direktori sesi opsional. Dalam modewarn, ini mencatat peringatan; dalam modeenforce, ini menghapus artefak/sesi terlama terlebih dahulu.highWaterBytes: target opsional setelah pembersihan anggaran. Default ke80%darimaxDiskBytes.
threadBindings: default global untuk fitur sesi terikat thread.enabled: sakelar default utama (provider dapat mengoverride; Discord menggunakanchannels.discord.threadBindings.enabled)idleHours: default auto-unfocus karena tidak aktif dalam jam (0menonaktifkan; provider dapat mengoverride)maxAgeHours: default usia maksimum keras dalam jam (0menonaktifkan; provider dapat mengoverride)
Pesan
Awalan respons
Override per channel/akun:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Resolusi (yang paling spesifik menang): akun → channel → global. "" menonaktifkan dan menghentikan cascade. "auto" menurunkan [{identity.name}].
Variabel template:
| Variable | Deskripsi | Contoh |
|---|---|---|
{model} | Nama model pendek | claude-opus-4-6 |
{modelFull} | Identifier model penuh | anthropic/claude-opus-4-6 |
{provider} | Nama provider | anthropic |
{thinkingLevel} | Tingkat thinking saat ini | high, low, off |
{identity.name} | Nama identitas agen | (sama seperti "auto") |
{think} adalah alias untuk {thinkingLevel}.
Reaksi ack
- Default ke
identity.emojiagen aktif, jika tidak"👀". Tetapkan""untuk menonaktifkan. - Override per channel:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Urutan resolusi: akun → channel →
messages.ackReaction→ fallback identitas. - Cakupan:
group-mentions(default),group-all,direct,all. removeAckAfterReply: menghapus ack setelah balasan di Slack, Discord, dan Telegram.messages.statusReactions.enabled: mengaktifkan reaksi status siklus hidup di Slack, Discord, dan Telegram. Di Slack dan Discord, jika tidak diatur, reaksi status tetap aktif saat reaksi ack aktif. Di Telegram, tetapkan secara eksplisit ketrueuntuk mengaktifkan reaksi status siklus hidup.
Debounce masuk
Mengelompokkan pesan cepat yang hanya berisi teks dari pengirim yang sama menjadi satu giliran agen. Media/lampiran langsung di-flush. Perintah kontrol melewati debouncing.TTS (text-to-speech)
automengontrol mode auto-TTS default:off,always,inbound, atautagged./tts on|offdapat mengoverride preferensi lokal, dan/tts statusmenampilkan status efektif.summaryModelmengoverrideagents.defaults.model.primaryuntuk ringkasan otomatis.modelOverridesaktif secara default;modelOverrides.allowProviderdefault-nyafalse(opt-in).- Kunci API fallback ke
ELEVENLABS_API_KEY/XI_API_KEYdanOPENAI_API_KEY. openai.baseUrlmengoverride endpoint OpenAI TTS. Urutan resolusi adalah konfigurasi, laluOPENAI_TTS_BASE_URL, laluhttps://api.openai.com/v1.- Saat
openai.baseUrlmengarah ke endpoint non-OpenAI, OpenClaw memperlakukannya sebagai server TTS yang kompatibel dengan OpenAI dan melonggarkan validasi model/voice.
Talk
Default untuk mode Talk (macOS/iOS/Android).talk.providerharus cocok dengan sebuah kunci ditalk.providerssaat beberapa provider Talk dikonfigurasi.- Kunci Talk datar lama (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) hanya untuk kompatibilitas dan dimigrasikan otomatis ketalk.providers.<provider>. - ID voice fallback ke
ELEVENLABS_VOICE_IDatauSAG_VOICE_ID. providers.*.apiKeymenerima string plaintext atau objek SecretRef.- Fallback
ELEVENLABS_API_KEYhanya berlaku saat tidak ada kunci API Talk yang dikonfigurasi. providers.*.voiceAliasesmemungkinkan directive Talk menggunakan nama yang ramah.silenceTimeoutMsmengontrol berapa lama mode Talk menunggu setelah pengguna diam sebelum mengirim transkrip. Jika tidak diatur, jendela jeda default platform tetap digunakan (700 ms di macOS dan Android, 900 ms di iOS).
Tools
Profil alat
tools.profile menetapkan allowlist dasar sebelum tools.allow/tools.deny:
Onboarding lokal secara default menetapkan konfigurasi lokal baru ke tools.profile: "coding" saat tidak diatur (profil eksplisit yang sudah ada dipertahankan).
| Profil | Mencakup |
|---|---|
minimal | hanya session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Tanpa pembatasan (sama seperti tidak diatur) |
Grup alat
| Grup | Tools |
|---|---|
group:runtime | exec, process, code_execution (bash diterima sebagai alias untuk exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, video_generate, tts |
group:openclaw | Semua alat bawaan (tidak termasuk plugin provider) |
tools.allow / tools.deny
Kebijakan izinkan/tolak alat global (penolakan menang). Tidak peka huruf besar/kecil, mendukung wildcard *. Diterapkan bahkan saat sandbox Docker nonaktif.
tools.byProvider
Membatasi alat lebih lanjut untuk provider atau model tertentu. Urutan: profil dasar → profil provider → allow/deny.
tools.elevated
Mengontrol akses exec elevated di luar sandbox:
- Override per agen (
agents.list[].tools.elevated) hanya dapat membatasi lebih lanjut. /elevated on|off|ask|fullmenyimpan status per sesi; directive inline berlaku untuk satu pesan.execelevated melewati sandboxing dan menggunakan jalur escape yang dikonfigurasi (gatewaysecara default, ataunodesaat target exec adalahnode).
tools.exec
tools.loopDetection
Pemeriksaan keamanan loop alat dinonaktifkan secara default. Tetapkan enabled: true untuk mengaktifkan deteksi.
Pengaturan dapat didefinisikan secara global di tools.loopDetection dan dioverride per agen di agents.list[].tools.loopDetection.
historySize: riwayat panggilan alat maksimum yang disimpan untuk analisis loop.warningThreshold: ambang pola berulang tanpa kemajuan untuk peringatan.criticalThreshold: ambang pengulangan yang lebih tinggi untuk memblokir loop kritis.globalCircuitBreakerThreshold: ambang henti keras untuk eksekusi tanpa kemajuan apa pun.detectors.genericRepeat: beri peringatan pada panggilan alat yang sama dengan argumen yang sama secara berulang.detectors.knownPollNoProgress: beri peringatan/blokir alat poll yang diketahui (process.poll,command_status, dll.).detectors.pingPong: beri peringatan/blokir pola pasangan bergantian tanpa kemajuan.- Jika
warningThreshold >= criticalThresholdataucriticalThreshold >= globalCircuitBreakerThreshold, validasi gagal.
tools.web
tools.media
Mengonfigurasi pemahaman media masuk (gambar/audio/video):
Bidang entri model media
Bidang entri model media
Entri provider (
type: "provider" atau dihilangkan):provider: ID provider API (openai,anthropic,google/gemini,groq, dll.)model: override ID modelprofile/preferredProfile: pemilihan profilauth-profiles.json
type: "cli"):command: executable yang akan dijalankanargs: argumen bertemplat (mendukung{{MediaPath}},{{Prompt}},{{MaxChars}}, dll.)
capabilities: daftar opsional (image,audio,video). Default:openai/anthropic/minimax→ image,google→ image+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: override per entri.- Kegagalan akan fallback ke entri berikutnya.
auth-profiles.json → env vars → models.providers.*.apiKey.Bidang penyelesaian async:asyncCompletion.directSend: saattrue, tugas asyncmusic_generatedanvideo_generateyang selesai mencoba pengiriman channel langsung terlebih dahulu. Default:false(jalur lama requester-session wake/model-delivery).
tools.agentToAgent
tools.sessions
Mengontrol sesi mana yang dapat ditargetkan oleh alat sesi (sessions_list, sessions_history, sessions_send).
Default: tree (sesi saat ini + sesi yang dibuat olehnya, seperti subagen).
self: hanya kunci sesi saat ini.tree: sesi saat ini + sesi yang dibuat oleh sesi saat ini (subagen).agent: sesi apa pun yang dimiliki ID agen saat ini (dapat mencakup pengguna lain jika Anda menjalankan sesi per-pengirim di bawah ID agen yang sama).all: sesi apa pun. Penargetan lintas agen tetap memerlukantools.agentToAgent.- Pembatasan sandbox: saat sesi saat ini disandbox dan
agents.defaults.sandbox.sessionToolsVisibility="spawned", visibility dipaksa menjaditreemeskipuntools.sessions.visibility="all".
tools.sessions_spawn
Mengontrol dukungan lampiran inline untuk sessions_spawn.
- Lampiran hanya didukung untuk
runtime: "subagent". Runtime ACP menolaknya. - File diwujudkan ke workspace anak di
.openclaw/attachments/<uuid>/dengan.manifest.json. - Konten lampiran otomatis disensor dari persistensi transkrip.
- Input Base64 divalidasi dengan pemeriksaan alfabet/padding ketat dan guard ukuran sebelum decode.
- Izin file adalah
0700untuk direktori dan0600untuk file. - Pembersihan mengikuti kebijakan
cleanup:deleteselalu menghapus lampiran;keepmempertahankannya hanya saatretainOnSessionKeep: true.
tools.experimental
Flag alat bawaan eksperimental. Default nonaktif kecuali aturan auto-enable GPT-5 strict-agentic berlaku.
planTool: mengaktifkan alatupdate_planterstruktur untuk pelacakan pekerjaan multi-langkah yang tidak sepele.- Default:
falsekecualiagents.defaults.embeddedPi.executionContract(atau override per agen) diatur ke"strict-agentic"untuk eksekusi keluarga GPT-5 OpenAI atau OpenAI Codex. Tetapkantrueuntuk memaksa alat aktif di luar cakupan itu, ataufalseuntuk tetap menonaktifkannya bahkan untuk eksekusi GPT-5 strict-agentic. - Saat diaktifkan, system prompt juga menambahkan panduan penggunaan agar model hanya menggunakannya untuk pekerjaan yang substansial dan menjaga paling banyak satu langkah
in_progress.
agents.defaults.subagents
model: model default untuk subagen yang dibuat. Jika dihilangkan, subagen mewarisi model pemanggil.allowAgents: allowlist default ID agen target untuksessions_spawnsaat agen peminta tidak menetapkansubagents.allowAgentssendiri (["*"]= apa pun; default: hanya agen yang sama).runTimeoutSeconds: timeout default (detik) untuksessions_spawnsaat panggilan alat menghilangkanrunTimeoutSeconds.0berarti tanpa timeout.- Kebijakan alat per subagen:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Provider kustom dan base URL
OpenClaw menggunakan katalog model bawaan. Tambahkan provider kustom melaluimodels.providers di konfigurasi atau ~/.openclaw/agents/<agentId>/agent/models.json.
- Gunakan
authHeader: true+headersuntuk kebutuhan auth kustom. - Override root konfigurasi agen dengan
OPENCLAW_AGENT_DIR(atauPI_CODING_AGENT_DIR, alias variabel environment lama). - Urutan prioritas penggabungan untuk ID provider yang cocok:
- Nilai
baseUrlmodels.jsonagen yang tidak kosong menang. - Nilai
apiKeyagen yang tidak kosong menang hanya saat provider tersebut tidak dikelola SecretRef dalam konteks config/auth-profile saat ini. - Nilai
apiKeyprovider yang dikelola SecretRef disegarkan dari penanda sumber (ENV_VAR_NAMEuntuk ref env,secretref-manageduntuk ref file/exec) alih-alih menyimpan secret yang sudah di-resolve. - Nilai header provider yang dikelola SecretRef disegarkan dari penanda sumber (
secretref-env:ENV_VAR_NAMEuntuk ref env,secretref-manageduntuk ref file/exec). apiKey/baseUrlagen yang kosong atau tidak ada akan fallback kemodels.providersdi konfigurasi.contextWindow/maxTokensmodel yang cocok menggunakan nilai yang lebih tinggi antara konfigurasi eksplisit dan nilai katalog implisit.contextTokensmodel yang cocok mempertahankan batas runtime eksplisit saat ada; gunakan ini untuk membatasi konteks efektif tanpa mengubah metadata model native.- Gunakan
models.mode: "replace"saat Anda ingin konfigurasi menulis ulangmodels.jsonsepenuhnya. - Persistensi penanda bersifat source-authoritative: penanda ditulis dari snapshot konfigurasi sumber aktif (pra-resolusi), bukan dari nilai secret runtime yang sudah di-resolve.
- Nilai
Detail bidang provider
models.mode: perilaku katalog provider (mergeataureplace).models.providers: peta provider kustom yang dikunci dengan ID provider.models.providers.*.api: adaptor permintaan (openai-completions,openai-responses,anthropic-messages,google-generative-ai, dll).models.providers.*.apiKey: kredensial provider (lebih disarankan SecretRef/substitusi env).models.providers.*.auth: strategi auth (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: untuk Ollama +openai-completions, suntikkanoptions.num_ctxke permintaan (default:true).models.providers.*.authHeader: paksa transport kredensial di headerAuthorizationbila diperlukan.models.providers.*.baseUrl: base URL API upstream.models.providers.*.headers: header statis tambahan untuk perutean proxy/tenant.models.providers.*.request: override transport untuk permintaan HTTP model-provider.request.headers: header tambahan (digabungkan dengan default provider). Nilai menerima SecretRef.request.auth: override strategi auth. Mode:"provider-default"(gunakan auth bawaan provider),"authorization-bearer"(dengantoken),"header"(denganheaderName,value,prefixopsional).request.proxy: override proxy HTTP. Mode:"env-proxy"(gunakan env varsHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(denganurl). Kedua mode menerima sub-objektlsopsional.request.tls: override TLS untuk koneksi langsung. Bidang:ca,cert,key,passphrase(semuanya menerima SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: saattrue, izinkan HTTPS kebaseUrlsaat DNS me-resolve ke rentang private, CGNAT, atau serupa, melalui guard fetch HTTP provider (opt-in operator untuk endpoint OpenAI-compatible self-hosted tepercaya). WebSocket menggunakanrequestyang sama untuk header/TLS tetapi bukan guard SSRF fetch tersebut. Defaultfalse.
models.providers.*.models: entri katalog model provider eksplisit.models.providers.*.models.*.contextWindow: metadata jendela konteks model native.models.providers.*.models.*.contextTokens: batas konteks runtime opsional. Gunakan ini saat Anda menginginkan anggaran konteks efektif yang lebih kecil daripadacontextWindownative model.models.providers.*.models.*.compat.supportsDeveloperRole: petunjuk kompatibilitas opsional. Untukapi: "openai-completions"denganbaseUrlnon-native yang tidak kosong (host bukanapi.openai.com), OpenClaw memaksa ini menjadifalsesaat runtime.baseUrlkosong/tidak diatur mempertahankan perilaku OpenAI default.models.providers.*.models.*.compat.requiresStringContent: petunjuk kompatibilitas opsional untuk endpoint chat OpenAI-compatible yang hanya menerima string. Saattrue, OpenClaw meratakan arraymessages[].contentyang hanya berisi teks menjadi string biasa sebelum mengirim permintaan.plugins.entries.amazon-bedrock.config.discovery: root pengaturan auto-discovery Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: nyalakan/matikan implicit discovery.plugins.entries.amazon-bedrock.config.discovery.region: region AWS untuk discovery.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filter provider-id opsional untuk discovery terarah.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: interval polling untuk refresh discovery.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: jendela konteks fallback untuk model yang ditemukan.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: token output maksimum fallback untuk model yang ditemukan.
Contoh provider
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 untuk Cerebras; zai/glm-4.7 untuk Z.AI langsung.OpenCode
OpenCode
OPENCODE_API_KEY (atau OPENCODE_ZEN_API_KEY). Gunakan referensi opencode/... untuk katalog Zen atau referensi opencode-go/... untuk katalog Go. Pintasan: openclaw onboard --auth-choice opencode-zen atau openclaw onboard --auth-choice opencode-go.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* dan z-ai/* adalah alias yang diterima. Pintasan: openclaw onboard --auth-choice zai-api-key.- Endpoint umum:
https://api.z.ai/api/paas/v4 - Endpoint coding (default):
https://api.z.ai/api/coding/paas/v4 - Untuk endpoint umum, definisikan provider kustom dengan override base URL.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" atau openclaw onboard --auth-choice moonshot-api-key-cn.Endpoint Moonshot native mengiklankan kompatibilitas penggunaan streaming pada transport bersama openai-completions, dan OpenClaw mengunci hal itu berdasarkan kapabilitas endpoint, bukan hanya ID provider bawaan.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (kompatibel dengan Anthropic)
Synthetic (kompatibel dengan Anthropic)
/v1 (klien Anthropic menambahkannya). Pintasan: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (langsung)
MiniMax M2.7 (langsung)
MINIMAX_API_KEY. Pintasan:
openclaw onboard --auth-choice minimax-global-api atau
openclaw onboard --auth-choice minimax-cn-api.
Katalog model default-nya hanya M2.7.
Pada jalur streaming yang kompatibel dengan Anthropic, OpenClaw menonaktifkan thinking MiniMax secara default kecuali Anda secara eksplisit menetapkan thinking sendiri. /fast on atau params.fastMode: true menulis ulang MiniMax-M2.7 menjadi MiniMax-M2.7-highspeed.Model lokal (LM Studio)
Model lokal (LM Studio)
Lihat Local Models. Ringkasnya: jalankan model lokal besar melalui LM Studio Responses API pada perangkat keras yang serius; tetap gabungkan model hosted untuk fallback.
Skills
allowBundled: allowlist opsional hanya untuk skill bundled (skill managed/workspace tidak terpengaruh).load.extraDirs: root skill bersama tambahan (prioritas terendah).install.preferBrew: saat true, lebih memilih installer Homebrew ketikabrewtersedia sebelum fallback ke jenis installer lain.install.nodeManager: preferensi installer node untuk spesifikasimetadata.openclaw.install(npm|pnpm|yarn|bun).entries.<skillKey>.enabled: falsemenonaktifkan skill meskipun skill tersebut bundled/terinstal.entries.<skillKey>.apiKey: kemudahan untuk skill yang mendeklarasikan variabel env utama (string plaintext atau objek SecretRef).
Plugins
- Dimuat dari
~/.openclaw/extensions,<workspace>/.openclaw/extensions, ditambahplugins.load.paths. - Discovery menerima plugin OpenClaw native plus bundle Codex yang kompatibel dan bundle Claude, termasuk bundle Claude tata letak default tanpa manifest.
- Perubahan konfigurasi memerlukan restart gateway.
allow: allowlist opsional (hanya plugin yang terdaftar yang dimuat).denymenang.plugins.entries.<id>.apiKey: bidang kemudahan kunci API tingkat plugin (bila didukung oleh plugin).plugins.entries.<id>.env: peta variabel env yang dicakup plugin.plugins.entries.<id>.hooks.allowPromptInjection: saatfalse, core memblokirbefore_prompt_builddan mengabaikan bidang yang memutasi prompt daribefore_agent_startlama, sambil tetap mempertahankanmodelOverridedanproviderOverridelama. Berlaku untuk hook plugin native dan direktori hook yang disediakan bundle yang didukung.plugins.entries.<id>.subagent.allowModelOverride: secara eksplisit mempercayai plugin ini untuk meminta overrideproviderdanmodelper eksekusi bagi eksekusi subagen di latar belakang.plugins.entries.<id>.subagent.allowedModels: allowlist opsional targetprovider/modelkanonis untuk override subagen tepercaya. Gunakan"*"hanya jika Anda memang ingin mengizinkan model apa pun.plugins.entries.<id>.config: objek konfigurasi yang didefinisikan plugin (divalidasi oleh skema plugin OpenClaw native saat tersedia).plugins.entries.firecrawl.config.webFetch: pengaturan provider web-fetch Firecrawl.apiKey: kunci API Firecrawl (menerima SecretRef). Fallback keplugins.entries.firecrawl.config.webSearch.apiKey,tools.web.fetch.firecrawl.apiKeylama, atau env varFIRECRAWL_API_KEY.baseUrl: base URL API Firecrawl (default:https://api.firecrawl.dev).onlyMainContent: ekstrak hanya konten utama dari halaman (default:true).maxAgeMs: usia cache maksimum dalam milidetik (default:172800000/ 2 hari).timeoutSeconds: timeout permintaan scrape dalam detik (default:60).
plugins.entries.xai.config.xSearch: pengaturan xAI X Search (pencarian web Grok).enabled: aktifkan provider X Search.model: model Grok yang digunakan untuk pencarian (mis."grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: pengaturan memory dreaming (eksperimental). Lihat Dreaming untuk fase dan ambang.enabled: sakelar dreaming utama (defaultfalse).frequency: cadence cron untuk setiap sapuan dreaming penuh (default"0 3 * * *").- kebijakan fase dan ambang adalah detail implementasi (bukan kunci konfigurasi yang ditujukan ke pengguna).
- Konfigurasi memori lengkap ada di Referensi konfigurasi memori:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Plugin bundle Claude yang diaktifkan juga dapat menyumbangkan default Pi embedded dari
settings.json; OpenClaw menerapkannya sebagai pengaturan agen yang disanitasi, bukan sebagai patch konfigurasi OpenClaw mentah. plugins.slots.memory: pilih ID plugin memori aktif, atau"none"untuk menonaktifkan plugin memori.plugins.slots.contextEngine: pilih ID plugin context engine aktif; default ke"legacy"kecuali Anda memasang dan memilih engine lain.plugins.installs: metadata pemasangan yang dikelola CLI dan digunakan olehopenclaw plugins update.- Mencakup
source,spec,sourcePath,installPath,version,resolvedName,resolvedVersion,resolvedSpec,integrity,shasum,resolvedAt,installedAt. - Perlakukan
plugins.installs.*sebagai state terkelola; lebih disarankan menggunakan perintah CLI daripada edit manual.
- Mencakup
Browser
evaluateEnabled: falsemenonaktifkanact:evaluatedanwait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkdinonaktifkan saat tidak diatur, jadi navigasi browser tetap ketat secara default.- Tetapkan
ssrfPolicy.dangerouslyAllowPrivateNetwork: truehanya saat Anda memang memercayai navigasi browser ke jaringan private. - Dalam mode ketat, endpoint profil CDP remote (
profiles.*.cdpUrl) tunduk pada pemblokiran jaringan private yang sama selama pemeriksaan keterjangkauan/discovery. ssrfPolicy.allowPrivateNetworktetap didukung sebagai alias lama.- Dalam mode ketat, gunakan
ssrfPolicy.hostnameAllowlistdanssrfPolicy.allowedHostnamesuntuk pengecualian eksplisit. - Profil remote bersifat attach-only (start/stop/reset dinonaktifkan).
profiles.*.cdpUrlmenerimahttp://,https://,ws://, danwss://. Gunakan HTTP(S) saat Anda ingin OpenClaw menemukan/json/version; gunakan WS(S) saat provider Anda memberi URL WebSocket DevTools langsung.- Profil
existing-sessionhanya untuk host dan menggunakan Chrome MCP alih-alih CDP. - Profil
existing-sessiondapat menetapkanuserDataDiruntuk menargetkan profil browser berbasis Chromium tertentu seperti Brave atau Edge. - Profil
existing-sessionmempertahankan batas rute Chrome MCP saat ini: aksi berbasis snapshot/ref alih-alih penargetan CSS-selector, hook upload satu file, tanpa override timeout dialog, dan tanpawait --load networkidle,responsebody, ekspor PDF, intersepsi unduhan, atau aksi batch. - Profil
openclawterkelola lokal secara otomatis menetapkancdpPortdancdpUrl; tetapkancdpUrlsecara eksplisit hanya untuk CDP remote. - Urutan auto-detect: browser default jika berbasis Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Layanan kontrol: hanya loopback (port diturunkan dari
gateway.port, default18791). extraArgsmenambahkan flag peluncuran ekstra ke startup Chromium lokal (misalnya--disable-gpu, ukuran jendela, atau flag debug).
UI
seamColor: warna aksen untuk chrome UI aplikasi native (warna gelembung Talk Mode, dll.).assistant: override identitas Control UI. Fallback ke identitas agen aktif.
Gateway
Detail bidang gateway
Detail bidang gateway
mode:local(jalankan gateway) atauremote(hubungkan ke gateway remote). Gateway menolak untuk mulai kecualilocal.port: satu port termultipleks untuk WS + HTTP. Urutan prioritas:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(default),lan(0.0.0.0),tailnet(hanya IP Tailscale), ataucustom.- Alias bind lama: gunakan nilai mode bind di
gateway.bind(auto,loopback,lan,tailnet,custom), bukan alias host (0.0.0.0,127.0.0.1,localhost,::,::1). - Catatan Docker: bind default
loopbackmendengarkan pada127.0.0.1di dalam container. Dengan jaringan bridge Docker (-p 18789:18789), lalu lintas masuk melaluieth0, sehingga gateway tidak dapat dijangkau. Gunakan--network host, atau tetapkanbind: "lan"(ataubind: "custom"dengancustomBindHost: "0.0.0.0") untuk mendengarkan di semua interface. - Auth: wajib secara default. Bind non-loopback memerlukan auth gateway. Dalam praktiknya ini berarti token/password bersama atau reverse proxy sadar identitas dengan
gateway.auth.mode: "trusted-proxy". Wizard onboarding menghasilkan token secara default. - Jika
gateway.auth.tokendangateway.auth.passwordsama-sama dikonfigurasi (termasuk SecretRef), tetapkangateway.auth.modesecara eksplisit ketokenataupassword. Startup dan alur service install/repair gagal saat keduanya dikonfigurasi dan mode tidak diatur. gateway.auth.mode: "none": mode tanpa auth yang eksplisit. Gunakan hanya untuk penyiapan local loopback tepercaya; ini sengaja tidak ditawarkan oleh prompt onboarding.gateway.auth.mode: "trusted-proxy": delegasikan auth ke reverse proxy yang sadar identitas dan percayai header identitas darigateway.trustedProxies(lihat Trusted Proxy Auth). Mode ini mengharapkan sumber proxy non-loopback; reverse proxy loopback pada host yang sama tidak memenuhi auth trusted-proxy.gateway.auth.allowTailscale: saattrue, header identitas Tailscale Serve dapat memenuhi auth Control UI/WebSocket (diverifikasi melaluitailscale whois). Endpoint HTTP API tidak menggunakan auth header Tailscale tersebut; mereka mengikuti mode auth HTTP gateway normal. Alur tanpa token ini mengasumsikan host gateway tepercaya. Default ketruesaattailscale.mode = "serve".gateway.auth.rateLimit: limiter auth gagal opsional. Berlaku per IP klien dan per cakupan auth (shared-secret dan device-token dilacak secara independen). Percobaan yang diblokir mengembalikan429+Retry-After.- Pada jalur async Tailscale Serve Control UI, percobaan gagal untuk
{scope, clientIp}yang sama diserialisasi sebelum penulisan kegagalan. Karena itu, percobaan buruk serentak dari klien yang sama dapat memicu limiter pada permintaan kedua alih-alih keduanya lolos sebagai mismatch biasa. gateway.auth.rateLimit.exemptLoopbackdefault-nyatrue; tetapkanfalsesaat Anda memang ingin lalu lintas localhost juga dibatasi (untuk penyiapan pengujian atau deployment proxy ketat).
- Pada jalur async Tailscale Serve Control UI, percobaan gagal untuk
- Percobaan auth WS asal browser selalu dibatasi dengan pengecualian loopback dinonaktifkan (defense-in-depth terhadap brute force localhost berbasis browser).
- Pada loopback, lockout asal browser tersebut diisolasi per nilai
Originyang dinormalisasi, sehingga kegagalan berulang dari satu origin localhost tidak otomatis mengunci origin lain. tailscale.mode:serve(hanya tailnet, bind loopback) ataufunnel(publik, memerlukan auth).controlUi.allowedOrigins: allowlist origin browser eksplisit untuk koneksi Gateway WebSocket. Wajib saat klien browser diharapkan datang dari origin non-loopback.controlUi.dangerouslyAllowHostHeaderOriginFallback: mode berbahaya yang mengaktifkan fallback origin Host-header untuk deployment yang secara sengaja bergantung pada kebijakan origin Host-header.remote.transport:ssh(default) ataudirect(ws/wss). Untukdirect,remote.urlharusws://atauwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: override break-glass sisi klien yang mengizinkanws://plaintext ke IP jaringan private tepercaya; default tetap hanya loopback untuk plaintext.gateway.remote.token/.passwordadalah bidang kredensial klien remote. Bidang ini tidak mengonfigurasi auth gateway dengan sendirinya.gateway.push.apns.relay.baseUrl: base HTTPS URL untuk relay APNs eksternal yang digunakan build iOS resmi/TestFlight setelah mereka memublikasikan pendaftaran berbasis relay ke gateway. URL ini harus cocok dengan URL relay yang dikompilasi ke build iOS.gateway.push.apns.relay.timeoutMs: timeout kirim gateway-ke-relay dalam milidetik. Default ke10000.- Pendaftaran berbasis relay didelegasikan ke identitas gateway tertentu. Aplikasi iOS yang dipasangkan mengambil
gateway.identity.get, menyertakan identitas tersebut dalam pendaftaran relay, dan meneruskan grant kirim yang dicakup pendaftaran ke gateway. Gateway lain tidak dapat menggunakan ulang pendaftaran tersimpan itu. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: override env sementara untuk konfigurasi relay di atas.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: escape hatch hanya untuk pengembangan bagi URL relay HTTP loopback. URL relay produksi harus tetap menggunakan HTTPS.gateway.channelHealthCheckMinutes: interval monitor kesehatan channel dalam menit. Tetapkan0untuk menonaktifkan restart monitor kesehatan secara global. Default:5.gateway.channelStaleEventThresholdMinutes: ambang stale-socket dalam menit. Pertahankan nilai ini lebih besar atau sama dengangateway.channelHealthCheckMinutes. Default:30.gateway.channelMaxRestartsPerHour: jumlah restart monitor kesehatan maksimum per channel/akun dalam satu jam bergulir. Default:10.channels.<provider>.healthMonitor.enabled: opt-out per channel untuk restart monitor kesehatan sambil tetap mempertahankan monitor global aktif.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: override per akun untuk channel multi-akun. Saat diatur, nilainya memiliki prioritas di atas override tingkat channel.- Jalur pemanggilan gateway lokal dapat menggunakan
gateway.remote.*sebagai fallback hanya saatgateway.auth.*tidak diatur. - Jika
gateway.auth.token/gateway.auth.passwordsecara eksplisit dikonfigurasi melalui SecretRef dan tidak ter-resolve, resolusi gagal tertutup (tidak ada fallback remote yang menutupi). trustedProxies: IP reverse proxy yang mengakhiri TLS atau menyuntikkan header klien yang diteruskan. Daftarkan hanya proxy yang Anda kontrol. Entri loopback tetap valid untuk penyiapan proxy lokal/deteksi lokal pada host yang sama (misalnya Tailscale Serve atau reverse proxy lokal), tetapi entri tersebut tidak membuat permintaan loopback memenuhi syarat untukgateway.auth.mode: "trusted-proxy".allowRealIpFallback: saattrue, gateway menerimaX-Real-IPjikaX-Forwarded-Fortidak ada. Defaultfalseuntuk perilaku fail-closed.gateway.tools.deny: nama alat tambahan yang diblokir untuk HTTPPOST /tools/invoke(memperluas daftar penolakan default).gateway.tools.allow: hapus nama alat dari daftar penolakan HTTP default.
Endpoint yang kompatibel dengan OpenAI
- Chat Completions: dinonaktifkan secara default. Aktifkan dengan
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Penguatan URL-input Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistAllowlist kosong diperlakukan sebagai tidak diatur; gunakangateway.http.endpoints.responses.files.allowUrl=falsedan/ataugateway.http.endpoints.responses.images.allowUrl=falseuntuk menonaktifkan pengambilan URL.
- Header penguatan respons opsional:
gateway.http.securityHeaders.strictTransportSecurity(tetapkan hanya untuk origin HTTPS yang Anda kontrol; lihat Trusted Proxy Auth)
Isolasi multi-instance
Jalankan beberapa gateway pada satu host dengan port dan direktori state unik:--dev (menggunakan ~/.openclaw-dev + port 19001), --profile <name> (menggunakan ~/.openclaw-<name>).
Lihat Multiple Gateways.
gateway.tls
enabled: mengaktifkan terminasi TLS pada listener gateway (HTTPS/WSS) (default:false).autoGenerate: menghasilkan otomatis pasangan cert/key self-signed lokal saat file eksplisit tidak dikonfigurasi; hanya untuk penggunaan lokal/dev.certPath: path filesystem ke file sertifikat TLS.keyPath: path filesystem ke file private key TLS; batasi izinnya.caPath: path bundle CA opsional untuk verifikasi klien atau rantai kepercayaan kustom.
gateway.reload
mode: mengontrol cara edit konfigurasi diterapkan saat runtime."off": abaikan edit langsung; perubahan memerlukan restart eksplisit."restart": selalu restart proses gateway saat konfigurasi berubah."hot": terapkan perubahan di dalam proses tanpa restart."hybrid"(default): coba hot reload terlebih dahulu; fallback ke restart jika diperlukan.
debounceMs: jendela debounce dalam md sebelum perubahan konfigurasi diterapkan (integer non-negatif).deferralTimeoutMs: waktu maksimum dalam md untuk menunggu operasi yang sedang berjalan sebelum memaksa restart (default:300000= 5 menit).
Hooks
Authorization: Bearer <token> atau x-openclaw-token: <token>.
Token hook query-string ditolak.
Catatan validasi dan keamanan:
hooks.enabled=truememerlukanhooks.tokenyang tidak kosong.hooks.tokenharus berbeda darigateway.auth.token; penggunaan ulang token Gateway ditolak.hooks.pathtidak boleh/; gunakan subpath khusus seperti/hooks.- Jika
hooks.allowRequestSessionKey=true, batasihooks.allowedSessionKeyPrefixes(misalnya["hook:"]).
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeydari payload permintaan diterima hanya saathooks.allowRequestSessionKey=true(default:false).
POST /hooks/<name>→ di-resolve melaluihooks.mappings
Detail pemetaan
Detail pemetaan
match.pathcocok dengan subpath setelah/hooks(misalnya/hooks/gmail→gmail).match.sourcecocok dengan bidang payload untuk path generik.- Template seperti
{{messages[0].subject}}membaca dari payload. transformdapat menunjuk ke modul JS/TS yang mengembalikan aksi hook.transform.moduleharus berupa path relatif dan tetap berada di dalamhooks.transformsDir(path absolut dan traversal ditolak).
agentIdmerutekan ke agen tertentu; ID yang tidak dikenal fallback ke default.allowedAgentIds: membatasi perutean eksplisit (*atau dihilangkan = izinkan semua,[]= tolak semua).defaultSessionKey: kunci sesi tetap opsional untuk eksekusi agen hook tanpasessionKeyeksplisit.allowRequestSessionKey: izinkan pemanggil/hooks/agentmenetapkansessionKey(default:false).allowedSessionKeyPrefixes: allowlist awalan opsional untuk nilaisessionKeyeksplisit (permintaan + pemetaan), misalnya["hook:"].deliver: truemengirim balasan akhir ke channel;channeldefault kelast.modelmengoverride LLM untuk eksekusi hook ini (harus diizinkan jika katalog model diatur).
Integrasi Gmail
- Gateway otomatis menjalankan
gog gmail watch servesaat boot ketika dikonfigurasi. TetapkanOPENCLAW_SKIP_GMAIL_WATCHER=1untuk menonaktifkan. - Jangan menjalankan
gog gmail watch serveterpisah bersamaan dengan Gateway.
Canvas host
- Menyajikan HTML/CSS/JS dan A2UI yang dapat diedit agen melalui HTTP di bawah port Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Hanya lokal: pertahankan
gateway.bind: "loopback"(default). - Bind non-loopback: rute canvas memerlukan auth Gateway (token/password/trusted-proxy), sama seperti permukaan HTTP Gateway lainnya.
- Node WebViews biasanya tidak mengirim header auth; setelah node dipasangkan dan terhubung, Gateway mengiklankan URL kapabilitas bercakupan node untuk akses canvas/A2UI.
- URL kapabilitas terikat ke sesi WS node aktif dan cepat kedaluwarsa. Fallback berbasis IP tidak digunakan.
- Menyuntikkan klien live-reload ke HTML yang disajikan.
- Otomatis membuat
index.htmlawal saat kosong. - Juga menyajikan A2UI di
/__openclaw__/a2ui/. - Perubahan memerlukan restart gateway.
- Nonaktifkan live reload untuk direktori besar atau error
EMFILE.
Discovery
mDNS (Bonjour)
minimal(default): hilangkancliPath+sshPortdari record TXT.full: sertakancliPath+sshPort.- Hostname default ke
openclaw. Override denganOPENCLAW_MDNS_HOSTNAME.
Wide-area (DNS-SD)
~/.openclaw/dns/. Untuk discovery lintas jaringan, pasangkan dengan server DNS (CoreDNS direkomendasikan) + split DNS Tailscale.
Penyiapan: openclaw dns setup --apply.
Environment
env (variabel env inline)
- Variabel env inline hanya diterapkan jika env proses tidak memiliki kunci tersebut.
- File
.env:.envCWD +~/.openclaw/.env(keduanya tidak mengoverride variabel yang sudah ada). shellEnv: mengimpor kunci yang diharapkan tetapi belum ada dari profil login shell Anda.- Lihat Environment untuk urutan prioritas lengkap.
Substitusi variabel env
Rujuk variabel env di string konfigurasi apa pun dengan${VAR_NAME}:
- Hanya nama huruf besar yang cocok:
[A-Z_][A-Z0-9_]*. - Variabel yang hilang/kosong memunculkan error saat memuat konfigurasi.
- Escape dengan
$${VAR}untuk${VAR}literal. - Bekerja dengan
$include.
Secrets
Referensi secret bersifat aditif: nilai plaintext tetap berfungsi.SecretRef
Gunakan satu bentuk objek:
- pola
provider:^[a-z][a-z0-9_-]{0,63}$ - pola id
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - id
source: "file": pointer JSON absolut (misalnya"/providers/openai/apiKey") - pola id
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - id
source: "exec"tidak boleh mengandung segmen path.atau..yang dipisahkan slash (misalnyaa/../bditolak)
Permukaan kredensial yang didukung
- Matriks kanonis: Permukaan Kredensial SecretRef
secrets applymenargetkan path kredensialopenclaw.jsonyang didukung.- Referensi
auth-profiles.jsontermasuk dalam cakupan resolusi runtime dan audit.
Konfigurasi provider secret
- Provider
filemendukungmode: "json"danmode: "singleValue"(idharus"value"dalam mode singleValue). - Provider
execmemerlukan pathcommandabsolut dan menggunakan payload protokol pada stdin/stdout. - Secara default, path perintah symlink ditolak. Tetapkan
allowSymlinkCommand: trueuntuk mengizinkan path symlink sambil memvalidasi path target hasil resolve. - Jika
trustedDirsdikonfigurasi, pemeriksaan trusted-dir berlaku pada path target hasil resolve. - Environment child
execminimal secara default; teruskan variabel yang diperlukan secara eksplisit denganpassEnv. - Referensi secret di-resolve saat waktu aktivasi ke dalam snapshot dalam memori, lalu jalur permintaan hanya membaca snapshot tersebut.
- Penyaringan permukaan aktif berlaku selama aktivasi: referensi yang tidak ter-resolve pada permukaan aktif menyebabkan startup/reload gagal, sedangkan permukaan tidak aktif dilewati dengan diagnostik.
Penyimpanan auth
- Profil per agen disimpan di
<agentDir>/auth-profiles.json. auth-profiles.jsonmendukung referensi tingkat nilai (keyRefuntukapi_key,tokenRefuntuktoken) untuk mode kredensial statis.- Profil mode OAuth (
auth.profiles.<id>.mode = "oauth") tidak mendukung kredensial auth-profile berbasis SecretRef. - Kredensial runtime statis berasal dari snapshot ter-resolve dalam memori; entri
auth.jsonstatis lama dibersihkan saat ditemukan. - Impor OAuth lama dari
~/.openclaw/credentials/oauth.json. - Lihat OAuth.
- Perilaku runtime secrets dan alat
audit/configure/apply: Secrets Management.
auth.cooldowns
billingBackoffHours: backoff dasar dalam jam saat profil gagal karena error billing/kredit tidak cukup yang benar-benar pasti (default:5). Teks billing eksplisit masih dapat masuk ke sini bahkan pada respons401/403, tetapi pencocok teks spesifik provider tetap dibatasi pada provider yang memilikinya (misalnya OpenRouterKey limit exceeded). Pesan jendela penggunaan402HTTP yang dapat dicoba ulang atau batas pengeluaran organisasi/workspace tetap masuk ke jalurrate_limit.billingBackoffHoursByProvider: override per provider opsional untuk jam backoff billing.billingMaxHours: batas dalam jam untuk pertumbuhan eksponensial backoff billing (default:24).authPermanentBackoffMinutes: backoff dasar dalam menit untuk kegagalanauth_permanentdengan keyakinan tinggi (default:10).authPermanentMaxMinutes: batas dalam menit untuk pertumbuhan backoffauth_permanent(default:60).failureWindowHours: jendela bergulir dalam jam yang digunakan untuk penghitung backoff (default:24).overloadedProfileRotations: jumlah rotasi auth-profile maksimum untuk provider yang sama pada error overloaded sebelum beralih ke fallback model (default:1). Bentuk provider-sibuk sepertiModelNotReadyExceptionmasuk ke sini.overloadedBackoffMs: penundaan tetap sebelum mencoba ulang rotasi provider/profile yang overloaded (default:0).rateLimitedProfileRotations: jumlah rotasi auth-profile maksimum untuk provider yang sama pada error rate-limit sebelum beralih ke fallback model (default:1). Bucket rate-limit itu mencakup teks berbentuk provider sepertiToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceeded, danresource exhausted.
Logging
- File log default:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Tetapkan
logging.fileuntuk path yang stabil. consoleLevelnaik kedebugsaat--verbose.maxFileBytes: ukuran file log maksimum dalam byte sebelum penulisan ditekan (integer positif; default:524288000= 500 MB). Gunakan rotasi log eksternal untuk deployment produksi.
Diagnostik
enabled: sakelar utama untuk output instrumentasi (default:true).flags: array string flag yang mengaktifkan output log terarah (mendukung wildcard seperti"telegram.*"atau"*").stuckSessionWarnMs: ambang usia dalam md untuk mengeluarkan peringatan sesi macet saat sesi tetap berada dalam status pemrosesan.otel.enabled: mengaktifkan pipeline ekspor OpenTelemetry (default:false).otel.endpoint: URL collector untuk ekspor OTel.otel.protocol:"http/protobuf"(default) atau"grpc".otel.headers: header metadata HTTP/gRPC tambahan yang dikirim bersama permintaan ekspor OTel.otel.serviceName: nama layanan untuk atribut resource.otel.traces/otel.metrics/otel.logs: aktifkan ekspor trace, metrics, atau log.otel.sampleRate: laju sampling trace0–1.otel.flushIntervalMs: interval flush telemetri berkala dalam md.cacheTrace.enabled: catat snapshot jejak cache untuk eksekusi embedded (default:false).cacheTrace.filePath: path output untuk cache trace JSONL (default:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: mengontrol apa yang disertakan dalam output cache trace (semuanya default:true).
Update
channel: channel rilis untuk pemasangan npm/git —"stable","beta", atau"dev".checkOnStart: periksa pembaruan npm saat gateway dimulai (default:true).auto.enabled: aktifkan auto-update latar belakang untuk package install (default:false).auto.stableDelayHours: penundaan minimum dalam jam sebelum auto-apply channel stable (default:6; maks:168).auto.stableJitterHours: jendela penyebaran rollout channel stable tambahan dalam jam (default:12; maks:168).auto.betaCheckIntervalHours: seberapa sering pemeriksaan channel beta berjalan dalam jam (default:1; maks:24).
ACP
enabled: gerbang fitur ACP global (default:false).dispatch.enabled: gerbang independen untuk dispatch giliran sesi ACP (default:true). Tetapkanfalseagar perintah ACP tetap tersedia sambil memblokir eksekusi.backend: ID backend runtime ACP default (harus cocok dengan plugin runtime ACP terdaftar).defaultAgent: ID agen target ACP fallback saat spawn tidak menentukan target eksplisit.allowedAgents: allowlist ID agen yang diizinkan untuk sesi runtime ACP; kosong berarti tidak ada pembatasan tambahan.maxConcurrentSessions: jumlah sesi ACP aktif bersamaan maksimum.stream.coalesceIdleMs: jendela flush idle dalam md untuk teks yang di-stream.stream.maxChunkChars: ukuran chunk maksimum sebelum proyeksi blok stream dipecah.stream.repeatSuppression: menekan baris status/alat yang berulang per giliran (default:true).stream.deliveryMode:"live"melakukan streaming bertahap;"final_only"menahan hingga giliran mencapai peristiwa terminal.stream.hiddenBoundarySeparator: pemisah sebelum teks terlihat setelah peristiwa alat tersembunyi (default:"paragraph").stream.maxOutputChars: jumlah karakter output asisten maksimum yang diproyeksikan per giliran ACP.stream.maxSessionUpdateChars: jumlah karakter maksimum untuk baris status/pembaruan ACP yang diproyeksikan.stream.tagVisibility: catatan nama tag ke override visibilitas boolean untuk peristiwa yang di-stream.runtime.ttlMinutes: TTL idle dalam menit untuk worker sesi ACP sebelum memenuhi syarat untuk dibersihkan.runtime.installCommand: perintah pemasangan opsional yang dijalankan saat melakukan bootstrap environment runtime ACP.
CLI
cli.banner.taglineModemengontrol gaya tagline banner:"random"(default): tagline lucu/musiman yang bergilir."default": tagline netral tetap (Semua chat Anda, satu OpenClaw.)."off": tanpa teks tagline (judul/versi banner tetap ditampilkan).
- Untuk menyembunyikan seluruh banner (bukan hanya tagline), tetapkan env
OPENCLAW_HIDE_BANNER=1.
Wizard
Metadata yang ditulis oleh alur penyiapan terpandu CLI (onboard, configure, doctor):
Identity
Lihat bidang identityagents.list di bawah Default agen.
Bridge (lama, dihapus)
Build saat ini tidak lagi menyertakan bridge TCP. Node terhubung melalui Gateway WebSocket. Kuncibridge.* tidak lagi menjadi bagian dari skema konfigurasi (validasi gagal sampai dihapus; openclaw doctor --fix dapat menghapus kunci yang tidak dikenal).
Konfigurasi bridge lama (referensi historis)
Konfigurasi bridge lama (referensi historis)
Cron
sessionRetention: berapa lama mempertahankan sesi eksekusi cron terisolasi yang sudah selesai sebelum dipangkas darisessions.json. Juga mengontrol pembersihan transkrip cron terarsip yang dihapus. Default:24h; tetapkanfalseuntuk menonaktifkan.runLog.maxBytes: ukuran maksimum per file log eksekusi (cron/runs/<jobId>.jsonl) sebelum dipangkas. Default:2_000_000byte.runLog.keepLines: baris terbaru yang dipertahankan saat pemangkasan run-log dipicu. Default:2000.webhookToken: token bearer yang digunakan untuk pengiriman POST webhook cron (delivery.mode = "webhook"); jika dihilangkan, tidak ada header auth yang dikirim.webhook: fallback webhook lama yang deprecated berupa URL (http/https) dan hanya digunakan untuk job tersimpan yang masih memilikinotify: true.
cron.retry
maxAttempts: jumlah retry maksimum untuk job one-shot pada error sementara (default:3; rentang:0–10).backoffMs: array penundaan backoff dalam md untuk setiap percobaan ulang (default:[30000, 60000, 300000]; 1–10 entri).retryOn: jenis error yang memicu retry —"rate_limit","overloaded","network","timeout","server_error". Hilangkan untuk mencoba ulang semua jenis sementara.
cron.failureAlert
enabled: aktifkan peringatan kegagalan untuk job cron (default:false).after: jumlah kegagalan berturut-turut sebelum peringatan dikirim (integer positif, min:1).cooldownMs: milidetik minimum antara peringatan berulang untuk job yang sama (integer non-negatif).mode: mode pengiriman —"announce"mengirim melalui pesan channel;"webhook"melakukan POST ke webhook yang dikonfigurasi.accountId: ID akun atau channel opsional untuk membatasi cakupan pengiriman peringatan.
cron.failureDestination
- Tujuan default untuk notifikasi kegagalan cron di seluruh job.
mode:"announce"atau"webhook"; default ke"announce"saat data target yang cukup tersedia.channel: override channel untuk pengiriman announce."last"menggunakan ulang channel pengiriman terakhir yang diketahui.to: target announce eksplisit atau URL webhook. Wajib untuk mode webhook.accountId: override akun opsional untuk pengiriman.delivery.failureDestinationper job mengoverride default global ini.- Saat tujuan kegagalan global maupun per job tidak diatur, job yang sudah mengirim melalui
announceakan fallback ke target announce utama tersebut saat gagal. delivery.failureDestinationhanya didukung untuk jobsessionTarget="isolated"kecualidelivery.modeutama job adalah"webhook".
Variabel template model media
Placeholder template yang diekspansi ditools.media.models[].args:
| Variable | Deskripsi |
|---|---|
{{Body}} | Isi pesan masuk penuh |
{{RawBody}} | Isi mentah (tanpa pembungkus riwayat/pengirim) |
{{BodyStripped}} | Isi dengan mention grup dihapus |
{{From}} | Identifier pengirim |
{{To}} | Identifier tujuan |
{{MessageSid}} | ID pesan channel |
{{SessionId}} | UUID sesi saat ini |
{{IsNewSession}} | "true" saat sesi baru dibuat |
{{MediaUrl}} | Pseudo-URL media masuk |
{{MediaPath}} | Path media lokal |
{{MediaType}} | Jenis media (image/audio/document/…) |
{{Transcript}} | Transkrip audio |
{{Prompt}} | Prompt media ter-resolve untuk entri CLI |
{{MaxChars}} | Jumlah karakter output maksimum ter-resolve untuk entri CLI |
{{ChatType}} | "direct" atau "group" |
{{GroupSubject}} | Subjek grup (best effort) |
{{GroupMembers}} | Pratinjau anggota grup (best effort) |
{{SenderName}} | Nama tampilan pengirim (best effort) |
{{SenderE164}} | Nomor telepon pengirim (best effort) |
{{Provider}} | Petunjuk provider (whatsapp, telegram, discord, dll.) |
Include konfigurasi ($include)
Pisahkan konfigurasi ke beberapa file:
- Satu file: menggantikan objek yang memuatnya.
- Array file: di-deep-merge sesuai urutan (yang belakangan mengoverride yang sebelumnya).
- Kunci saudara: digabungkan setelah include (mengoverride nilai yang di-include).
- Include bertingkat: hingga 10 level kedalaman.
- Path: di-resolve relatif terhadap file yang melakukan include, tetapi harus tetap berada di dalam direktori konfigurasi tingkat atas (
dirnamedariopenclaw.json). Bentuk absolut/../diizinkan hanya jika hasil resolve tetap berada di dalam batas tersebut. - Error: pesan yang jelas untuk file hilang, error parse, dan include melingkar.
Terkait: Konfigurasi · Contoh Konfigurasi · Doctor