Configuration
Gruplar
OpenClaw grup sohbetlerini yüzeyler genelinde tutarlı şekilde ele alır: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.
Başlangıç tanıtımı (2 dakika)
OpenClaw kendi mesajlaşma hesaplarınızda "yaşar". Ayrı bir WhatsApp bot kullanıcısı yoktur. Bir grupta siz varsa, OpenClaw o grubu görebilir ve orada yanıt verebilir.
Varsayılan davranış:
- Gruplar kısıtlanır (
groupPolicy: "allowlist"). - Açıkça bahsetme kapısını devre dışı bırakmadığınız sürece yanıtlar bahsetme gerektirir.
- Gruplarda/kanallarda normal nihai yanıtlar varsayılan olarak özeldir. Görünür oda çıktısı
messagearacını kullanır.
Çeviri: izin listesindeki gönderenler, OpenClaw’dan bahsederek onu tetikleyebilir.
Hızlı akış (bir grup mesajına ne olur):
groupPolicy? disabled -> drop
groupPolicy? allowlist -> group allowed? no -> drop
requireMention? yes -> mentioned? no -> store for context only
otherwise -> reply
Görünür yanıtlar
Grup/kanal odaları için OpenClaw varsayılan olarak messages.groupChat.visibleReplies: "message_tool" kullanır.
openclaw doctor --fix, bunu eksik bırakan yapılandırılmış kanal yapılandırmalarına bu varsayılanı yazar.
Bu, aracının turu hâlâ işlediği ve bellek/oturum durumunu güncelleyebildiği, ancak normal nihai yanıtının odaya otomatik olarak geri gönderilmediği anlamına gelir. Görünür şekilde konuşmak için aracı message(action=send) kullanır.
Bu varsayılan, araçları güvenilir şekilde çağıran bir modele/çalışma zamanına bağlıdır. Günlükler asistan metni gösteriyor ama didSendViaMessagingTool: false ise model, mesaj aracını çağırmak yerine özel olarak yanıtlamıştır. Bu bir Discord/Slack/Telegram gönderme hatası değildir. Grup/kanal oturumları için araç çağrısında güvenilir bir model kullanın veya eski görünür nihai yanıtları geri getirmek için messages.groupChat.visibleReplies: "automatic" ayarlayın.
Mesaj aracı etkin araç ilkesi altında kullanılamıyorsa OpenClaw, yanıtı sessizce bastırmak yerine otomatik görünür yanıtlara geri döner.
openclaw doctor bu uyumsuzluk hakkında uyarır.
Doğrudan sohbetler ve diğer tüm kaynak turları için aynı yalnızca-araç görünür yanıt davranışını genel olarak uygulamak üzere messages.visibleReplies: "message_tool" kullanın. Test düzenekleri bunu ayarlanmamış varsayılanları olarak da seçebilir; Codex düzeneği Codex modu doğrudan sohbetleri için bunu yapar. messages.groupChat.visibleReplies, grup/kanal odaları için daha özel geçersiz kılma olarak kalır.
Bu, çoğu bekleme modu turunda modeli NO_REPLY yanıtını vermeye zorlayan eski kalıbın yerini alır. Yalnızca araç modunda görünür hiçbir şey yapmamak, basitçe mesaj aracını çağırmamak anlamına gelir.
Aracı yalnızca araç modunda çalışırken yazıyor göstergeleri hâlâ gönderilir. Bu turlar için varsayılan grup yazıyor modu "message" değerinden "instant" değerine yükseltilir, çünkü aracı mesaj aracını çağırıp çağırmayacağına karar vermeden önce normal asistan mesaj metni hiç oluşmayabilir. Açık yazıyor modu yapılandırması yine önceliklidir.
Grup/kanal odaları için eski otomatik nihai yanıtları geri getirmek için:
{
messages: {
groupChat: {
visibleReplies: "automatic",
},
},
}
Gateway, dosya kaydedildikten sonra messages yapılandırmasını sıcak yeniden yükler. Yalnızca dağıtımda dosya izleme veya yapılandırma yeniden yükleme devre dışıysa yeniden başlatın.
Her kaynak sohbet için görünür çıktının mesaj aracı üzerinden gitmesini zorunlu kılmak için:
{
messages: {
visibleReplies: "message_tool",
},
}
Yerel eğik çizgi komutları (Discord, Telegram ve yerel komut desteği olan diğer yüzeyler) visibleReplies: "message_tool" ayarını atlar ve kanalın yerel komut kullanıcı arayüzünün beklediği yanıtı alması için her zaman görünür şekilde yanıt verir. Bu yalnızca doğrulanmış yerel komut turları için geçerlidir; metin olarak yazılan /... komutları ve sıradan sohbet turları yapılandırılmış grup varsayılanını izlemeye devam eder.
Bağlam görünürlüğü ve izin listeleri
Grup güvenliğinde iki farklı kontrol yer alır:
- Tetikleme yetkilendirmesi: aracıyı kimlerin tetikleyebileceği (
groupPolicy,groups,groupAllowFrom, kanala özgü izin listeleri). - Bağlam görünürlüğü: modele hangi ek bağlamın enjekte edildiği (yanıt metni, alıntılar, iş parçacığı geçmişi, iletilmiş üst veriler).
OpenClaw varsayılan olarak normal sohbet davranışına öncelik verir ve bağlamı çoğunlukla alındığı gibi tutar. Bu, izin listelerinin öncelikle eylemleri kimin tetikleyebileceğine karar verdiği, her alıntılanmış veya geçmiş parçacık için evrensel bir redaksiyon sınırı olmadığı anlamına gelir.
Geçerli davranış kanala özgüdür
- Bazı kanallar belirli yollarda ek bağlam için zaten gönderene dayalı filtreleme uygular (örneğin Slack iş parçacığı tohumlama, Matrix yanıt/iş parçacığı aramaları).
- Diğer kanallar alıntı/yanıt/iletme bağlamını hâlâ alındığı gibi geçirir.
Güçlendirme yönü (planlandı)
contextVisibility: "all"(varsayılan) geçerli alındığı-gibi davranışı korur.contextVisibility: "allowlist"ek bağlamı izin listesindeki gönderenlere göre filtreler.contextVisibility: "allowlist_quote",allowlistdeğerine ek olarak açık bir alıntı/yanıt istisnasıdır.
Bu güçlendirme modeli kanallar genelinde tutarlı şekilde uygulanana kadar yüzeylere göre farklılıklar bekleyin.
İstiyorsanız...
| Amaç | Ayarlanacak değer |
|---|---|
| Tüm gruplara izin ver ama yalnızca @bahsetmelerde yanıtla | groups: { "*": { requireMention: true } } |
| Tüm grup yanıtlarını devre dışı bırak | groupPolicy: "disabled" |
| Yalnızca belirli gruplar | groups: { "<group-id>": { ... } } ("*" anahtarı yok) |
| Gruplarda yalnızca siz tetikleyebilirsiniz | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
| Kanallar genelinde tek bir güvenilir gönderen kümesini yeniden kullan | groupAllowFrom: ["accessGroup:operators"] |
Yeniden kullanılabilir gönderen izin listeleri için bkz. Erişim grupları.
Oturum anahtarları
- Grup oturumları
agent:<agentId>:<channel>:group:<id>oturum anahtarlarını kullanır (odalar/kanallaragent:<agentId>:<channel>:channel:<id>kullanır). - Telegram forum konuları grup kimliğine
:topic:<threadId>ekler, böylece her konunun kendi oturumu olur. - Doğrudan sohbetler ana oturumu kullanır (veya yapılandırılmışsa gönderen başına).
- Heartbeat grup oturumları için atlanır.
Kalıp: kişisel DM’ler + herkese açık gruplar (tek aracı)
Evet — "kişisel" trafiğiniz DM’ler ve "herkese açık" trafiğiniz gruplar ise bu iyi çalışır.
Neden: tek aracılı modda DM’ler genellikle main oturum anahtarına (agent:main:main) düşerken, gruplar her zaman main olmayan oturum anahtarlarını (agent:main:<channel>:group:<id>) kullanır. mode: "non-main" ile korumalı alanı etkinleştirirseniz bu grup oturumları yapılandırılmış korumalı alan arka ucunda çalışırken ana DM oturumunuz ana makinede kalır. Bir arka uç seçmezseniz varsayılan arka uç Docker’dır.
Bu size tek bir aracı "beyni" (paylaşılan çalışma alanı + bellek) ama iki yürütme duruşu verir:
- DM’ler: tam araçlar (ana makine)
- Gruplar: korumalı alan + kısıtlı araçlar
DM’ler ana makinede, gruplar korumalı alanda
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // groups/channels are non-main -> sandboxed
scope: "session", // strongest isolation (one container per group/channel)
workspaceAccess: "none",
},
},
},
tools: {
sandbox: {
tools: {
// If allow is non-empty, everything else is blocked (deny still wins).
allow: ["group:messaging", "group:sessions"],
deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"],
},
},
},
}
Gruplar yalnızca izin listesindeki bir klasörü görür
"Ana makine erişimi yok" yerine "gruplar yalnızca X klasörünü görebilir" mi istiyorsunuz? workspaceAccess: "none" değerini koruyun ve yalnızca izin listesindeki yolları korumalı alana bağlayın:
{
agents: {
defaults: {
sandbox: {
mode: "non-main",
scope: "session",
workspaceAccess: "none",
docker: {
binds: [
// hostPath:containerPath:mode
"/home/user/FriendsShared:/data:ro",
],
},
},
},
},
}
İlgili:
- Yapılandırma anahtarları ve varsayılanlar: Gateway yapılandırması
- Bir aracın neden engellendiğini hata ayıklama: Korumalı Alan ve Araç İlkesi ve Yükseltilmiş
- Bağlama ayrıntıları: Korumalı alana alma
Görüntü etiketleri
- Kullanıcı arayüzü etiketleri mevcut olduğunda
displayNamekullanır ve<channel>:<token>olarak biçimlendirilir. #roomodalar/kanallar için ayrılmıştır; grup sohbetlerig-<slug>kullanır (küçük harf, boşluklar ->-,#@+._-koru).
Grup ilkesi
Grup/oda mesajlarının kanal başına nasıl ele alınacağını kontrol edin:
{
channels: {
whatsapp: {
groupPolicy: "disabled", // "open" | "disabled" | "allowlist"
groupAllowFrom: ["+15551234567"],
},
telegram: {
groupPolicy: "disabled",
groupAllowFrom: ["123456789"], // numeric Telegram user id (wizard can resolve @username)
},
signal: {
groupPolicy: "disabled",
groupAllowFrom: ["+15551234567"],
},
imessage: {
groupPolicy: "disabled",
groupAllowFrom: ["chat_id:123"],
},
msteams: {
groupPolicy: "disabled",
groupAllowFrom: ["[email protected]"],
},
discord: {
groupPolicy: "allowlist",
guilds: {
GUILD_ID: { channels: { help: { allow: true } } },
},
},
slack: {
groupPolicy: "allowlist",
channels: { "#general": { allow: true } },
},
matrix: {
groupPolicy: "allowlist",
groupAllowFrom: ["@owner:example.org"],
groups: {
"!roomId:example.org": { enabled: true },
"#alias:example.org": { enabled: true },
},
},
},
}
| İlke | Davranış |
|---|---|
"open" |
Gruplar izin listelerini atlar; bahsetme kapısı yine uygulanır. |
"disabled" |
Tüm grup mesajlarını tamamen engeller. |
"allowlist" |
Yalnızca yapılandırılmış izin listesiyle eşleşen gruplara/odalara izin verir. |
Kanal başına notlar
groupPolicy, mention-gating'den ayrıdır (bu @mentions gerektirir).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo:
groupAllowFromkullanın (geri dönüş: açıkallowFrom). - Signal:
groupAllowFrom, gelen Signal grup kimliğiyle veya gönderenin telefon/UUID değeriyle eşleşebilir. - DM eşleştirme onayları (
*-allowFromdepo girdileri) yalnızca DM erişimine uygulanır; grup gönderen yetkilendirmesi grup izin listelerinde açık kalır. - Discord: izin listesi
channels.discord.guilds.<id>.channelskullanır. - Slack: izin listesi
channels.slack.channelskullanır. - Matrix: izin listesi
channels.matrix.groupskullanır. Oda kimliklerini veya takma adları tercih edin; katılınmış oda adı araması en iyi çaba esaslıdır ve çözülemeyen adlar çalışma zamanında yok sayılır. Gönderenleri kısıtlamak içinchannels.matrix.groupAllowFromkullanın; oda başınausersizin listeleri de desteklenir. - Grup DM'leri ayrı denetlenir (
channels.discord.dm.*,channels.slack.dm.*). - Telegram izin listesi kullanıcı kimlikleriyle (
"123456789","telegram:123456789","tg:123456789") veya kullanıcı adlarıyla ("@alice"ya da"alice") eşleşebilir; önekler büyük/küçük harfe duyarsızdır. - Varsayılan değer
groupPolicy: "allowlist"olur; grup izin listeniz boşsa grup mesajları engellenir. - Çalışma zamanı güvenliği: bir sağlayıcı bloğu tamamen eksik olduğunda (
channels.<provider>yoksa), grup ilkesichannels.defaults.groupPolicydeğerini devralmak yerine kapalı kalacak şekilde hata veren bir moda (genellikleallowlist) geri döner.
Hızlı zihinsel model (grup mesajları için değerlendirme sırası):
groupPolicy
groupPolicy (open/disabled/allowlist).
Grup izin listeleri
Grup izin listeleri (*.groups, *.groupAllowFrom, kanala özgü izin listesi).
Mention gating
Mention gating (requireMention, /activation).
Mention gating (varsayılan)
Grup mesajları, grup başına aksi geçersiz kılınmadıkça mention gerektirir. Varsayılanlar her alt sistemde *.groups."*" altında bulunur.
Kanal yanıt meta verilerini desteklediğinde bir bot mesajını yanıtlamak örtük mention sayılır. Bir bot mesajından alıntı yapmak da alıntı meta verilerini açığa çıkaran kanallarda örtük mention sayılabilir. Geçerli yerleşik durumlar Telegram, WhatsApp, Slack, Discord, Microsoft Teams ve ZaloUser içerir.
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
"[email protected]": { requireMention: false },
},
},
telegram: {
groups: {
"*": { requireMention: true },
"123456789": { requireMention: false },
},
},
imessage: {
groups: {
"*": { requireMention: true },
"123": { requireMention: false },
},
},
},
agents: {
list: [
{
id: "main",
groupChat: {
mentionPatterns: ["@openclaw", "openclaw", "\\+15555550123"],
historyLimit: 50,
},
},
],
},
}
Mention gating notları
mentionPatterns, büyük/küçük harfe duyarsız güvenli regex kalıplarıdır; geçersiz kalıplar ve güvenli olmayan iç içe tekrar biçimleri yok sayılır.- Açık mention sağlayan yüzeyler yine geçer; kalıplar bir geri dönüş yoludur.
- Ajan başına geçersiz kılma:
agents.list[].groupChat.mentionPatterns(birden fazla ajan aynı grubu paylaştığında kullanışlıdır). - Mention gating yalnızca mention algılama mümkün olduğunda zorlanır (yerel mention'lar veya
mentionPatternsyapılandırılmıştır). - Bir grubu veya göndereni izin listesine almak mention gating'i devre dışı bırakmaz; tüm mesajların tetiklemesi gerektiğinde o grubun
requireMentiondeğerinifalseyapın. - Grup sohbeti istem bağlamı çözümlenen sessiz yanıt talimatını her turda taşır; çalışma alanı dosyaları
NO_REPLYmekaniklerini yinelememelidir. - Sessiz yanıtlara izin verilen gruplar, temiz boş veya yalnızca akıl yürütme içeren model turlarını
NO_REPLYile eşdeğer şekilde sessiz kabul eder. Doğrudan sohbetler bunu yalnızca doğrudan sessiz yanıtlara açıkça izin verildiğinde yapar; aksi halde boş yanıtlar başarısız ajan turları olarak kalır. - Discord varsayılanları
channels.discord.guilds."*"içinde bulunur (guild/kanal başına geçersiz kılınabilir). - Grup geçmişi bağlamı kanallar arasında tek biçimde sarmalanır ve yalnızca bekleyen iletilerden oluşur (mention gating nedeniyle atlanan mesajlar); genel varsayılan için
messages.groupChat.historyLimit, geçersiz kılmalar içinchannels.<channel>.historyLimit(veyachannels.<channel>.accounts.*.historyLimit) kullanın. Devre dışı bırakmak için0ayarlayın.
Grup/kanal araç kısıtlamaları (isteğe bağlı)
Bazı kanal yapılandırmaları, hangi araçların belirli bir grup/oda/kanal içinde kullanılabileceğini kısıtlamayı destekler.
tools: tüm grup için araçlara izin verin/reddedin.toolsBySender: grup içinde gönderen başına geçersiz kılmalar. Açık anahtar önekleri kullanın:id:<senderId>,e164:<phone>,username:<handle>,name:<displayName>ve"*"joker karakteri. Eski öneksiz anahtarlar hâlâ kabul edilir ve yalnızcaid:olarak eşleştirilir.
Çözümleme sırası (en özel olan kazanır):
Grup toolsBySender
Grup/kanal toolsBySender eşleşmesi.
Grup tools
Grup/kanal tools.
Varsayılan toolsBySender
Varsayılan ("*" ) toolsBySender eşleşmesi.
Varsayılan tools
Varsayılan ("*" ) tools.
Örnek (Telegram):
{
channels: {
telegram: {
groups: {
"*": { tools: { deny: ["exec"] } },
"-1001234567890": {
tools: { deny: ["exec", "read", "write"] },
toolsBySender: {
"id:123456789": { alsoAllow: ["exec"] },
},
},
},
},
},
}
Grup izin listeleri
channels.whatsapp.groups, channels.telegram.groups veya channels.imessage.groups yapılandırıldığında, anahtarlar grup izin listesi olarak davranır. Varsayılan mention davranışını ayarlamaya devam ederken tüm gruplara izin vermek için "*" kullanın.
Yaygın amaçlar (kopyala/yapıştır):
Tüm grup yanıtlarını devre dışı bırak
{
channels: { whatsapp: { groupPolicy: "disabled" } },
}
Yalnızca belirli gruplara izin ver (WhatsApp)
{
channels: {
whatsapp: {
groups: {
"[email protected]": { requireMention: true },
"[email protected]": { requireMention: false },
},
},
},
}
Tüm gruplara izin ver ancak mention gerektir
{
channels: {
whatsapp: {
groups: { "*": { requireMention: true } },
},
},
}
Yalnızca sahip tetikleyicileri (WhatsApp)
{
channels: {
whatsapp: {
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"],
groups: { "*": { requireMention: true } },
},
},
}
Etkinleştirme (yalnızca sahip)
Grup sahipleri grup başına etkinleştirmeyi açıp kapatabilir:
/activation mention/activation always
Sahip, channels.whatsapp.allowFrom tarafından belirlenir (ayarlanmamışsa botun kendi E.164 değeri). Komutu bağımsız bir mesaj olarak gönderin. Diğer yüzeyler şu anda /activation öğesini yok sayar.
Bağlam alanları
Grup gelen yükleri şunları ayarlar:
ChatType=groupGroupSubject(biliniyorsa)GroupMembers(biliniyorsa)WasMentioned(mention gating sonucu)- Telegram forum konuları ayrıca
MessageThreadIdveIsForumiçerir.
Kanala özgü notlar:
- BlueBubbles,
GroupMembersdoldurulmadan önce adsız macOS grup katılımcılarını yerel Contacts veritabanından isteğe bağlı olarak zenginleştirebilir. Bu varsayılan olarak kapalıdır ve yalnızca normal grup geçitlemesi geçtikten sonra çalışır.
Ajan sistem istemi, yeni bir grup oturumunun ilk turunda bir grup girişi içerir. Modele insan gibi yanıt vermesini, Markdown tablolarından kaçınmasını, boş satırları en aza indirip normal sohbet aralığını izlemesini ve değişmez \n dizilerini yazmaktan kaçınmasını hatırlatır. Kanal kaynaklı grup adları ve katılımcı etiketleri satır içi sistem talimatları olarak değil, çitlenmiş güvenilmeyen meta veri olarak işlenir.
iMessage ayrıntıları
- Yönlendirme veya izin listesine alma sırasında
chat_id:<id>tercih edin. - Sohbetleri listele:
imsg chats --limit 20. - Grup yanıtları her zaman aynı
chat_iddeğerine geri gider.
WhatsApp sistem istemleri
Grup ve doğrudan istem çözümlemesi, joker karakter davranışı ve hesap geçersiz kılma semantiklerini içeren kanonik WhatsApp sistem istemi kuralları için WhatsApp bölümüne bakın.
WhatsApp ayrıntıları
Yalnızca WhatsApp davranışı (geçmiş enjeksiyonu, mention işleme ayrıntıları) için Grup mesajları bölümüne bakın.