Configuration
Kanal yönlendirme
Kanallar ve yönlendirme
OpenClaw, yanıtları 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. Varsayılan DM kapsamında, her kanaldan gelen doğrudan mesajlar aracının ana oturumunda birleşir.
Temel terimler
- Kanal:
discord,googlechat,imessage,irc,line,signal,slack,telegramveyawhatsappgibi paketle birlikte gelen bir kanal plugini ve ayrıca kurulu plugin kanalları.webchat, dahili WebChat kullanıcı arayüzü 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ı varsayılan kanal hesabı:
channels.<channel>.defaultAccount, bir giden 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 (
defaultAccountveyadefaultadlı bir hesap) belirleyin. Bu olmadan geri dönüş yönlendirmesi, normalleştirilmiş ilk hesap kimliğini seçebilir.
- Çok hesaplı kurulumlarda, iki veya daha fazla hesap yapılandırıldığında açık bir varsayılan (
- 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 bölüm anahtarı.
Giden hedef önekleri
Açık giden hedefler, telegram:123 veya tg:123 gibi bir sağlayıcı öneki içerebilir. Çekirdek, bu öneki yalnızca seçilen kanal last olduğunda veya başka şekilde çözümlenemediğinde ve yalnızca yüklenen plugin bu öneki bildirdiğinde kanal seçimi ipucu olarak değerlendirir. Çağıran zaten açık bir kanal seçmişse sağlayıcı öneki bu kanalla eşleşmelidir; telegram:123 hedefine WhatsApp üzerinden teslimat gibi kanallar arası birleşimler, plugine özgü hedef normalleştirmesinden önce başarısız olur.
channel:<id>, user:<id>, room:<id>, thread:<id>, imessage:<handle> ve sms:<number> gibi hedef türü ve hizmet önekleri, seçilen kanalın söz dizimi içinde kalır. Bunlar sağlayıcıyı kendi başlarına seçmez.
Oturum anahtarı biçimleri (örnekler)
Doğrudan mesajlar varsayılan olarak aracının ana oturumunda birleştirilir:
agent:<agentId>:<mainKey>(varsayılan:agent:main:main)
session.dmScope, DM birleştirmesini kontrol eder: main (varsayılan) tek bir ana
oturumu paylaşırken per-peer, per-channel-peer ve per-account-channel-peer
DM'leri ayrı oturumlarda tutar. Bir yönlendirme bağlaması, eşleşen eşler için kapsamı
bindings[].session.dmScope aracılığıyla geçersiz kılabilir.
Doğrudan mesaj konuşma geçmişi ana oturumla paylaşılsa bile korumalı alan ve araç politikası, harici DM'ler için hesap başına türetilmiş bir doğrudan sohbet çalışma zamanı anahtarı kullanır; böylece kanaldan kaynaklanan mesajlar yerel ana oturum çalıştırmaları gibi değerlendirilmez.
Gruplar ve kanallar, kanal başına yalıtılmış kalır:
- Gruplar:
agent:<agentId>:<channel>:group:<id> - Kanallar/odalar:
agent:<agentId>:<channel>:channel:<id>
İleti dizileri:
- Slack/Discord ileti dizileri, temel anahtara
:thread:<threadId>ekler. - Telegram forum konuları, grup anahtarına
:topic:<topicId>yerleştirir.
Örnekler:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Ana DM yönlendirmesini sabitleme
session.dmScope, main olduğunda doğrudan mesajlar tek bir ana oturumu paylaşabilir.
Oturumun lastRoute değerinin sahip olmayan kişilerin DM'leri tarafından üzerine yazılmasını önlemek için
OpenClaw, aşağıdakilerin tümü doğru olduğunda allowFrom üzerinden sabitlenmiş bir sahip çıkarımı yapar:
allowFromtam olarak bir joker karakter içermeyen girdiye sahiptir.- Girdi, bu kanal için somut bir gönderen kimliğine normalleştirilebilir.
- Gelen DM'nin göndereni, sabitlenmiş bu sahiple eşleşmez.
Bu eşleşmeme durumunda OpenClaw, gelen oturum meta verilerini yine kaydeder ancak
ana oturumun lastRoute değerini güncellemeyi atlar.
Korumalı gelen kayıt
Kanal pluginleri, korumalı bir yolun yeni bir OpenClaw oturumu oluşturmaması gerektiğinde
gelen oturum kaydını createIfMissing: false olarak işaretleyebilir. Bu modda
OpenClaw, mevcut bir oturumun meta verilerini ve lastRoute değerini güncelleyebilir ancak
yalnızca bir mesaj gözlemlendi diye yalnızca yönlendirmeye özgü bir oturum girdisi oluşturmaz.
Yönlendirme kuralları (bir araç nasıl seçilir)
Yönlendirme, her gelen mesaj için bir araç seçer:
- Tam eş eşleşmesi (
bindingsilepeer.kind+peer.id). - Üst eş eşleşmesi (ileti dizisi devralımı).
- Eş joker karakter eşleşmesi (bir eş türü için
peer.id: "*"). - Sunucu + roller eşleşmesi (Discord),
guildId+rolesaracılığıyla. - Sunucu eşleşmesi (Discord),
guildIdaracılığıyla. - Ekip eşleşmesi (Slack),
teamIdaracılığıyla. - Hesap eşleşmesi (kanaldaki
accountId). - Kanal eşleşmesi (o kanaldaki herhangi bir hesap,
accountId: "*"). - Varsayılan araç (
agents.entries.*.default; yoksa listedeki ilk girdi, son çare olarakmain).
Bir bağlama birden fazla eşleştirme alanı (peer, guildId, teamId, roles) içerdiğinde, bağlamanın uygulanması için sağlanan tüm alanların eşleşmesi gerekir.
Eşleşen araç, hangi çalışma alanının ve oturum deposunun kullanılacağını belirler.
Yayın grupları (birden fazla araç çalıştırma)
Yayın grupları, OpenClaw'ın normalde yanıt vereceği durumlarda aynı eş için birden fazla araç çalıştırmanıza olanak tanır (örneğin WhatsApp gruplarında, bahsetme/etkinleştirme denetiminden sonra).
Yapılandırma:
{ broadcast: { strategy: "parallel", "120363403215116621@g.us": ["alfred", "baerbel"], "+15555550123": ["support", "logger"], },}Bkz. Yayın Grupları.
Yapılandırmaya genel bakış
agents.entries: adlandırılmış araç tanımları (çalışma alanı, model vb.).bindings: gelen kanalları/hesapları/eşleri araçlarla eşleştirir.
Örnek:
{ 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" }, ],}Oturum depolama
Çalışma zamanı oturum satırları, durum dizini altındaki her aracının SQLite veritabanında
bulunur (varsayılan ~/.openclaw):
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
Eski kurulumlarda, ~/.openclaw/agents/<agentId>/sessions/ altında eski transkript JSONL dosyaları ve bir sessions.json satır
deposu bulunabilir. Gateway başlatma işlemi ve
openclaw doctor --fix, etkin eski satırları/geçmişi otomatik olarak SQLite'a aktarır.
Açık geçiş kanıtına ihtiyaç duyduğunuzda openclaw doctor --session-sqlite inspect --session-sqlite-all-agents ve
Doctor doğrulama sırasını kullanın.
Geçiş ve çevrimdışı bakım iş akışları için session.store ve {agentId}
şablonlaması aracılığıyla eski bir depo yolu seçmeye devam edebilirsiniz.
Gateway ve ACP oturum keşfi ayrıca varsayılan agents/ kökü ve şablonlanmış
session.store kökleri altındaki disk destekli araç depolarını tarar. Keşfedilen
depolar, çözümlenen araç kökü içinde kalmalı ve normal bir eski
sessions.json dosyası kullanmalıdır. Sembolik bağlantılar ve kök dışındaki yollar yok sayılır.
WebChat davranışı
WebChat, seçilen araca bağlanır ve varsayılan olarak aracın ana oturumunu kullanır. Bu nedenle WebChat, söz konusu aracın kanallar arası bağlamını tek bir yerde görmenizi sağlar.
Yanıt bağlamı
Gelen yanıtlar şunları içerir:
- Kullanılabilir olduğunda
ReplyToId,ReplyToBodyveReplyToSender. - Alıntılanan bağlam,
Bodyöğesine bir[Replying to ...]bloğu olarak eklenir.
Bu, tüm kanallarda tutarlıdır.