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ı (örn. iki WhatsApp). Gelen mesajlar, bağlamalar aracılığıyla bir ajana yönlendirilir.
What is “one agent”?
Bir ajan, aşağıdakilerin her birine sahip, kapsamı tamamen ayrılmış bir beyindir:- Çalışma alanı (dosyalar, AGENTS.md/SOUL.md/USER.md, yerel notlar, persona kuralları).
- Durum dizini (
agentDir) — kimlik doğrulama profilleri, model kayıt defteri ve ajan başına yapılandırma. - Oturum deposu (sohbet geçmişi + yönlendirme durumu) —
~/.openclaw/agents/<agentId>/sessionsaltında.
agentDir’yi
ajanlar arasında asla yeniden kullanmayın (kimlik doğrulama/oturum çakışmalarına yol açar). Kimlik bilgilerini paylaşmak istiyorsanız, auth-profiles.json’yi diğer ajanın
agentDir dizinine kopyalayın.
Skills, her çalışma alanının skills/ klasörü üzerinden ajan başınadır; paylaşılan Skills
~/.openclaw/skills’dan kullanılabilir. Skills: ajan başına vs paylaşılan.
Gateway tek bir ajanı (varsayılan) veya birden çok 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,
sandboxing etkin değilse ana makinedeki diğer konumlara erişebilir. 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
Single-agent mode (default)
Hiçbir şey yapmazsanız, OpenClaw tek bir ajan çalıştırır:agentIdvarsayılan olarakmain’dir.- Oturumlar
agent:main:<mainKey>olarak anahtarlanır. - Çalışma alanı varsayılan olarak
~/.openclaw/workspace’dur (OPENCLAW_PROFILEayarlandığında~/.openclaw/workspace-<profile>). - Durum varsayılan olarak
~/.openclaw/agents/main/agent’dir.
Ajan yardımcısı
Yeni bir yalıtılmış ajan eklemek için ajan sihirbazını kullanın:bindings ekleyin (veya sihirbazın eklemesine izin verin).
Şu komutla doğrulayın:
Birden fazla ajan = birden fazla kişi, birden fazla kişilik
Birden fazla ajan ile her biragentId tamamen yalıtılmış bir persona olur:
- Farklı telefon numaraları/hesaplar (kanal başına
accountId). - Farklı kişilikler (ajan başına çalışma alanı dosyaları, örn.
AGENTS.mdveSOUL.md). - Ayrı kimlik doğrulama + oturumlar (açıkça etkinleştirilmedikçe çapraz etkileşim yoktur).
Tek WhatsApp numarası, birden fazla kişi (DM bölme)
Tek bir WhatsApp hesabı üzerinde kalırken farklı WhatsApp DM’lerini farklı ajanlara yönlendirebilirsiniz. Gönderici E.164 (örn.+15551234567) üzerinde peer.kind: "direct" ile 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 çöker; gerçek yalıtım için kişi başına bir ajan gerekir.
Örnek:
- DM erişim denetimi WhatsApp hesabı başına küreseldir (eşleştirme/izin listesi), ajan başına değildir.
- Paylaşılan gruplar için, grubu tek bir ajana bağlayın veya Yayın grupları kullanın.
Yönlendirme kuralları (mesajlar nasıl ajan 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ığı kalıtımı)guildId + roles(Discord rol yönlendirmesi)guildId(Discord)teamId(Slack)- Bir kanal için
accountIdeşleşmesi - Kanal düzeyi eşleşme (
accountId: "*") - Varsayılan ajana geri dönüş (
agents.list[].default, aksi halde ilk liste girdisi; varsayılan:main)
peer + guildId), belirtilen tüm alanlar zorunludur (AND semantiği).
Birden fazla hesap / telefon numarası
Birden fazla hesabı destekleyen kanallar (örn. WhatsApp), her oturumu tanımlamak içinaccountId kullanır. Her bir accountId farklı bir ajana yönlendirilebilir; böylece tek bir sunucu,
oturumları karıştırmadan birden fazla telefon numarasını barındırabilir.
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 (örn. WhatsApp hesabı"personal"vs"biz").binding: gelen mesajları(channel, accountId, peer)ve isteğe bağlı olarak lonca/takım kimliklerine göre biragentId’e yönlendirir.- Doğrudan sohbetler
agent:<agentId>:<mainKey>’ya çöker (ajan başına “ana”;session.mainKey).
Örnek: iki WhatsApp → iki ajan
~/.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 ajana, Telegram’ı Opus ajana yönlendirin.- Bir kanal için birden fazla hesabınız varsa, bağlamaya
accountIdekleyin (örneğin{ channel: "whatsapp", accountId: "personal" }). - Kalanları sohbette tutarken 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 genelindeki kuralları yener.
Örnek: aynı kanal, bir eşi Opus’a
WhatsApp’ı hızlı ajan üzerinde tutun, ancak tek bir DM’yi Opus’a yönlendirin:Bir WhatsApp grubuna bağlı aile ajanı
Bahsetme kapılaması ve daha sıkı bir araç politikası ile, tek bir WhatsApp grubuna adanmış bir aile ajanı bağlayın:- Araç izin/verme listeleri araçlar içindir, Skills değildir. Bir Skill bir ikili çalıştırmak zorundaysa,
exec’nin izinli olduğundan ve ikilinin sandbox içinde mevcut olduğundan emin olun. - Daha sıkı kapılama 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ı
v2026.1.6’dan itibaren her ajan kendi sandbox ve araç kısıtlamalarına sahip olabilir:setupCommand, sandbox.docker altında bulunur ve konteyner oluşturma sırasında bir kez çalışı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 denetimi: Bazı ajanları sandbox içine alırken diğerlerini ana makinede tutun
- Esnek politikalar: Ajan başına farklı izinler
tools.elevated küreseldir ve gönderici temellidir; ajan başına yapılandırılamaz.
Ajan başına sınırlar gerekiyorsa, agents.list[].tools kullanarak exec’i reddedin.
Grup hedefleme için, @bahsetmelerin doğru ajana temiz biçimde eşlenmesi amacıyla agents.list[].groupChat.mentionPatterns kullanın.
Ayrıntılı örnekler için Çoklu Ajan Sandbox & Araçlar bölümüne bakın.