Gateway
Yapılandırma — kanallar
channels.* altındaki kanal bazlı yapılandırma anahtarları: DM ve grup erişimi, çok hesaplı kurulumlar, bahsetme zorunluluğu ve Slack, Discord, Telegram, WhatsApp, Matrix, iMessage ile diğer kanal pluginleri için kanal bazlı anahtarlar.
Aracılar, araçlar, gateway çalışma zamanı ve diğer üst düzey anahtarlar için Yapılandırma başvurusu bölümüne bakın.
Kanallar
Her kanal, yapılandırma bölümü mevcut olduğunda otomatik olarak başlar (enabled: false olmadığı sürece). Telegram ve iMessage, çekirdek openclaw paketinin içinde sunulur. Diğer resmî kanallar (Discord, Slack, WhatsApp, Matrix, Microsoft Teams, IRC, Google Chat, Signal, Mattermost ve daha fazlası), openclaw plugins install <spec> ile ayrı pluginler olarak kurulur; tam liste ve kurulum özellikleri için Kanallar bölümüne bakın.
DM ve grup erişimi
Tüm kanallar DM ilkelerini ve grup ilkelerini destekler:
| DM ilkesi | Davranış |
|---|---|
pairing (varsayılan) |
Bilinmeyen gönderenlere tek kullanımlık bir eşleştirme kodu verilir; sahibin onaylaması gerekir |
allowlist |
Yalnızca allowFrom içindeki (veya eşleştirilmiş izin deposundaki) gönderenler |
open |
Gelen tüm DM'lere izin ver (allowFrom: ["*"] gerektirir) |
disabled |
Gelen tüm DM'leri yok say |
| Grup ilkesi | Davranış |
|---|---|
allowlist (varsayılan) |
Yalnızca yapılandırılmış izin listesiyle eşleşen gruplar |
open |
Grup izin listelerini atla (bahsetme zorunluluğu uygulanmaya devam eder) |
disabled |
Tüm grup/oda iletilerini engelle |
Kanal modeli geçersiz kılmaları
Belirli kanal kimliklerini veya doğrudan ileti eşlerini bir modele sabitlemek için channels.modelByChannel kullanın. Değerler provider/model veya yapılandırılmış model takma adlarını kabul eder. Kanal eşlemesi yalnızca bir oturumda zaten etkin bir model geçersiz kılması bulunmadığında uygulanır (örneğin, /model aracılığıyla ayarlanan bir değer).
Grup/iş parçacığı konuşmalarında anahtarlar kanala özgü grup kimlikleri, konu kimlikleri veya kanal adlarıdır. Doğrudan ileti (DM) konuşmalarında anahtarlar, kanalın gönderen kimliğinden türetilen eş tanımlayıcılarıdır (nativeDirectUserId, origin.from, origin.to, OriginatingTo, From veya SenderId). Anahtarın tam biçimi kanala bağlıdır:
| Kanal | DM anahtarı biçimi | Örnek |
|---|---|---|
| Discord | ham kullanıcı kimliği | 987654321 |
| Feishu | feishu:ou_... |
feishu:ou_a8b6cab7e945387de5f253775d9b4d85 |
| Matrix | Matrix kullanıcı kimliği | @user:matrix.org |
| Slack | user:U... |
user:U12345 |
| Telegram | ham kullanıcı kimliği | 123456789 |
| telefon numarası veya JID | 15551234567 |
{ channels: { modelByChannel: { discord: { "123456789012345678": "anthropic/claude-opus-4-6", }, slack: { C1234567890: "openai/gpt-5.6-sol", "user:U12345": "openai/gpt-5.4-mini", }, telegram: { "-1001234567890": "openai/gpt-5.4-mini", "-1001234567890:topic:99": "anthropic/claude-sonnet-4-6", "123456789": "openai/gpt-4.1", }, }, },}DM'ye özgü anahtarlar yalnızca doğrudan ileti konuşmalarında eşleşir; grup/iş parçacığı yönlendirmesini etkilemez.
Kanal varsayılanları ve Heartbeat
Sağlayıcılar arasında paylaşılan grup ilkesi ve Heartbeat davranışı için channels.defaults kullanın:
{ channels: { defaults: { groupPolicy: "allowlist", // open | allowlist | disabled contextVisibility: "all", // all | allowlist | allowlist_quote heartbeat: { showOk: false, showAlerts: true, useIndicator: true, }, }, },}channels.defaults.groupPolicy: sağlayıcı düzeyindekigroupPolicyayarlanmadığında kullanılan yedek grup ilkesi.channels.defaults.contextVisibility: tüm kanallar için varsayılan ek bağlam görünürlüğü modu. Değerler:all(varsayılan, alıntılanan/iş parçacığındaki/geçmişteki tüm bağlamı dahil eder),allowlist(yalnızca izin listesindeki gönderenlerin bağlamını dahil eder),allowlist_quote(izin listesiyle aynıdır ancak açık alıntı/yanıt bağlamını korur). Kanal bazlı geçersiz kılma:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: sağlıklı kanal durumlarını Heartbeat çıktısına dahil eder (varsayılanfalse).channels.defaults.heartbeat.showAlerts: bozulmuş/hatalı durumları Heartbeat çıktısına dahil eder (varsayılantrue).channels.defaults.heartbeat.useIndicator: kompakt, gösterge tarzı Heartbeat çıktısı oluşturur (varsayılantrue).
WhatsApp, gateway'in web kanalı (Baileys Web) üzerinden çalışır. Bağlı bir oturum bulunduğunda otomatik olarak başlar.
{ web: { enabled: true, heartbeatSeconds: 60, whatsapp: { keepAliveIntervalMs: 25000, connectTimeoutMs: 60000, defaultQueryTimeoutMs: 60000, }, reconnect: { initialMs: 2000, maxMs: 30000, factor: 1.8, jitter: 0.25, maxAttempts: 12, // 0 = sonsuza kadar yeniden dene }, }, channels: { whatsapp: { dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["+15555550123", "+447700900123"], textChunkLimit: 4000, streaming: { chunkMode: "length" }, // length | newline mediaMaxMb: 50, sendReadReceipts: true, // mavi tikler (kendiyle sohbet modunda false) groups: { "*": { requireMention: true }, }, groupPolicy: "allowlist", groupAllowFrom: ["+15551234567"], }, },}web.whatsapp.keepAliveIntervalMs(varsayılan25000),connectTimeoutMs(varsayılan60000) vedefaultQueryTimeoutMs(varsayılan60000) Baileys soketini ayarlar.web.reconnectvarsayılanları:initialMs: 2000,maxMs: 30000,factor: 1.8,jitter: 0.25,maxAttempts: 12.maxAttempts: 0, vazgeçmek yerine sonsuza kadar yeniden dener.type: "acp"içeren üst düzeybindings[]girdileri, WhatsApp DM'leri ve grupları için kalıcı ACP bağlamalarını yapılandırır.match.peer.idiçinde doğrudan bir E.164 numarası veya WhatsApp grup JID'si kullanın. Alan anlamları ACP Aracıları bölümünde ortak olarak açıklanır.
Çok hesaplı WhatsApp
{channels: { whatsapp: { accounts: { default: {}, personal: {}, biz: { // authDir: "~/.openclaw/credentials/whatsapp/biz", }, }, },},}- Giden komutlar, mevcutsa varsayılan olarak
defaulthesabını; aksi takdirde yapılandırılmış ilk hesap kimliğini (sıralanmış) kullanır. - İsteğe bağlı
channels.whatsapp.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde bu yedek varsayılan hesap seçimini geçersiz kılar. - Eski tek hesaplı Baileys kimlik doğrulama dizini,
openclaw doctortarafındanwhatsapp/defaultkonumuna taşınır. - Hesap bazlı geçersiz kılmalar:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
{ channels: { telegram: { enabled: true, botToken: "your-bot-token", dmPolicy: "pairing", allowFrom: ["tg:123456789"], groups: { "*": { requireMention: true }, "-1001234567890": { allowFrom: ["@admin"], systemPrompt: "Yanıtları kısa tut.", topics: { "99": { requireMention: false, skills: ["search"], systemPrompt: "Konudan ayrılma.", }, }, }, }, customCommands: [ { command: "backup", description: "Git yedeklemesi" }, { command: "generate", description: "Bir görsel oluştur" }, ], historyLimit: 50, replyToMode: "first", // off | first | all | batched linkPreview: true, streaming: { mode: "partial" }, // off | partial | block | progress (varsayılan: partial) actions: { reactions: true, sendMessage: true }, reactionNotifications: "own", // off | own | all mediaMaxMb: 100, retry: { attempts: 3, minDelayMs: 400, maxDelayMs: 30000, jitter: 0.1, }, network: { autoSelectFamily: true, dnsResultOrder: "ipv4first", }, apiRoot: "https://api.telegram.org", trustedLocalFileRoots: ["/srv/telegram-bot-api-data"], proxy: "socks5://localhost:9050", webhookUrl: "https://example.com/telegram-webhook", webhookSecret: "secret", webhookPath: "/telegram-webhook", }, },}- Bot belirteci:
channels.telegram.botTokenveyachannels.telegram.tokenFile(yalnızca normal dosya; sembolik bağlantılar reddedilir); varsayılan hesap için yedek olarakTELEGRAM_BOT_TOKENkullanılır. apiRootyalnızca Telegram Bot API köküdür.https://api.telegram.org/bot<TOKEN>yerinehttps://api.telegram.orgveya kendi barındırdığınız/proxy kökünüzü kullanın;openclaw doctor --fix, yanlışlıkla eklenmiş sondaki/bot<TOKEN>son ekini kaldırır.--localmodundaki kendi barındırdığınız bir Bot API sunucusu içintrustedLocalFileRoots, OpenClaw'ın okuyabileceği ana makine yollarını listeler. Sunucu veri birimini OpenClaw ana makinesine bağlayın ve veri kökünü veya belirteç bazlı dizini yapılandırın;/var/lib/telegram-bot-apialtındaki konteyner yolları bu köklere eşlenir. Diğer mutlak yollar reddedilmeye devam eder.- İsteğe bağlı
channels.telegram.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar. - Çok hesaplı kurulumlarda (2+ hesap kimliği), yedek yönlendirmeyi önlemek için açık bir varsayılan (
channels.telegram.defaultAccountveyachannels.telegram.accounts.default) ayarlayın; bu değer eksik veya geçersiz olduğundaopenclaw doctoruyarı verir. configWrites: false, Telegram tarafından başlatılan yapılandırma yazma işlemlerini engeller (süper grup kimliği taşımaları,/config set|unset).type: "acp"içeren üst düzeybindings[]girdileri, forum konuları için kalıcı ACP bağlamalarını yapılandırır (match.peer.idiçinde standartchatId:topic:topicIdkullanın). Alan anlamları ACP Aracıları bölümünde ortak olarak açıklanır.- Telegram akış önizlemeleri
sendMessage+editMessageTextkullanır (doğrudan ve grup sohbetlerinde çalışır). network.dnsResultOrder, yaygın IPv6 getirme hatalarını önlemek için varsayılan olarak"ipv4first"değerini kullanır.- Yeniden deneme ilkesi: Yeniden deneme ilkesi bölümüne bakın.
Discord
{ channels: { discord: { enabled: true, token: "your-bot-token", mediaMaxMb: 100, allowBots: false, actions: { reactions: true, stickers: true, polls: true, permissions: true, messages: true, threads: true, pins: true, search: true, memberInfo: true, roleInfo: true, roles: false, channelInfo: true, voiceStatus: true, events: true, moderation: false, }, replyToMode: "off", // off | first | all | batched dmPolicy: "pairing", allowFrom: ["1234567890", "123456789012345678"], dm: { enabled: true, groupEnabled: false, groupChannels: ["openclaw-dm"] }, guilds: { "123456789012345678": { slug: "friends-of-openclaw", requireMention: false, ignoreOtherMentions: true, reactionNotifications: "own", users: ["987654321098765432"], channels: { general: { allow: true }, help: { allow: true, requireMention: true, users: ["987654321098765432"], skills: ["docs"], systemPrompt: "Short answers only.", }, }, }, }, historyLimit: 20, textChunkLimit: 2000, suppressEmbeds: true, streaming: { mode: "progress", // off | partial | block | progress (Discord default: progress) chunkMode: "length", // length | newline progress: { label: "auto", maxLines: 8, maxLineChars: 120, toolProgress: true, }, }, maxLinesPerMessage: 17, ui: { components: { accentColor: "#5865F2", }, }, threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, spawnSessions: true, defaultSpawnContext: "fork", }, voice: { enabled: true, autoJoin: [ { guildId: "123456789012345678", channelId: "234567890123456789", }, ], daveEncryption: true, decryptionFailureTolerance: 24, connectTimeoutMs: 30000, reconnectGraceMs: 15000, tts: { provider: "openai", openai: { voice: "alloy" }, }, }, execApprovals: { enabled: "auto", // true | false | "auto" approvers: ["987654321098765432"], agentFilter: ["default"], sessionFilter: ["discord:"], target: "dm", // dm | channel | both cleanupAfterResolve: false, }, retry: { attempts: 3, minDelayMs: 500, maxDelayMs: 30000, jitter: 0.1, }, }, },}- Token: Varsayılan hesap için yedek olarak
DISCORD_BOT_TOKENkullanılmak üzerechannels.discord.token. - Açık bir Discord
tokensağlayan doğrudan giden çağrılar, çağrı için bu tokenı kullanır; hesap yeniden deneme/ilke ayarları yine etkin çalışma zamanı anlık görüntüsünde seçilen hesaptan gelir. - İsteğe bağlı
channels.discord.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar. - Teslimat hedefleri için
user:<id>(DM) veyachannel:<id>(sunucu kanalı) kullanın; yalın sayısal kimlikler reddedilir. - Sunucu slug'ları küçük harflidir ve boşluklar
-ile değiştirilir; kanal anahtarları slug biçimine dönüştürülmüş adı kullanır (#yoktur). Sunucu kimliklerini tercih edin. - Bot tarafından yazılan mesajlar varsayılan olarak yok sayılır.
allowBots: truebunları etkinleştirir; yalnızca bottan bahseden bot mesajlarını kabul etmek içinallowBots: "mentions"kullanın (kendi mesajları yine filtrelenir). - Bot tarafından yazılmış gelen mesajları destekleyen kanallar, paylaşılan bot döngüsü korumasını kullanabilir. Temel çift bütçeleri için
channels.defaults.botLoopProtectionayarlayın, ardından yalnızca bir yüzey farklı sınırlara ihtiyaç duyduğunda kanalı veya hesabı geçersiz kılın. channels.discord.guilds.<id>.ignoreOtherMentions(ve kanal geçersiz kılmaları), başka bir kullanıcıdan veya rolden bahseden ancak bottan bahsetmeyen mesajları bırakır (@everyone/@here hariç).channels.discord.mentionAliases, kararlı giden@handlemetnini göndermeden önce Discord kullanıcı kimlikleriyle eşler; böylece geçici dizin önbelleği boşken bile bilinen ekip arkadaşlarından deterministik olarak bahsedilebilir. Hesap başına geçersiz kılmalarchannels.discord.accounts.<accountId>.mentionAliasesaltında bulunur.maxLinesPerMessage(varsayılan17), 2000 karakterin altında olsalar bile uzun mesajları böler.channels.discord.suppressEmbedsvarsayılan olaraktruedeğerini alır; böylece devre dışı bırakılmadığı sürece giden URL'ler Discord bağlantı önizlemelerine genişlemez. Açıkembedsyükleri yine normal şekilde gönderilir; mesaj başına araç çağrılarısuppressEmbedsile bunu geçersiz kılabilir.channels.discord.threadBindings, Discord iş parçacığına bağlı yönlendirmeyi denetler:enabled: İş parçacığına bağlı oturum özellikleri için Discord geçersiz kılması (/focus,/unfocus,/agents,/session idle,/session max-ageve bağlı teslimat/yönlendirme)idleHours: Saat cinsinden hareketsizlikte otomatik odaktan çıkarma için Discord geçersiz kılması (0devre dışı bırakır)maxAgeHours: Saat cinsinden kesin azami yaş için Discord geçersiz kılması (0devre dışı bırakır)spawnSessions:sessions_spawn({ thread: true })ve ACP iş parçacığı oluşturma sırasında otomatik iş parçacığı oluşturma/bağlama anahtarı (varsayılan:true)defaultSpawnContext: İş parçacığına bağlı oluşturmalar için yerel alt ajan bağlamı (varsayılan olarak"fork")
type: "acp"içeren üst düzeybindings[]girdileri, kanallar ve iş parçacıkları için kalıcı ACP bağlamalarını yapılandırır (match.peer.idiçinde kanal/iş parçacığı kimliğini kullanın). Alan anlamları ACP Ajanları bölümünde paylaşılır.channels.discord.ui.components.accentColor, Discord bileşenleri v2 kapsayıcılarının vurgu rengini ayarlar.channels.discord.agentComponents.ttlMs, gönderilen Discord bileşen geri çağırmalarının ne kadar süre kayıtlı kalacağını denetler. Varsayılan1800000(30 dakika), azami86400000(24 saat). Hesap başına geçersiz kılmalarchannels.discord.accounts.<accountId>.agentComponents.ttlMsaltında bulunur. İş akışına uyan en kısa TTL'yi tercih edin.channels.discord.voice, Discord ses kanalı görüşmelerini ve isteğe bağlı otomatik katılma + LLM + TTS geçersiz kılmalarını etkinleştirir. Yalnızca metin içeren Discord yapılandırmalarında ses varsayılan olarak kapalıdır; etkinleştirmek içinchannels.discord.voice.enabled=trueayarlayın.channels.discord.voice.model, Discord ses kanalı yanıtları için kullanılan LLM modelini isteğe bağlı olarak geçersiz kılar.channels.discord.voice.daveEncryption(varsayılantrue) vechannels.discord.voice.decryptionFailureTolerance(varsayılan24),@discordjs/voiceDAVE seçeneklerine aktarılır.channels.discord.voice.connectTimeoutMs,/vc joinve otomatik katılma denemeleri için başlangıçtaki@discordjs/voiceReady beklemesini denetler (varsayılan30000).channels.discord.voice.reconnectGraceMs, bağlantısı kesilmiş bir sesli oturumun OpenClaw tarafından yok edilmeden önce yeniden bağlanma sinyallemesine girmek için ne kadar süre kullanabileceğini denetler (varsayılan15000).- Discord ses oynatımı, başka bir kullanıcının konuşmaya başlama olayıyla kesilmez. Geri besleme döngülerini önlemek için OpenClaw, TTS oynatılırken yeni ses yakalamayı yok sayar.
- OpenClaw ayrıca tekrarlanan şifre çözme hatalarından sonra sesli oturumdan ayrılıp yeniden katılarak ses alımını kurtarmayı dener.
channels.discord.streaming, standart akış modu anahtarıdır. Discord varsayılan olarakstreaming.mode: "progress"kullanır; böylece araç/iş ilerlemesi, düzenlenen tek bir önizleme mesajında görünür. Devre dışı bırakmak içinstreaming.mode: "off"ayarlayın. Eski düz anahtarlar (streamMode,chunkMode,blockStreaming,draftChunk,blockStreamingCoalesce) artık çalışma zamanında okunmaz; kalıcı yapılandırmayı taşımak içinopenclaw doctor --fixçalıştırın.channels.discord.autoPresence, çalışma zamanı kullanılabilirliğini bot durumuna eşler (sağlıklı => çevrimiçi, bozulmuş => boşta, tükenmiş => rahatsız etmeyin) ve isteğe bağlı durum metni geçersiz kılmalarına izin verir.channels.discord.guilds.<id>.presenceEvents, insanların kullanılabilir hâle gelmesini ajan sistem olayları olarak yapılandırılmış tek bir Discord kanalına yönlendirir. Uygun üyelerchannelIdöğesini görebilmelidir; herkese açık iş parçacıkları üst öğenin görünürlüğünü devralırken özel iş parçacıkları ayrıca üyelik veya Manage Threads gerektirir.usersbu kitleyi daha da daraltabilir. Mevcut çevrimiçi üyeleri eksiksizGUILD_CREATEanlık görüntülerinden başlangıç durumuna alır, gözlemlenen çevrimdışından çevrimiçine geçişleri yönlendirir ve daha önce görülmemiş bir üye için daha sonra gelen ilk çevrimiçi sinyalini, anlık görüntüden sonra çevrimiçi mi olduğu yoksa katıldığı mı konusunda iddiada bulunmadan yeni kullanılabilirlik olarak değerlendirir. Discord'un 75.000 üyelik anlık görüntü sınırını aşan sunucular önce açık bir çevrimdışı güncelleme gerektirir. Kısıtlama ayarları:reconnectSuppressSeconds(sunucu iletişim durumu yeniden oluşturulurken yeni bir Gateway oturumundan sonraki sessiz pencere; varsayılan 300,0devre dışı bırakır) veburstLimit/burstWindowSeconds(sunucu başına başarıyla kuyruğa alınan olay hız sınırı; varsayılan, 60 saniyelik kayan pencere başına 8 olay). Sürdürülen oturumlar yeniden bağlanma engelleme penceresini başlatmaz. Kullanıcı başına mevcut yeniden karşılama bekleme süresi sekiz saat olarak kalır.channels.discord.intents.presence=true, Discord Developer Portal'daki ayrıcalıklı Presence Intent ve etkin bir ajan Heartbeat'i gerektirir.channels.discord.dangerouslyAllowNameMatching, değiştirilebilir ad/etiket eşleştirmesini yeniden etkinleştirir (acil durum uyumluluk modu).channels.discord.execApprovals: Discord'a özgü yürütme onayı teslimatı ve onaylayan yetkilendirmesi.enabled:true,falseveya"auto"(varsayılan). Otomatik modda yürütme onayları, onaylayanlarapproversveyacommands.ownerAllowFromüzerinden çözümlenebildiğinde etkinleşir.approvers: Yürütme isteklerini onaylamasına izin verilen Discord kullanıcı kimlikleri. Belirtilmediğindecommands.ownerAllowFromdeğerine geri döner.agentFilter: İsteğe bağlı ajan kimliği izin listesi. Tüm ajanların onaylarını iletmek için belirtmeyin.sessionFilter: İsteğe bağlı oturum anahtarı kalıpları (alt dize veya düzenli ifade).target: Onay istemlerinin gönderileceği yer."dm"(varsayılan), onaylayanların DM'lerine gönderir;"channel", kaynak kanala gönderir;"both", ikisine de gönderir. Hedef"channel"içerdiğinde düğmeler yalnızca çözümlenen onaylayanlar tarafından kullanılabilir.cleanupAfterResolve:trueolduğunda onay, ret veya zaman aşımından sonra onay DM'lerini siler.
Tepki bildirim modları: off (hiçbiri), own (botun mesajları, varsayılan), all (tüm mesajlar), allowlist (tüm mesajlarda guilds.<id>.users kaynağından).
Google Chat
{ channels: { googlechat: { enabled: true, serviceAccountFile: "/path/to/service-account.json", audienceType: "app-url", // app-url | project-number audience: "https://gateway.example.com/googlechat", webhookPath: "/googlechat", botUser: "users/1234567890", dm: { enabled: true, policy: "pairing", allowFrom: ["users/1234567890"], }, groupPolicy: "allowlist", groups: { "spaces/AAAA": { allow: true, requireMention: true }, }, actions: { reactions: true }, typingIndicator: "message", mediaMaxMb: 20, }, },}- Hizmet hesabı JSON'u: satır içi (
serviceAccount) veya dosya tabanlı (serviceAccountFile). - Hizmet hesabı SecretRef'i de desteklenir (
serviceAccountRef). - Ortam değişkeni yedekleri:
GOOGLE_CHAT_SERVICE_ACCOUNTveyaGOOGLE_CHAT_SERVICE_ACCOUNT_FILE(yalnızca varsayılan hesap). - Teslimat hedefleri için
spaces/<spaceId>veyausers/<userId>kullanın. channels.googlechat.dangerouslyAllowNameMatching, değiştirilebilir e-posta sorumlusu eşleştirmesini yeniden etkinleştirir (acil durum uyumluluk modu).
Slack
{ channels: { slack: { enabled: true, botToken: "xoxb-...", appToken: "xapp-...", socketMode: { clientPingTimeout: 15000, serverPingTimeout: 30000, pingPongLoggingEnabled: false, }, dmPolicy: "pairing", allowFrom: ["U123", "U456", "*"], dm: { enabled: true, groupEnabled: false, groupChannels: ["G123"] }, channels: { C123: { enabled: true, requireMention: true, allowBots: false }, "#general": { enabled: true, requireMention: true, allowBots: false, users: ["U123"], skills: ["docs"], systemPrompt: "Yalnızca kısa yanıtlar ver.", }, }, historyLimit: 50, allowBots: false, reactionNotifications: "own", reactionAllowlist: ["U123"], replyToMode: "off", // off | first | all | batched thread: { historyScope: "thread", // thread | channel inheritParent: false, initialHistoryLimit: 20, }, actions: { reactions: true, messages: true, pins: true, memberInfo: true, emojiList: true, }, slashCommand: { enabled: true, name: "openclaw", sessionPrefix: "slack:slash", ephemeral: true, }, typingReaction: "hourglass_flowing_sand", unfurlLinks: false, unfurlMedia: false, textChunkLimit: 4000, streaming: { mode: "partial", // off | partial | block | progress chunkMode: "length", // length | newline nativeTransport: true, // mode=partial olduğunda Slack'in yerel akış API'sini kullan }, mediaMaxMb: 20, execApprovals: { enabled: "auto", // true | false | "auto" approvers: ["U123"], agentFilter: ["default"], sessionFilter: ["slack:"], target: "dm", // dm | channel | both }, }, },}- Socket modu hem
botTokenhem deappTokengerektirir (varsayılan hesap ortam değişkeni geri dönüşü içinSLACK_BOT_TOKEN+SLACK_APP_TOKEN). - HTTP modu,
botTokenile birliktesigningSecretgerektirir (kök düzeyinde veya hesap başına). enterpriseOrgInstall: true, bir hesabı Slack Enterprise Grid kuruluş geneli olay yoluna dahil eder. Başlangıç sırasında bot token'ıauth.testile doğrulanır ve yapılandırılan mod Slack'in kurulum kimliğiyle eşleşmediğinde başlangıç başarısız olur. Enterprise DM'leri devre dışı bırakılmalı veya geçerli birallowFrom: ["*"]iledmPolicy: "open"kullanılmalıdır. Kanal ve kullanıcı politikaları kararlı Slack kimliklerini kullanmalıdır; değiştirilebilir adlar ve desteklenmeyen kanal önekleri başlangıcın başarısız olmasına neden olur. V1 yalnızca doğrudan Socket Mode veya HTTPmessageveapp_mentionolaylarını anında yanıtlarla işler; aktarma, komutlar, etkileşimler, App Home, tepki olayı dinleyicileri, sabitlemeler, eylem araçları, yerel onaylar, bağlamalar, ertelenmiş teslimat ve proaktif gönderimler kullanılamaz. Dinleyiciye ait alındı bildirimi, yazma göstergesi ve durum tepkilerireactions:writeile kullanılabilir olmaya devam eder; gelen tepki bildirimleri ve tepki eylemi araçları kullanılamaz. En az ayrıcalıklı manifest, kurulum iş akışı ve tüm kısıtlamalar için Enterprise Grid kuruluş geneli kurulumları bölümüne bakın.socketMode, Slack SDK Socket Mode aktarım ayarlarını herkese açık Bolt alıcı API'sine iletir. Bunu yalnızca ping/pong zaman aşımı veya eski websocket davranışını araştırırken kullanın.clientPingTimeoutvarsayılan olarak15000değerini kullanır;serverPingTimeoutvepingPongLoggingEnabledyalnızca yapılandırıldığında iletilir.botToken,appToken,signingSecretveuserToken, düz metin dizelerini veya SecretRef nesnelerini kabul eder.- Slack hesap anlık görüntüleri,
botTokenSource,botTokenStatus,appTokenStatusve HTTP modundasigningSecretStatusgibi kimlik bilgisi başına kaynak/durum alanlarını sunar.configured_unavailable, hesabın SecretRef aracılığıyla yapılandırıldığı ancak geçerli komut/çalışma zamanı yolunun gizli değeri çözemediği anlamına gelir. configWrites: false, Slack tarafından başlatılan yapılandırma yazma işlemlerini engeller.- İsteğe bağlı
channels.slack.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar. channels.slack.streaming.mode, standart Slack akış modu anahtarıdır (varsayılan"partial").channels.slack.streaming.nativeTransport, Slack'in yerel akış aktarımını denetler (varsayılantrue). EskistreamMode, booleanstreaming,chunkMode,blockStreaming,blockStreamingCoalescevenativeStreamingdeğerleri artık çalışma zamanında okunmaz; kalıcı yapılandırmayıstreaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}biçimine taşımak içinopenclaw doctor --fixkomutunu çalıştırın.unfurlLinksveunfurlMedia, bot yanıtları için Slack'inchat.postMessagebağlantı ve medya önizleme boolean değerlerini iletir.unfurlLinksvarsayılan olarakfalsedeğerini kullanır; böylece etkinleştirilmedikçe giden bot bağlantıları satır içinde genişletilmez.unfurlMediayapılandırılmadıkça dahil edilmez. Tek bir hesap için üst düzey değeri geçersiz kılmak üzere değerlerden birinichannels.slack.accounts.<accountId>konumunda ayarlayın.- Teslimat hedefleri için
user:<id>(DM) veyachannel:<id>kullanın.
Tepki bildirimi modları: off, own (varsayılan), all, allowlist (reactionAllowlist kaynağından).
İleti dizisi oturumu yalıtımı: thread.historyScope, ileti dizisi başınadır (varsayılan) veya kanal genelinde paylaşılır. thread.inheritParent, üst kanal dökümünü yeni ileti dizilerine kopyalar. thread.initialHistoryLimit (varsayılan 20), yeni bir ileti dizisi oturumu başladığında getirilecek mevcut ileti dizisi iletilerinin sayısını sınırlar; 0, ileti dizisi geçmişinin getirilmesini devre dışı bırakır.
- Slack yerel akışı ile Slack'in asistan tarzı "yazıyor..." ileti dizisi durumu, bir yanıt ileti dizisi hedefi gerektirir. Üst düzey DM'ler varsayılan olarak ileti dizisi dışında kalır; böylece ileti dizisi tarzı yerel akış/durum önizlemesini göstermek yerine Slack'in taslak gönderi ve düzenleme önizlemeleri üzerinden akış yapmaya devam edebilirler.
typingReaction, yanıt çalışırken gelen Slack iletisine geçici bir tepki ekler ve tamamlandığında bunu kaldırır."hourglass_flowing_sand"gibi bir Slack emoji kısa kodu kullanın.channels.slack.execApprovals: Slack'e özgü onay istemcisi teslimatı ve yürütme onaylayıcısı yetkilendirmesi. Discord ile aynı şema:enabled(true/false/"auto"),approvers(Slack kullanıcı kimlikleri),agentFilter,sessionFiltervetarget("dm","channel"veya"both"). Plugin onayları, Slack Plugin onaylayıcıları çözümlendiğinde Slack kaynaklı istekler için bu yerel istemci yolunu kullanabilir; Slack'e özgü Plugin onayı teslimatı, Slack kaynaklı oturumlar veya Slack hedefleri içinapprovals.pluginaracılığıyla da etkinleştirilebilir. Plugin onayları yürütme onaylayıcılarını değil,allowFromiçindeki Slack Plugin onaylayıcılarını ve varsayılan yönlendirmeyi kullanır.
| Eylem grubu | Varsayılan | Notlar |
|---|---|---|
| reactions | etkin | Tepki ekle + tepkileri listele |
| messages | etkin | Oku/gönder/düzenle/sil |
| pins | etkin | Sabitle/sabitlemeyi kaldır/listele |
| memberInfo | etkin | Üye bilgileri |
| emojiList | etkin | Özel emoji listesi |
Mattermost
Mattermost; Discord, Slack ve WhatsApp ile aynı şekilde ayrı bir Plugin olarak kurulur:
openclaw plugins install @openclaw/mattermostBir sürümü sabitlemeden önce güncel dist-tag'ler için npmjs.com/package/@openclaw/mattermost adresini kontrol edin.
{ channels: { mattermost: { enabled: true, botToken: "mm-token", baseUrl: "https://chat.example.com", dmPolicy: "pairing", chatmode: "oncall", // oncall | onmessage | onchar oncharPrefixes: [">", "!"], groups: { "*": { requireMention: true }, "team-channel-id": { requireMention: false }, }, commands: { native: true, // isteğe bağlı nativeSkills: true, callbackPath: "/api/channels/mattermost/command", // Ters proxy/herkese açık dağıtımlar için isteğe bağlı açık URL callbackUrl: "https://gateway.example.com/api/channels/mattermost/command", }, textChunkLimit: 4000, streaming: { chunkMode: "length" }, }, },}Sohbet modları: oncall (@-bahsetmede yanıt ver, varsayılan), onmessage (her ileti), onchar (tetikleyici önekle başlayan iletiler).
Mattermost yerel komutları etkinleştirildiğinde:
commands.callbackPathtam bir URL değil, bir yol olmalıdır (örneğin/api/channels/mattermost/command).commands.callbackUrl, OpenClaw Gateway uç noktasına çözümlenmeli ve Mattermost sunucusundan erişilebilir olmalıdır.- Yerel eğik çizgi geri çağrılarının kimliği, eğik çizgi komutu kaydı sırasında
Mattermost tarafından döndürülen komut başına token'larla doğrulanır. Kayıt başarısız olursa veya hiçbir
komut etkinleştirilmezse OpenClaw geri çağrıları
Unauthorized: invalid command token.ile reddeder - Özel/tailnet/dahili geri çağrı ana makineleri için Mattermost,
ServiceSettings.AllowedUntrustedInternalConnectionsdeğerinin geri çağrı ana makinesini/alan adını içermesini gerektirebilir. Tam URL'ler değil, ana makine/alan adı değerleri kullanın. channels.mattermost.configWrites: Mattermost tarafından başlatılan yapılandırma yazma işlemlerine izin verin veya bunları reddedin.channels.mattermost.requireMention: kanallarda yanıt vermeden önce@mentiongerektirin.channels.mattermost.groups.<channelId>.requireMention: kanal başına bahsetme zorunluluğu geçersiz kılma ayarı (varsayılan için"*").- İsteğe bağlı
channels.mattermost.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar.
Signal
{ channels: { signal: { enabled: true, account: "+15555550123", // isteğe bağlı hesap bağlaması dmPolicy: "pairing", allowFrom: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"], configWrites: true, reactionNotifications: "own", // off | own | all | allowlist reactionAllowlist: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"], historyLimit: 50, }, },}Tepki bildirimi modları: off, own (varsayılan), all, allowlist (reactionAllowlist kaynağından).
channels.signal.account: kanal başlangıcını belirli bir Signal hesap kimliğine sabitleyin.channels.signal.configWrites: Signal tarafından başlatılan yapılandırma yazma işlemlerine izin verin veya bunları reddedin.- İsteğe bağlı
channels.signal.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar.
iMessage
OpenClaw, imsg rpc sürecini başlatır (stdio üzerinden JSON-RPC). Herhangi bir daemon veya bağlantı noktası gerekmez. Ana makine Mesajlar veritabanı ve Otomasyon izinlerini verebiliyorsa yeni OpenClaw iMessage kurulumları için tercih edilen yol budur.
BlueBubbles desteği kaldırıldı. channels.bluebubbles, güncel OpenClaw sürümünde desteklenen bir çalışma zamanı yapılandırma yüzeyi değildir. Eski yapılandırmaları channels.imessage biçimine taşıyın; kısa sürüm için BlueBubbles'ın kaldırılması ve imsg iMessage yolu, tam çeviri tablosu için BlueBubbles'dan geçiş sayfasını kullanın.
Gateway, Mesajlar oturumu açık olan Mac'te çalışmıyorsa channels.imessage.enabled=true değerini koruyun ve channels.imessage.cliPath değerini, söz konusu Mac'te imsg "$@" çalıştıran bir SSH sarmalayıcısına ayarlayın. Varsayılan yerel imsg yolu yalnızca macOS'ta kullanılabilir.
Üretim gönderimleri için bir SSH sarmalayıcısına güvenmeden önce, tam olarak bu sarmalayıcı üzerinden giden bir imsg send işlemini doğrulayın. Bazı macOS TCC durumları Mesajlar Otomasyonu'nu /usr/libexec/sshd-keygen-wrapper sürecine atar; bu durum, okumaların ve yoklamaların çalışmasına karşın gönderimlerin AppleEvents -1743 hatasıyla başarısız olmasına neden olabilir. iMessage içindeki SSH sarmalayıcısı sorun giderme bölümüne bakın.
{ channels: { imessage: { enabled: true, cliPath: "imsg", dbPath: "~/Library/Messages/chat.db", remoteHost: "user@gateway-host", dmPolicy: "pairing", allowFrom: ["+15555550123", "user@example.com", "chat_id:123"], historyLimit: 50, includeAttachments: false, attachmentRoots: ["/Users/*/Library/Messages/Attachments"], remoteAttachmentRoots: ["/Users/*/Library/Messages/Attachments"], mediaMaxMb: 16, service: "auto", sendTransport: "auto", region: "US", actions: { reactions: true, edit: true, unsend: true, reply: true, sendWithEffect: true, sendAttachment: true, }, }, },}- İsteğe bağlı
channels.imessage.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar. - Mesajlar veritabanı için Tam Disk Erişimi gerektirir.
chat_id:<id>hedeflerini tercih edin. Sohbetleri listelemek içinimsg chats --limit 20kullanın.cliPathbir SSH sarmalayıcısına işaret edebilir; SCP ile ekleri almak içinremoteHost(hostveyauser@host) ayarlayın.attachmentRootsveremoteAttachmentRoots, gelen eklerin yollarını sınırlar (varsayılan:/Users/*/Library/Messages/Attachments).- SCP katı ana makine anahtarı denetimi kullanır; bu nedenle aktarma ana makinesinin anahtarının
~/.ssh/known_hostsiçinde zaten bulunduğundan emin olun. channels.imessage.configWrites: iMessage tarafından başlatılan yapılandırma yazımlarına izin verin veya bunları reddedin.channels.imessage.sendTransport: normal giden yanıtlar için tercih edilenimsgRPC gönderim aktarımı.auto(varsayılan), çalışır durumdayken mevcut sohbetler için IMCore köprüsünü kullanır, ardından AppleScript'e geri döner;bridgeözel API üzerinden teslimat gerektirir;applescriptherkese açık Mesajlar otomasyon yolunu zorunlu kılar.channels.imessage.actions.*: ayrıcaimsg status/openclaw channels status --probetarafından denetlenen özel API eylemlerini etkinleştirin.channels.imessage.includeAttachmentsvarsayılan olarak kapalıdır; agent turlarında gelen medya beklemeden önce bunutrueolarak ayarlayın.- Bir köprü/Gateway yeniden başlatmasından sonra gelen iletilerin kurtarılması otomatiktir (GUID tekilleştirmesi ve eski birikim için yaş sınırı). Mevcut
channels.imessage.catchup.enabled: trueyapılandırmaları, kullanımdan kaldırılmış bir uyumluluk profili olarak hâlâ dikkate alınır;catchupvarsayılan olarak devre dışıdır. channels.imessage.groups: grup kayıt defteri ve grup başına ayarlar.groupPolicy: "allowlist"ile grup iletilerinin kayıt defteri kapısından geçebilmesi için açıkchat_idanahtarlarını veya bir"*"joker karakter girdisini yapılandırın.type: "acp"içeren üst düzeybindings[]girdileri, iMessage konuşmalarını kalıcı ACP oturumlarına bağlayabilir.match.peer.idiçinde normalleştirilmiş bir tanıtıcı veya açık bir sohbet hedefi (chat_id:*,chat_guid:*,chat_identifier:*) kullanın. Paylaşılan alan anlamları: ACP Agent'ları.
iMessage SSH sarmalayıcı örneği
#!/usr/bin/env bashexec ssh -T gateway-host imsg "$@"Matrix
Matrix, Plugin desteklidir ve channels.matrix altında yapılandırılır.
{ channels: { matrix: { enabled: true, homeserver: "https://matrix.example.org", accessToken: "syt_bot_xxx", proxy: "http://127.0.0.1:7890", encryption: true, initialSyncLimit: 20, defaultAccount: "ops", accounts: { ops: { name: "Ops", userId: "@ops:example.org", accessToken: "syt_ops_xxx", }, alerts: { userId: "@alerts:example.org", password: "secret", proxy: "http://127.0.0.1:7891", }, }, }, },}- Token kimlik doğrulaması
accessToken; parola kimlik doğrulaması iseuserId+passwordkullanır. channels.matrix.proxy, Matrix HTTP trafiğini açıkça belirtilmiş bir HTTP(S) proxy üzerinden yönlendirir. Adlandırılmış hesaplar bunuchannels.matrix.accounts.<id>.proxyile geçersiz kılabilir.channels.matrix.network.dangerouslyAllowPrivateNetwork, özel/dahili ana sunuculara izin verir.proxyile bu ağ katılım tercihi birbirinden bağımsız denetimlerdir.channels.matrix.defaultAccount, çok hesaplı kurulumlarda tercih edilen hesabı seçer.channels.matrix.autoJoinvarsayılan olarak"off"değerini kullanır; dolayısıylaautoJoin: "allowlist"öğesiniautoJoinAllowlistveyaautoJoin: "always"ile ayarlayana kadar davet edilen odalar ve yeni DM türündeki davetler yok sayılır.channels.matrix.execApprovals: Matrix'e özgü yürütme onayı teslimatı ve onaylayan yetkilendirmesi.enabled:true,falseveya"auto"(varsayılan). Otomatik modda onaylayanlarapproversveyacommands.ownerAllowFromüzerinden çözümlenebildiğinde yürütme onayları etkinleşir.approvers: yürütme isteklerini onaylamasına izin verilen Matrix kullanıcı kimlikleri (ör.@owner:example.org).agentFilter: isteğe bağlı agent kimliği izin listesi. Onayları tüm agent'lar için iletmek üzere bu alanı atlayın.sessionFilter: isteğe bağlı oturum anahtarı kalıpları (alt dize veya düzenli ifade).target: onay istemlerinin gönderileceği yer."dm"(varsayılan),"channel"(kaynak oda) veya"both".- Hesap başına geçersiz kılmalar:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScope, Matrix DM'lerinin oturumlar hâlinde nasıl gruplandırılacağını denetler:per-user(varsayılan), yönlendirilen eşe göre paylaşırkenper-roomher DM odasını yalıtır.- Matrix durum yoklamaları ve canlı dizin aramaları, çalışma zamanı trafiğiyle aynı proxy politikasını kullanır.
- Matrix yapılandırmasının tamamı, hedefleme kuralları ve kurulum örnekleri Matrix içinde belgelenmiştir.
Microsoft Teams
Microsoft Teams, Plugin desteklidir ve channels.msteams altında yapılandırılır.
{ channels: { msteams: { enabled: true, configWrites: true, // appId, appPassword, tenantId, webhook, ekip/kanal politikaları: // bkz. /channels/msteams }, },}- Burada ele alınan temel anahtar yolları:
channels.msteams,channels.msteams.configWrites. - Teams yapılandırmasının tamamı (kimlik bilgileri, Webhook, DM/grup politikası, ekip/kanal başına geçersiz kılmalar) Microsoft Teams içinde belgelenmiştir.
IRC
IRC, Plugin desteklidir ve channels.irc altında yapılandırılır.
{ channels: { irc: { enabled: true, dmPolicy: "pairing", configWrites: true, nickserv: { enabled: true, service: "NickServ", password: "${IRC_NICKSERV_PASSWORD}", register: false, registerEmail: "bot@example.com", }, }, },}- Burada ele alınan temel anahtar yolları:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - İsteğe bağlı
channels.irc.defaultAccount, yapılandırılmış bir hesap kimliğiyle eşleştiğinde varsayılan hesap seçimini geçersiz kılar. - IRC kanal yapılandırmasının tamamı (ana makine/bağlantı noktası/TLS/kanallar/izin listeleri/bahsetme denetimi) IRC içinde belgelenmiştir.
Çoklu hesap (tüm kanallar)
Kanal başına birden fazla hesap çalıştırın (her birinin kendi accountId değeri vardır):
{ channels: { telegram: { accounts: { default: { name: "Birincil bot", botToken: "123456:ABC...", }, alerts: { name: "Uyarı botu", botToken: "987654:XYZ...", }, }, }, },}accountIdatlandığındadefaultkullanılır (CLI + yönlendirme).- Ortam token'ları yalnızca varsayılan hesaba uygulanır.
- Temel kanal ayarları, hesap başına geçersiz kılınmadıkça tüm hesaplara uygulanır.
- Her hesabı farklı bir agent'a yönlendirmek için
bindings[].match.accountIdkullanın. - Hâlâ tek hesaplı üst düzey kanal yapılandırmasını kullanırken
openclaw channels add(veya kanal ilk katılımı) aracılığıyla varsayılan olmayan bir hesap eklerseniz OpenClaw, özgün hesabın çalışmaya devam etmesi için önce hesap kapsamlı üst düzey tek hesap değerlerini kanal hesap eşlemesine yükseltir. Çoğu kanal bunlarıchannels.<channel>.accounts.defaultiçine taşır; Matrix ise bunun yerine eşleşen mevcut bir adlandırılmış/varsayılan hedefi koruyabilir. - Mevcut yalnızca kanal kapsamlı bağlamalar (
accountIdiçermeyenler) varsayılan hesapla eşleşmeye devam eder; hesap kapsamlı bağlamalar isteğe bağlı kalır. openclaw doctor --fix, hesap kapsamlı üst düzey tek hesap değerlerini ilgili kanal için seçilen yükseltilmiş hesaba taşıyarak karma biçimleri de onarır. Çoğu kanalaccounts.defaultkullanır; Matrix ise bunun yerine eşleşen mevcut bir adlandırılmış/varsayılan hedefi koruyabilir.
Diğer Plugin kanalları
Birçok Plugin kanalı channels.<id> olarak yapılandırılır ve kendi kanal sayfalarında belgelenir (örneğin Feishu, LINE, Nextcloud Talk, Nostr, QQ Bot, Synology Chat, Twitch ve Zalo).
Kanal dizininin tamamına bakın: Kanallar.
Grup sohbetinde bahsetme denetimi
Grup iletileri varsayılan olarak bahsetme gerektirir (meta veri bahsetmesi veya güvenli düzenli ifade kalıpları). WhatsApp, Telegram, Discord, Google Chat ve iMessage grup sohbetleri için geçerlidir.
Görünür yanıtlar ayrı olarak denetlenir. Normal grup, kanal ve dahili WebChat doğrudan istekleri varsayılan olarak otomatik son teslimatı kullanır: son asistan metni eski görünür yanıt yolu üzerinden gönderilir. Görünür çıktının yalnızca agent message(action=send) çağrısı yaptıktan sonra gönderilmesi gerekiyorsa messages.visibleReplies: "message_tool" veya messages.groupChat.visibleReplies: "message_tool" seçeneğini etkinleştirin. Model, yalnızca araç modunun etkinleştirildiği bir durumda ileti aracını çağırmadan anlamlı bir son yanıt döndürürse bu son metin gizli kalır, Gateway ayrıntılı günlüğü engellenen yükün meta verilerini kaydeder ve OpenClaw modelden aynı yanıtı message(action=send) aracılığıyla teslim etmesini isteyen tek bir kurtarma yeniden denemesi kuyruğa alır.
Yalnızca araç üzerinden görünür yanıtlar, araçları güvenilir biçimde çağıran bir model/çalışma zamanı gerektirir ve GPT-5.6 Sol gibi en yeni nesil modellerdeki paylaşılan ortam odaları için önerilir. Bazı daha zayıf modeller son metinle yanıt verebilir ancak kaynakta görünür çıktının message(action=send) ile gönderilmesi gerektiğini anlayamayabilir. OpenClaw, yalnızca son yanıt anlamlıysa, kaynak tur bir oda olayı değilse, gönderim politikası teslimatı reddetmediyse ve henüz bir kaynak yanıtı gönderilmediyse yaygın takılı kalan son yanıt durumunu varsayılan olarak kurtarır. Kurtarma tek bir yeniden denemeyle sınırlıdır; sentetik yeniden deneme isteminin kalıcılaştırılmasını engeller ve ilgisiz kuyruk istemleriyle birleşememesi için bu yeniden denemeyi toplu işlem dışında tutar. Yeniden deneme de takılırsa veya kuyruğa alınamazsa OpenClaw yalnızca "Bir yanıt oluşturdum ancak bu sohbete teslim edemedim. Lütfen tekrar deneyin." gibi arındırılmış bir tanılama iletisi teslim eder. Özgün gizli son metin hiçbir zaman otomatik kaynak teslimatı için işaretlenmez. Yanıtları tekrar tekrar takılı bırakan modellerde son asistan turunun görünür yanıt yolu olması için "automatic" kullanın, araç çağırmada daha güçlü bir modele geçin, engellenen yük özetini görmek için Gateway ayrıntılı günlüğünü inceleyin veya her grup/kanal isteğinde görünür son yanıtları kullanmak için messages.groupChat.visibleReplies: "automatic" ayarlayın.
Etkin araç politikası kapsamında ileti aracı kullanılamıyorsa OpenClaw yanıtı sessizce engellemek yerine otomatik görünür yanıtlara geri döner. openclaw doctor bu uyumsuzluk hakkında uyarır.
Bu kural normal agent son metni için geçerlidir. Plugin'e ait konuşma bağlamaları, sahip Plugin'in döndürdüğü yanıtı sahiplenilmiş bağlı iş parçacığı turlarında görünür yanıt olarak kullanır; Plugin'in bu bağlama yanıtları için message(action=send) çağrısı yapması gerekmez.
Sorun giderme: grupta @bahsetme yazma göstergesini tetikliyor, ardından sessizlik oluyor (hata yok)
Belirti: bir grup/kanal @bahsetmesi yazma göstergesini gösterir ve Gateway günlüğü dispatch complete (queuedFinal=false, replies=0) bildirir, ancak odaya hiçbir ileti ulaşmaz. Aynı agent'a gönderilen DM'ler normal biçimde yanıtlanır.
Neden: grup/kanal görünür yanıt modu "message_tool" olarak çözümlenir; bu nedenle OpenClaw turu çalıştırır ancak agent message(action=send) çağrısı yapmadığı sürece son asistan metnini bastırır. Bu modda NO_REPLY sözleşmesi yoktur; mesaj aracı çağrısı yapılmaması, özgün son metnin özel kalması anlamına gelir. OpenClaw artık önemli kaynak turları için korumalı tek bir kurtarma yeniden denemesi yapar; kısa notlar, açıkça sessiz kalma, oda olayları, gönderim ilkesi tarafından reddedilen turlar ve zaten teslim edilmiş turlar yeniden denenmez. Normal grup ve kanal turları varsayılan olarak "automatic" kullanır; dolayısıyla bu belirti yalnızca messages.groupChat.visibleReplies (veya genel messages.visibleReplies) açıkça "message_tool" olarak ayarlandığında görülür. Harness defaultVisibleReplies burada geçerli değildir — grup/kanal çözümleyicisi bunu yok sayar; yalnızca doğrudan/kaynak sohbetlerini etkiler (Codex harness, doğrudan sohbet sonlarını bu şekilde bastırır).
Düzeltme: daha güçlü bir araç çağırma modeli seçin, "automatic" varsayılanına geri dönmek için açık "message_tool" geçersiz kılmasını kaldırın veya her grup/kanal isteğinde görünür yanıtları zorunlu kılmak için messages.groupChat.visibleReplies: "automatic" ayarını yapın. Önemli bir takılı kalmış son yanıt artık sessiz başarıyla sonuçlanmamalıdır; ya tek bir message(action=send) yeniden denemesiyle kurtarılmalı ya da temizlenmiş teslimat hatası tanılamasını göstermelidir. Gateway, dosya kaydedildikten sonra messages yapılandırmasını çalışırken yeniden yükler; Gateway'i yalnızca dağıtımda dosya izleme veya yapılandırmayı yeniden yükleme devre dışıysa yeniden başlatın.
Bahsetme türleri:
- Meta veri bahsetmeleri: Yerel platform @-bahsetmeleri. WhatsApp kendi kendine sohbet modunda yok sayılır.
- Metin kalıpları:
agents.list[].groupChat.mentionPatternsiçindeki güvenli regex kalıpları. Geçersiz kalıplar ve güvenli olmayan iç içe yinelemeler yok sayılır. - Bahsetme geçidi yalnızca algılama mümkün olduğunda (yerel bahsetmeler veya en az bir kalıp) uygulanır.
{ messages: { visibleReplies: "automatic", // doğrudan/kaynak sohbetleri için eski otomatik son yanıtları zorunlu kıl groupChat: { historyLimit: 50, unmentionedInbound: "room_event", // her zaman açık, bahsetme içermeyen oda sohbeti sessiz bağlama dönüşür visibleReplies: "message_tool", // isteğe bağlı; görünür oda yanıtları için message(action=send) gerektir }, }, agents: { list: [{ id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"] } }], },}messages.groupChat.historyLimit genel varsayılanı ayarlar. Kanallar channels.<channel>.historyLimit (veya hesap başına ayar) ile bunu geçersiz kılabilir. Devre dışı bırakmak için 0 ayarını yapın.
messages.groupChat.unmentionedInbound: "room_event", desteklenen kanallarda bahsetme içermeyen, her zaman açık grup/kanal mesajlarını sessiz oda bağlamı olarak gönderir. Bahsetme içeren mesajlar, komutlar ve doğrudan mesajlar kullanıcı isteği olarak kalır. Eksiksiz Discord, Slack ve Telegram örnekleri için Ortam oda olayları bölümüne bakın.
messages.visibleReplies genel kaynak olayı varsayılanıdır; messages.groupChat.visibleReplies grup/kanal kaynak olayları için bunu geçersiz kılar. messages.visibleReplies ayarlanmadığında doğrudan/kaynak sohbetleri, seçilen çalışma zamanı veya harness varsayılanını kullanır; ancak dahili WebChat doğrudan turları, Pi/Codex istem eşdeğerliği için otomatik son teslimatı kullanır. Görünür çıktı için kasıtlı olarak message(action=send) gerektirmek üzere messages.visibleReplies: "message_tool" ayarını yapın. Kanal izin listeleri ve bahsetme geçidi, bir olayın işlenip işlenmeyeceğini belirlemeye devam eder.
DM geçmişi sınırları
{ channels: { telegram: { dmHistoryLimit: 30, dms: { "123456789": { historyLimit: 50 }, }, }, },}Çözümleme: DM başına geçersiz kılma → sağlayıcı varsayılanı → sınır yok (tümü tutulur).
Bu çözümleyici, oturum anahtarı standart provider:direct:<id> (veya eski provider:dm:<id>) biçimini izleyen tüm kanallar için channels.<provider>.dmHistoryLimit ve channels.<provider>.dms.<id>.historyLimit değerlerini okur; dolayısıyla yalnızca sabit bir listede değil, hem paketlenmiş hem de Plugin kanallarında çalışır.
Kendi kendine sohbet modu
Kendi kendine sohbet modunu etkinleştirmek için kendi numaranızı allowFrom içine ekleyin (yerel @-bahsetmelerini yok sayar, yalnızca metin kalıplarına yanıt verir):
{ channels: { whatsapp: { allowFrom: ["+15555550123"], groups: { "*": { requireMention: true } }, }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["reisponde", "@openclaw"] }, }, ], },}Komutlar (sohbet komutlarının işlenmesi)
{ commands: { native: "auto", // desteklendiğinde yerel komutları kaydet nativeSkills: "auto", // desteklendiğinde yerel beceri komutlarını kaydet text: true, // sohbet mesajlarındaki /commands ifadelerini ayrıştır bash: false, // ! kullanımına izin ver (takma ad: /bash) bashForegroundMs: 2000, config: false, // /config kullanımına izin ver mcp: false, // /mcp kullanımına izin ver plugins: false, // /plugins kullanımına izin ver debug: false, // /debug kullanımına izin ver restart: true, // /restart + harici SIGUSR1 yeniden başlatma isteklerine izin ver ownerAllowFrom: ["discord:123456789012345678"], ownerDisplay: "raw", // raw | hash ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}", allowFrom: { "*": ["user1"], discord: ["user:123"], }, useAccessGroups: true, },}Komut ayrıntıları
- Bu blok, komut yüzeylerini yapılandırır. Güncel yerleşik + paketlenmiş komut kataloğu için Eğik Çizgi Komutları bölümüne bakın.
- Bu sayfa tam komut kataloğu değil, bir yapılandırma anahtarı referansıdır. QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, cihaz eşleştirme/pair, bellek/dreaming, telefon denetimi/phoneve Talk/voicegibi kanal/Plugin tarafından yönetilen komutlar, ilgili kanal/Plugin sayfalarında ve Eğik Çizgi Komutları bölümünde belgelenmiştir. - Metin komutları, başında
/bulunan bağımsız mesajlar olmalıdır. native: "auto", Discord/Telegram için yerel komutları etkinleştirir, Slack için devre dışı bırakır.nativeSkills: "auto", Discord/Telegram için yerel Skills komutlarını etkinleştirir, Slack için devre dışı bırakır.- Kanal başına geçersiz kılma:
channels.discord.commands.native(bool veya"auto"). Discord içinfalse, başlangıç sırasında yerel komut kaydını ve temizliğini atlar. - Yerel Skills kaydını kanal başına
channels.<provider>.commands.nativeSkillsile geçersiz kılın. channels.telegram.customCommands, ek Telegram bot menüsü girdileri ekler.bash: true, ana makine kabuğu için! <cmd>özelliğini etkinleştirir.tools.elevated.enabledayarını ve gönderenintools.elevated.allowFrom.<channel>içinde olmasını gerektirir.config: true,/configözelliğini etkinleştirir (openclaw.jsonöğesini okur/yazar). Gatewaychat.sendistemcileri için kalıcı/config set|unsetyazma işlemleri ayrıcaoperator.admingerektirir; salt okunur/config show, normal yazma kapsamlı operatör istemcileri tarafından kullanılabilir durumda kalır.mcp: true,mcp.serversaltındaki OpenClaw tarafından yönetilen MCP sunucusu yapılandırması için/mcpözelliğini etkinleştirir.plugins: true, Plugin keşfi, kurulumu ve etkinleştirme/devre dışı bırakma denetimleri için/pluginsözelliğini etkinleştirir.channels.<provider>.configWrites, kanal başına yapılandırma değişikliklerini denetler (varsayılan: true).- Çok hesaplı kanallarda
channels.<provider>.accounts.<id>.configWrites, söz konusu hesabı hedefleyen yazma işlemlerini de denetler (örneğin/allowlist --config --account <id>veya/config set channels.<provider>.accounts.<id>...). restart: false,/restartve hariciSIGUSR1yeniden başlatma isteklerini devre dışı bırakır. Varsayılan:true.ownerAllowFrom, yalnızca sahibe özel komutlar ve sahip geçitli kanal eylemleri için açık sahip izin listesidir.allowFromöğesinden ayrıdır.ownerDisplay: "hash", sistem istemindeki sahip kimliklerini karma değerine dönüştürür. Karma oluşturmayı denetlemek içinownerDisplaySecretayarını yapın.allowFrom, sağlayıcı başına ayarlanır. Ayarlandığında tek yetkilendirme kaynağıdır (kanal izin listeleri/eşleştirme veuseAccessGroupsyok sayılır).useAccessGroups: false,allowFromayarlanmadığında komutların erişim grubu ilkelerini atlamasına izin verir.- Komut belgeleri haritası:
- yerleşik + paketlenmiş katalog: Eğik Çizgi Komutları
- kanala özgü komut yüzeyleri: Kanallar
- QQ Bot komutları: QQ Bot
- eşleştirme komutları: Eşleştirme
- LINE kart komutu: LINE
- bellek Dreaming: Dreaming
İlgili
- Yapılandırma referansı — üst düzey anahtarlar
- Yapılandırma — agent'lar
- Kanallara genel bakış