Multi-Agent Routing
Amaç: tek bir çalışan Gateway içinde birden fazla yalıtılmış ajan (ayrı çalışma alanı +agentDir + oturumlar) ve birden fazla kanal hesabı (ör. iki WhatsApp). Gelen mesajlar bağlamalar aracılığıyla bir ajana yönlendirilir.
”Bir ajan” nedir?
Bir ajan, kendine ait şu bileşenlere sahip, tam kapsamlı bir beyindir:- Çalışma alanı (dosyalar, AGENTS.md/SOUL.md/USER.md, yerel notlar, persona kuralları).
- Kimlik doğrulama profilleri, model kaydı ve ajan başına yapılandırma için durum dizini (
agentDir). ~/.openclaw/agents/<agentId>/sessionsaltında oturum deposu (sohbet geçmişi + yönlendirme durumu).
sessions_history burada da daha güvenli oturumlar arası geri çağırma yoludur: ham bir transkript dökümü değil, sınırlı ve temizlenmiş bir görünüm döndürür. Asistan geri çağırması;
düşünme etiketlerini, <relevant-memories> iskeletini, düz metin tool-call XML
yüklerini (<tool_call>...</tool_call>,
<function_call>...</function_call>, <tool_calls>...</tool_calls>,
<function_calls>...</function_calls> ve kısaltılmış tool-call blokları dahil),
seviyesi düşürülmüş tool-call iskeletini, sızdırılmış ASCII/tam genişlikli model kontrol
belirteçlerini ve hatalı MiniMax tool-call XML’ini redaksiyon/kısaltma öncesinde ayıklar.
Ana ajanın kimlik bilgileri otomatik olarak paylaşılmaz. agentDir dizinini
ajanlar arasında asla yeniden kullanmayın (kimlik doğrulama/oturum çakışmalarına neden olur). Kimlik bilgilerini paylaşmak istiyorsanız,
auth-profiles.json dosyasını diğer ajanın agentDir dizinine kopyalayın.
Skills, her ajanın çalışma alanından ve ~/.openclaw/skills gibi paylaşılan köklerden yüklenir;
ardından yapılandırılmışsa etkin ajanın skill izin listesine göre süzülür. Paylaşılan bir temel için
agents.defaults.skills, ajan başına değiştirme için
agents.list[].skills kullanın. Bkz.
Skills: per-agent vs shared ve
Skills: agent skill allowlists.
Gateway bir ajanı (varsayılan) veya birden fazla ajanı yan yana barındırabilir.
Çalışma alanı notu: her ajanın çalışma alanı varsayılan cwd’dir, katı bir
sandbox değildir. Göreli yollar çalışma alanı içinde çözülür, ancak mutlak yollar
sandbox etkinleştirilmedikçe ana bilgisayardaki diğer konumlara erişebilir. Bkz.
Sandboxing.
Yollar (hızlı harita)
- Yapılandırma:
~/.openclaw/openclaw.json(veyaOPENCLAW_CONFIG_PATH) - Durum dizini:
~/.openclaw(veyaOPENCLAW_STATE_DIR) - Çalışma alanı:
~/.openclaw/workspace(veya~/.openclaw/workspace-<agentId>) - Ajan dizini:
~/.openclaw/agents/<agentId>/agent(veyaagents.list[].agentDir) - Oturumlar:
~/.openclaw/agents/<agentId>/sessions
Tek ajan modu (varsayılan)
Hiçbir şey yapmazsanız, OpenClaw tek bir ajan çalıştırır:agentIdvarsayılan olarakmainolur.- Oturumlar
agent:main:<mainKey>olarak anahtarlanır. - Çalışma alanı varsayılan olarak
~/.openclaw/workspaceolur (OPENCLAW_PROFILEayarlıysa~/.openclaw/workspace-<profile>). - Durum varsayılan olarak
~/.openclaw/agents/main/agentolur.
Ajan yardımcısı
Yeni bir yalıtılmış ajan eklemek için ajan sihirbazını kullanın:bindings ekleyin (veya sihirbazın yapmasına izin verin).
Şununla doğrulayın:
Hızlı başlangıç
Her ajan çalışma alanını oluşturun
Sihirbazı kullanın veya çalışma alanlarını elle oluşturun:Her ajan kendi
SOUL.md, AGENTS.md ve isteğe bağlı USER.md dosyalarını alır; ayrıca ~/.openclaw/agents/<agentId> altında özel bir agentDir ve oturum deposu da oluşturulur.Kanal hesaplarını oluşturun
Tercih ettiğiniz kanallarda ajan başına bir hesap oluşturun:Kanal kılavuzlarına bakın: Discord, Telegram, WhatsApp.
- Discord: ajan başına bir bot, Message Content Intent’i etkinleştirin, her belirteci kopyalayın.
- Telegram: BotFather üzerinden ajan başına bir bot, her belirteci kopyalayın.
- WhatsApp: her hesabı kendi telefon numarasına bağlayın.
Ajanları, hesapları ve bağlamaları ekleyin
agents.list altına ajanları, channels.<channel>.accounts altına kanal hesaplarını ekleyin ve bunları bindings ile bağlayın (örnekler aşağıda).Birden fazla ajan = birden fazla kişi, birden fazla kişilik
Birden fazla ajan ile heragentId, tamamen yalıtılmış bir persona haline gelir:
- Farklı telefon numaraları/hesaplar (kanal başına
accountId). - Farklı kişilikler (ajan başına
AGENTS.mdveSOUL.mdgibi çalışma alanı dosyaları). - Ayrı kimlik doğrulama + oturumlar (açıkça etkinleştirilmedikçe çapraz konuşma yoktur).
Ajanlar arası QMD bellek araması
Bir ajanın başka bir ajanın QMD oturum transkriptlerinde arama yapması gerekiyorsa,agents.list[].memorySearch.qmd.extraCollections altında
ek koleksiyonlar ekleyin.
Aynı paylaşılan transkript koleksiyonlarını her ajanın devralması gerekiyorsa yalnızca
agents.defaults.memorySearch.qmd.extraCollections kullanın.
Tek WhatsApp numarası, birden fazla kişi (DM bölme)
Tek bir WhatsApp hesabında kalırken farklı WhatsApp DM’lerini farklı ajanlara yönlendirebilirsiniz.peer.kind: "direct" ile
gönderen E.164’e (ör. +15551234567) göre eşleştirin. Yanıtlar yine aynı WhatsApp numarasından gelir
(ajan başına gönderici kimliği yoktur).
Önemli ayrıntı: doğrudan sohbetler ajanın ana oturum anahtarına daralır, bu nedenle gerçek yalıtım için
kişi başına bir ajan gerekir.
Örnek:
- DM erişim denetimi ajan başına değil, WhatsApp hesabı başına küreseldir (eşleme/izin listesi).
- Paylaşılan gruplar için grubu tek bir ajana bağlayın veya Broadcast groups kullanın.
Yönlendirme kuralları (mesajlar ajanı nasıl seçer)
Bağlamalar deterministiktir ve en spesifik olan kazanır:peereşleşmesi (tam DM/grup/kanal kimliği)parentPeereşleşmesi (iş parçacığı mirası)guildId + roles(Discord rol yönlendirmesi)guildId(Discord)teamId(Slack)- Bir kanal için
accountIdeşleşmesi - Kanal düzeyinde eşleşme (
accountId: "*") - Varsayılan ajana geri dönüş (
agents.list[].default, aksi halde listedeki ilk giriş, varsayılan:main)
peer + guildId), belirtilen tüm alanlar gerekir (AND semantiği).
Önemli hesap kapsamı ayrıntısı:
accountIdiçermeyen bir bağlama yalnızca varsayılan hesapla eşleşir.- Bir kanaldaki tüm hesaplar için geri dönüş amacıyla
accountId: "*"kullanın. - Aynı ajan için aynı bağlamayı daha sonra açık bir hesap kimliğiyle eklerseniz, OpenClaw mevcut yalnızca kanal düzeyindeki bağlamayı kopyalamak yerine hesap kapsamlı hale yükseltir.
Birden fazla hesap / telefon numarası
Birden fazla hesabı destekleyen kanallar (ör. WhatsApp), her oturumu tanımlamak içinaccountId kullanır. Her accountId farklı bir ajana yönlendirilebilir; böylece tek bir sunucu
oturumları karıştırmadan birden fazla telefon numarasını barındırabilir.
accountId atlandığında kanal düzeyinde varsayılan bir hesap istiyorsanız,
channels.<channel>.defaultAccount ayarlayın (isteğe bağlı). Ayarlanmazsa, OpenClaw önce varsa
default hesabına, aksi halde yapılandırılmış ilk hesap kimliğine (sıralı) geri döner.
Bu düzeni destekleyen yaygın kanallar şunlardır:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkbluebubbles,zalo,zalouser,nostr,feishu
Kavramlar
agentId: tek bir “beyin” (çalışma alanı, ajan başına kimlik doğrulama, ajan başına oturum deposu).accountId: tek bir kanal hesabı örneği (ör. WhatsApp hesabı"personal"ile"biz").binding: gelen mesajları(channel, accountId, peer)ve isteğe bağlı guild/team kimliklerine göre biragentId’ye yönlendirir.- Doğrudan sohbetler
agent:<agentId>:<mainKey>anahtarına daralır (ajan başına “main”;session.mainKey).
Platform örnekleri
Ajan başına Discord botları
Her Discord bot hesabı benzersiz biraccountId ile eşleşir. Her hesabı bir ajana bağlayın ve bot başına izin listelerini koruyun.
- Her botu guild’e davet edin ve Message Content Intent’i etkinleştirin.
- Belirteçler
channels.discord.accounts.<id>.tokeniçinde tutulur (varsayılan hesapDISCORD_BOT_TOKENkullanabilir).
Ajan başına Telegram botları
- BotFather ile ajan başına bir bot oluşturun ve her belirteci kopyalayın.
- Belirteçler
channels.telegram.accounts.<id>.botTokeniçinde tutulur (varsayılan hesapTELEGRAM_BOT_TOKENkullanabilir).
Ajan başına WhatsApp numaraları
Gateway’i başlatmadan önce her hesabı bağlayın:~/.openclaw/openclaw.json (JSON5):
Örnek: WhatsApp günlük sohbet + Telegram derin çalışma
Kanala göre bölün: WhatsApp’ı hızlı günlük bir ajana, Telegram’ı bir Opus ajanına yönlendirin.- Bir kanal için birden fazla hesabınız varsa, bağlamaya
accountIdekleyin (örneğin{ channel: "whatsapp", accountId: "personal" }). - Geri kalanları chat üzerinde bırakırken tek bir DM/grubu Opus’a yönlendirmek için o eş için bir
match.peerbağlaması ekleyin; eş eşleşmeleri her zaman kanal geneli kurallardan daha önceliklidir.
Örnek: aynı kanal, bir eş Opus’a
WhatsApp’ı hızlı ajan üzerinde tutun, ancak bir DM’yi Opus’a yönlendirin:Bir WhatsApp grubuna bağlanmış aile ajanı
Belirli bir WhatsApp grubuna özel bir aile ajanı bağlayın; mention geçitlemesi ve daha sıkı bir araç ilkesi kullanın:- Araç allow/deny listeleri araçlar içindir, skill’ler için değil. Bir skill’in bir
ikili dosya çalıştırması gerekiyorsa,
execizninin verildiğinden ve ikili dosyanın sandbox içinde bulunduğundan emin olun. - Daha sıkı geçitleme için
agents.list[].groupChat.mentionPatternsayarlayın ve kanal için grup izin listelerini etkin tutun.
Ajan Başına Sandbox ve Araç Yapılandırması
Her ajanın kendi sandbox ve araç kısıtlamaları olabilir:setupCommand, sandbox.docker altında bulunur ve kapsayıcı oluşturulurken bir kez çalıştırılır.
Çözümlenen kapsam "shared" olduğunda ajan başına sandbox.docker.* geçersiz kılmaları yok sayılır.
Faydalar:
- Güvenlik yalıtımı: Güvenilmeyen ajanlar için araçları kısıtlayın
- Kaynak kontrolü: Belirli ajanları sandbox içine alın, diğerlerini ana bilgisayarda tutun
- Esnek ilkeler: Ajan başına farklı izinler
tools.elevated küreseldir ve gönderici tabanlıdır; ajan başına yapılandırılamaz.
Ajan başına sınırlar gerekiyorsa exec’i reddetmek için agents.list[].tools kullanın.
Grup hedefleme için, @mention’ların doğru ajana temiz şekilde eşlenmesi amacıyla agents.list[].groupChat.mentionPatterns kullanın.
Ayrıntılı örnekler için Multi-Agent Sandbox & Tools bölümüne bakın.
İlgili
- Channel Routing — mesajların ajanlara nasıl yönlendirildiği
- Sub-Agents — arka planda ajan çalıştırmaları başlatma
- ACP Agents — harici kodlama düzeneklerini çalıştırma
- Presence — ajan varlığı ve kullanılabilirliği
- Session — oturum yalıtımı ve yönlendirme