OpenClaw menangani pesan masuk melalui pipeline resolusi sesi, antrean, streaming, eksekusi alat, dan visibilitas penalaran. Halaman ini memetakan alur dari pesan masuk hingga balasan.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Alur pesan (tingkat tinggi)
messages.*untuk prefiks, antrean, dan perilaku grup.agents.defaults.*untuk default streaming blok dan pemotongan.- Override kanal (
channels.whatsapp.*,channels.telegram.*, dll.) untuk batas dan toggle streaming.
Deduplikasi masuk
Kanal dapat mengirim ulang pesan yang sama setelah koneksi ulang. OpenClaw menyimpan cache berumur pendek dengan kunci kanal/akun/rekan/sesi/id pesan sehingga pengiriman duplikat tidak memicu run agen lain.Debouncing masuk
Pesan berurutan cepat dari pengirim yang sama dapat digabungkan menjadi satu giliran agen melaluimessages.inbound. Debouncing dibatasi per kanal + percakapan dan menggunakan pesan terbaru untuk threading/id balasan.
Konfigurasi (default global + override per kanal):
- Debounce berlaku untuk pesan hanya teks; media/lampiran langsung di-flush.
- Perintah kontrol melewati debouncing agar tetap berdiri sendiri. Kanal yang secara eksplisit ikut serta dalam penggabungan DM dari pengirim yang sama dapat mempertahankan perintah DM di dalam jendela debounce sehingga payload yang dikirim terpisah dapat bergabung dalam giliran agen yang sama.
Sesi dan perangkat
Sesi dimiliki oleh gateway, bukan oleh klien.- Chat langsung diciutkan ke kunci sesi utama agen.
- Grup/kanal mendapatkan kunci sesi sendiri.
- Penyimpanan sesi dan transkrip berada di host gateway.
Metadata hasil alat
content hasil alat adalah hasil yang terlihat oleh model. details hasil alat adalah metadata runtime untuk rendering UI, diagnostik, pengiriman media, dan plugin.
OpenClaw menjaga batas tersebut tetap eksplisit:
toolResult.detailsdihapus sebelum replay provider dan input compaction.- Transkrip sesi yang dipersisten hanya menyimpan
detailsyang dibatasi; metadata yang terlalu besar diganti dengan ringkasan ringkas yang ditandaipersistedDetailsTruncated: true. - Plugin dan alat harus menaruh teks yang harus dibaca model di
content, bukan hanya didetails.
Isi masuk dan konteks riwayat
OpenClaw memisahkan isi prompt dari isi perintah:BodyForAgent: teks utama yang menghadap model untuk pesan saat ini. Plugin kanal harus menjaga ini tetap fokus pada teks terkini pengirim yang memuat prompt.Body: fallback prompt lama. Ini dapat mencakup envelope kanal dan wrapper riwayat opsional, tetapi kanal saat ini tidak boleh mengandalkannya sebagai input model utama ketikaBodyForAgenttersedia.CommandBody: teks pengguna mentah untuk parsing direktif/perintah.RawBody: alias lama untukCommandBody(dipertahankan untuk kompatibilitas).
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody (atau RawBody) ke teks pesan asli dan mempertahankan Body sebagai prompt gabungan. Riwayat terstruktur, balasan, pesan yang diteruskan, dan metadata kanal dirender sebagai blok konteks tidak tepercaya berperan pengguna selama perakitan prompt.
Buffer riwayat dapat dikonfigurasi melalui messages.groupChat.historyLimit (default global) dan override per kanal seperti channels.slack.historyLimit atau channels.telegram.accounts.<id>.historyLimit (setel 0 untuk menonaktifkan).
Antrean dan tindak lanjut
Jika run sudah aktif, pesan masuk dapat diantrekan, diarahkan ke run saat ini, atau dikumpulkan untuk giliran tindak lanjut.- Konfigurasikan melalui
messages.queue(danmessages.queue.byChannel). - Mode default adalah
steer, dengan debounce tindak lanjut 500 md ketika pengarahan fallback ke pengiriman tindak lanjut yang diantrekan. - Mode:
steer,followup,collect,steer-backlog,interrupt, dan mode lama satu-per-satuqueue.
Kepemilikan run kanal
Plugin kanal dapat mempertahankan pengurutan, melakukan debounce input, dan menerapkan backpressure transport sebelum pesan memasuki antrean sesi. Plugin kanal tidak boleh menerapkan timeout terpisah di sekitar giliran agen itu sendiri. Setelah pesan dirutekan ke sesi, pekerjaan berdurasi panjang diatur oleh siklus hidup sesi, alat, dan runtime sehingga semua kanal melaporkan dan pulih dari giliran lambat secara konsisten.Streaming, pemotongan, dan batching
Streaming blok mengirim balasan parsial saat model menghasilkan blok teks. Pemotongan menghormati batas teks kanal dan menghindari pemisahan kode berpagar. Pengaturan utama:agents.defaults.blockStreamingDefault(on|off, default mati)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(batching berbasis idle)agents.defaults.humanDelay(jeda mirip manusia di antara balasan blok)- Override kanal:
*.blockStreamingdan*.blockStreamingCoalesce(kanal non-Telegram memerlukan*.blockStreaming: trueeksplisit)
Visibilitas penalaran dan token
OpenClaw dapat mengekspos atau menyembunyikan penalaran model:/reasoning on|off|streammengontrol visibilitas.- Konten penalaran tetap dihitung terhadap penggunaan token ketika dihasilkan oleh model.
- Telegram mendukung streaming penalaran ke gelembung draf sementara yang dihapus setelah pengiriman final; gunakan
/reasoning onuntuk keluaran penalaran persisten.
Prefiks, threading, dan balasan
Pemformatan pesan keluar dipusatkan dimessages:
messages.responsePrefix,channels.<channel>.responsePrefix, danchannels.<channel>.accounts.<id>.responsePrefix(kaskade prefiks keluar), ditambahchannels.whatsapp.messagePrefix(prefiks masuk WhatsApp)- Threading balasan melalui
replyToModedan default per kanal
Balasan senyap
Token senyap persisNO_REPLY / no_reply berarti “jangan kirim balasan yang terlihat oleh pengguna”.
Ketika sebuah giliran juga memiliki media alat yang tertunda, seperti audio TTS yang dihasilkan, OpenClaw menghapus teks senyap tetapi tetap mengirim lampiran media.
OpenClaw menyelesaikan perilaku tersebut berdasarkan jenis percakapan:
- Percakapan langsung secara default tidak mengizinkan senyap dan menulis ulang balasan senyap polos menjadi fallback singkat yang terlihat.
- Grup/kanal secara default mengizinkan senyap.
- Orkestrasi internal secara default mengizinkan senyap.
/verbose adalah on atau full.
Default berada di bawah agents.defaults.silentReply dan agents.defaults.silentReplyRewrite; surfaces.<id>.silentReply dan surfaces.<id>.silentReplyRewrite dapat meng-override keduanya per surface.
Ketika sesi induk memiliki satu atau beberapa run subagen yang dibuat dan tertunda, balasan senyap polos dibuang di semua surface alih-alih ditulis ulang, sehingga induk tetap diam hingga event penyelesaian anak mengirim balasan sebenarnya.
Terkait
- Refaktor siklus hidup pesan - target desain pengiriman dan penerimaan yang tahan lama
- Streaming — pengiriman pesan real-time
- Coba ulang — perilaku coba ulang pengiriman pesan
- Antrean — antrean pemrosesan pesan
- Kanal — integrasi platform perpesanan