Configuration
Perutean saluran
Saluran & perutean
OpenClaw merutekan balasan kembali ke saluran asal sebuah pesan. Model tidak memilih saluran; perutean bersifat deterministik dan dikendalikan oleh konfigurasi host.
Istilah kunci
- Saluran:
telegram,whatsapp,discord,irc,googlechat,slack,signal,imessage,line, plus saluran Plugin.webchatadalah saluran UI WebChat internal dan bukan saluran keluar yang dapat dikonfigurasi. - AccountId: instance akun per saluran (jika didukung).
- Akun default saluran opsional:
channels.<channel>.defaultAccountmemilih akun mana yang digunakan saat jalur keluar tidak menentukanaccountId.- Dalam penyiapan multi-akun, tetapkan default eksplisit (
defaultAccountatauaccounts.default) saat dua akun atau lebih dikonfigurasi. Tanpanya, perutean fallback dapat memilih ID akun ternormalisasi pertama.
- Dalam penyiapan multi-akun, tetapkan default eksplisit (
- AgentId: workspace terisolasi + penyimpanan sesi ("otak").
- SessionKey: kunci bucket yang digunakan untuk menyimpan konteks dan mengontrol konkurensi.
Prefiks target keluar
Target keluar eksplisit dapat menyertakan prefiks penyedia, seperti telegram:123 atau tg:123. Core memperlakukan prefiks tersebut sebagai petunjuk pemilihan saluran hanya ketika saluran yang dipilih adalah last atau belum terselesaikan, dan hanya ketika Plugin yang dimuat mengiklankan prefiks tersebut. Jika pemanggil sudah memilih saluran eksplisit, prefiks penyedia harus cocok dengan saluran tersebut; kombinasi lintas saluran seperti pengiriman WhatsApp ke telegram:123 gagal sebelum normalisasi target khusus Plugin.
Prefiks jenis target dan layanan seperti channel:<id>, user:<id>, room:<id>, thread:<id>, imessage:<handle>, dan sms:<number> tetap berada di dalam tata bahasa saluran yang dipilih. Prefiks tersebut tidak memilih penyedia dengan sendirinya.
Bentuk kunci sesi (contoh)
Pesan langsung diciutkan ke sesi utama agen secara default:
agent:<agentId>:<mainKey>(default:agent:main:main)
Bahkan ketika riwayat percakapan pesan langsung dibagikan dengan utama, kebijakan sandbox dan tool menggunakan kunci runtime obrolan langsung per akun turunan untuk DM eksternal agar pesan yang berasal dari saluran tidak diperlakukan seperti run sesi utama lokal.
Grup dan saluran tetap terisolasi per saluran:
- Grup:
agent:<agentId>:<channel>:group:<id> - Saluran/ruangan:
agent:<agentId>:<channel>:channel:<id>
Thread:
- Thread Slack/Discord menambahkan
:thread:<threadId>ke kunci dasar. - Topik forum Telegram menyematkan
:topic:<topicId>dalam kunci grup.
Contoh:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Penyematan rute DM utama
Ketika session.dmScope adalah main, pesan langsung dapat berbagi satu sesi utama.
Untuk mencegah lastRoute sesi ditimpa oleh DM non-pemilik,
OpenClaw menyimpulkan pemilik tersemat dari allowFrom ketika semua ini benar:
allowFrommemiliki tepat satu entri non-wildcard.- Entri tersebut dapat dinormalisasi menjadi ID pengirim konkret untuk saluran tersebut.
- Pengirim DM masuk tidak cocok dengan pemilik tersemat tersebut.
Dalam kasus ketidakcocokan tersebut, OpenClaw tetap mencatat metadata sesi masuk, tetapi
melewati pembaruan lastRoute sesi utama.
Pencatatan masuk terlindungi
Plugin saluran dapat menandai catatan sesi masuk sebagai createIfMissing: false
ketika jalur terlindungi tidak boleh membuat sesi OpenClaw baru. Dalam mode tersebut,
OpenClaw dapat memperbarui metadata dan lastRoute untuk sesi yang ada, tetapi
tidak membuat entri sesi hanya-rute hanya karena sebuah pesan diamati.
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 + peran (Discord) melalui
guildId+roles. - Kecocokan guild (Discord) melalui
guildId. - Kecocokan tim (Slack) melalui
teamId. - Kecocokan akun (
accountIdpada saluran). - Kecocokan saluran (akun apa pun pada saluran tersebut,
accountId: "*"). - Agen default (
agents.list[].default, jika tidak ada entri daftar pertama, fallback kemain).
Ketika binding menyertakan beberapa bidang pencocokan (peer, guildId, teamId, roles), semua bidang yang disediakan harus cocok agar binding tersebut diterapkan.
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 ketika OpenClaw biasanya akan membalas (misalnya: di grup WhatsApp, setelah gating penyebutan/aktivasi).
Konfigurasi:
{
broadcast: {
strategy: "parallel",
"[email protected]": ["alfred", "baerbel"],
"+15555550123": ["support", "logger"],
},
}
Lihat: Grup Broadcast.
Ringkasan konfigurasi
agents.list: definisi agen bernama (workspace, model, dll.).bindings: memetakan saluran/akun/peer masuk ke agen.
Contoh:
{
agents: {
list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }],
},
bindings: [
{ match: { channel: "slack", teamId: "T123" }, agentId: "support" },
{ match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" },
],
}
Penyimpanan sesi
Penyimpanan sesi berada di bawah direktori state (default ~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- Transkrip JSONL berada berdampingan dengan penyimpanan
Anda dapat mengganti jalur penyimpanan melalui session.store dan templating {agentId}.
Penemuan sesi Gateway dan ACP juga memindai penyimpanan agen berbasis disk di bawah root
default agents/ dan di bawah root session.store hasil template. Penyimpanan yang ditemukan
harus tetap berada di dalam root agen yang diselesaikan tersebut dan menggunakan file
sessions.json reguler. Symlink dan jalur di luar root diabaikan.
Perilaku WebChat
WebChat terhubung ke agen yang dipilih dan secara default menggunakan sesi utama agen tersebut. Karena itu, WebChat memungkinkan Anda melihat konteks lintas saluran untuk agen tersebut di satu tempat.
Konteks balasan
Balasan masuk menyertakan:
ReplyToId,ReplyToBody, danReplyToSenderjika tersedia.- Konteks yang dikutip ditambahkan ke
Bodysebagai blok[Replying to ...].
Ini konsisten di semua saluran.