Channel & perutean
OpenClaw merutekan balasan kembali ke channel asal pesan. Model tidak memilih channel; perutean bersifat deterministik dan dikendalikan oleh konfigurasi host.Istilah utama
- Channel:
telegram,whatsapp,discord,irc,googlechat,slack,signal,imessage,line, ditambah extension channel.webchatadalah channel UI WebChat internal dan bukan channel outbound yang dapat dikonfigurasi. - AccountId: instance akun per channel (jika didukung).
- Akun default channel opsional:
channels.<channel>.defaultAccountmemilih akun mana yang digunakan saat jalur outbound tidak menentukanaccountId.- Dalam pengaturan multi-akun, tetapkan default eksplisit (
defaultAccountatauaccounts.default) saat dua atau lebih akun dikonfigurasi. Tanpanya, perutean fallback dapat memilih ID akun ternormalisasi pertama.
- Dalam pengaturan multi-akun, tetapkan default eksplisit (
- AgentId: penyimpanan workspace + sesi yang terisolasi (“otak”).
- SessionKey: kunci bucket yang digunakan untuk menyimpan konteks dan mengendalikan konkurensi.
Bentuk kunci sesi (contoh)
Pesan langsung disatukan ke sesi utama agen:agent:<agentId>:<mainKey>(default:agent:main:main)
- Grup:
agent:<agentId>:<channel>:group:<id> - Channel/room:
agent:<agentId>:<channel>:channel:<id>
- Thread Slack/Discord menambahkan
:thread:<threadId>ke kunci dasar. - Topik forum Telegram menyematkan
:topic:<topicId>dalam kunci grup.
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Penyematan rute DM utama
Saatsession.dmScope adalah main, pesan langsung dapat berbagi satu sesi utama.
Untuk mencegah lastRoute sesi ditimpa oleh DM non-pemilik, OpenClaw menyimpulkan pemilik yang disematkan dari allowFrom jika semua kondisi berikut benar:
allowFrommemiliki tepat satu entri non-wildcard.- Entri tersebut dapat dinormalisasi menjadi ID pengirim konkret untuk channel itu.
- Pengirim DM masuk tidak cocok dengan pemilik yang disematkan itu.
lastRoute sesi utama.
Aturan perutean (cara agen dipilih)
Perutean memilih satu agen untuk setiap pesan masuk:- Kecocokan peer persis (
bindingsdenganpeer.kind+peer.id). - Kecocokan peer induk (pewarisan thread).
- Kecocokan guild + roles (Discord) melalui
guildId+roles. - Kecocokan guild (Discord) melalui
guildId. - Kecocokan team (Slack) melalui
teamId. - Kecocokan akun (
accountIdpada channel). - Kecocokan channel (akun apa pun pada channel tersebut,
accountId: "*"). - Agen default (
agents.list[].default, jika tidak maka entri daftar pertama, fallback kemain).
peer, guildId, teamId, roles), semua field yang disediakan harus cocok agar binding tersebut berlaku.
Agen yang cocok menentukan workspace dan penyimpanan sesi mana yang digunakan.
Grup broadcast (menjalankan beberapa agen)
Grup broadcast memungkinkan Anda menjalankan beberapa agen untuk peer yang sama saat OpenClaw biasanya akan membalas (misalnya: di grup WhatsApp, setelah penyebutan/activation gating). Konfigurasi:Gambaran umum konfigurasi
agents.list: definisi agen bernama (workspace, model, dll.).bindings: memetakan channel/akun/peer masuk ke agen.
Penyimpanan sesi
Penyimpanan sesi berada di bawah direktori state (default~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- Transkrip JSONL berada di lokasi yang sama dengan penyimpanan
session.store dan templating {agentId}.
Penemuan sesi Gateway dan ACP juga memindai penyimpanan agen berbasis disk di bawah root agents/ default dan di bawah root session.store bertemplat. Penyimpanan yang ditemukan harus tetap berada di dalam root agen yang telah di-resolve tersebut dan menggunakan file sessions.json biasa. Symlink dan jalur di luar root diabaikan.
Perilaku WebChat
WebChat terpasang ke agen yang dipilih dan default ke sesi utama agen. Karena itu, WebChat memungkinkan Anda melihat konteks lintas-channel untuk agen tersebut di satu tempat.Konteks balasan
Balasan masuk mencakup:ReplyToId,ReplyToBody, danReplyToSenderjika tersedia.- Konteks kutipan ditambahkan ke
Bodysebagai blok[Replying to ...].