Kanallar ve yönlendirme
OpenClaw, yanıtları bir mesajın geldiği kanala geri yönlendirir. Model bir kanal seçmez; yönlendirme deterministiktir ve ana makine yapılandırması tarafından kontrol edilir.Temel terimler
- Kanal:
telegram,whatsapp,discord,irc,googlechat,slack,signal,imessage,lineve ayrıca uzantı kanalları.webchat, dahili WebChat UI kanalıdır ve yapılandırılabilir bir giden kanal değildir. - AccountId: kanal başına hesap örneği (destekleniyorsa).
- İsteğe bağlı kanal varsayılan hesabı:
channels.<channel>.defaultAccount, giden bir yolaccountIdbelirtmediğinde hangi hesabın kullanılacağını seçer.- Çok hesaplı kurulumlarda, iki veya daha fazla hesap yapılandırıldığında açık bir varsayılan ayarlayın (
defaultAccountveyaaccounts.default). Bu yapılmazsa, yedek yönlendirme ilk normalize edilmiş hesap kimliğini seçebilir.
- Çok hesaplı kurulumlarda, iki veya daha fazla hesap yapılandırıldığında açık bir varsayılan ayarlayın (
- AgentId: yalıtılmış bir çalışma alanı + oturum deposu (“beyin”).
- SessionKey: bağlamı depolamak ve eşzamanlılığı kontrol etmek için kullanılan kova anahtarı.
Oturum anahtarı biçimleri (örnekler)
Doğrudan mesajlar, ajanın ana oturumunda birleştirilir:agent:<agentId>:<mainKey>(varsayılan:agent:main:main)
- Gruplar:
agent:<agentId>:<channel>:group:<id> - Kanallar/odalar:
agent:<agentId>:<channel>:channel:<id>
- Slack/Discord iş parçacıkları, temel anahtara
:thread:<threadId>ekler. - Telegram forum konuları, grup anahtarına
:topic:<topicId>gömer.
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Ana DM rota sabitleme
session.dmScope değeri main olduğunda, doğrudan mesajlar tek bir ana oturumu paylaşabilir. Oturumun lastRoute değerinin sahip olmayan DM’ler tarafından üzerine yazılmasını önlemek için OpenClaw, aşağıdaki koşulların tümü doğru olduğunda allowFrom içinden sabitlenmiş bir sahip çıkarır:
allowFromtam olarak bir adet joker olmayan girdi içerir.- Bu girdi, o kanal için somut bir gönderen kimliğine normalize edilebilir.
- Gelen DM göndereni, bu sabitlenmiş sahip ile eşleşmez.
lastRoute değerini güncellemeyi atlar.
Yönlendirme kuralları (bir ajan nasıl seçilir)
Yönlendirme, her gelen mesaj için bir ajan seçer:- Tam eşleşen eş (
peer.kind+peer.idiçerenbindings). - Üst eş eşleşmesi (iş parçacığı kalıtımı).
- Sunucu + roller eşleşmesi (Discord)
guildId+rolesüzerinden. - Sunucu eşleşmesi (Discord)
guildIdüzerinden. - Takım eşleşmesi (Slack)
teamIdüzerinden. - Hesap eşleşmesi (kanaldaki
accountId). - Kanal eşleşmesi (o kanaldaki herhangi bir hesap,
accountId: "*"). - Varsayılan ajan (
agents.list[].default, aksi halde listedeki ilk girdi, son çare olarakmain).
peer, guildId, teamId, roles), o binding’in uygulanabilmesi için sağlanan tüm alanların eşleşmesi gerekir.
Eşleşen ajan, hangi çalışma alanı ve oturum deposunun kullanılacağını belirler.
Broadcast grupları (birden fazla ajan çalıştırma)
Broadcast grupları, OpenClaw’ın normalde yanıt vereceği durumlarda aynı eş için birden fazla ajan çalıştırmanıza olanak tanır (örneğin: WhatsApp gruplarında, mention/activation geçitlemesinden sonra). Yapılandırma:Yapılandırmaya genel bakış
agents.list: adlandırılmış ajan tanımları (çalışma alanı, model vb.).bindings: gelen kanalları/hesapları/eşleri ajanlara eşler.
Oturum depolama
Oturum depoları durum dizini altında bulunur (varsayılan~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- JSONL transkriptleri depo ile aynı yerde bulunur
session.store ve {agentId} şablonlaması ile geçersiz kılabilirsiniz.
Gateway ve ACP oturum keşfi ayrıca varsayılan agents/ kökü altındaki ve şablonlanmış session.store kökleri altındaki disk destekli ajan depolarını da tarar. Keşfedilen depolar, çözümlenmiş ajan kökünün içinde kalmalı ve normal bir sessions.json dosyası kullanmalıdır. Sembolik bağlantılar ve kök dışı yollar yok sayılır.
WebChat davranışı
WebChat, seçili ajana bağlanır ve varsayılan olarak ajanın ana oturumunu kullanır. Bu nedenle WebChat, o ajan için kanallar arası bağlamı tek bir yerde görmenizi sağlar.Yanıt bağlamı
Gelen yanıtlar şunları içerir:- Kullanılabiliyorsa
ReplyToId,ReplyToBodyveReplyToSender. - Alıntılanan bağlam,
Bodysonuna bir[Replying to ...]bloğu olarak eklenir.