Multi-agent
Çok ajanlı yönlendirme
Bir çalışan Gateway içinde, her biri kendi çalışma alanına, durum dizinine (agentDir) ve oturum geçmişine sahip birden çok yalıtılmış ajanı ve ayrıca birden çok kanal hesabını (örn. iki WhatsApp) çalıştırın. Gelen iletiler, bağlamalar aracılığıyla doğru ajana yönlendirilir.
Buradaki ajan, kişi başına tam kapsamdır: çalışma alanı dosyaları, kimlik doğrulama profilleri, model kayıt defteri ve oturum deposu. agentDir, bu ajan başına yapılandırmayı ~/.openclaw/agents/<agentId>/ konumunda tutan diskteki durum dizinidir. Bir bağlama, bir kanal hesabını (örn. bir Slack çalışma alanı veya WhatsApp numarası) bu ajanlardan biriyle eşler.
"Tek ajan" nedir?
Bir ajan, kendi kapsamı tamamen ayrılmış bir beyindir ve şunlara sahiptir:
- Çalışma alanı (dosyalar, AGENTS.md/SOUL.md/USER.md, yerel notlar, persona kuralları).
- Kimlik doğrulama profilleri, model kayıt defteri 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).
Kimlik doğrulama profilleri ajan başınadır. Her ajan kendi şuradan okur:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json
Skills her ajan çalışma alanından ve ~/.openclaw/skills gibi paylaşılan köklerden yüklenir, ardından yapılandırıldığında etkili ajan Skills izin listesine göre filtrelenir. Paylaşılan temel için agents.defaults.skills, ajan başına değiştirme için agents.list[].skills kullanın. Bkz. Skills: ajan başına ve paylaşılan ve Skills: ajan Skills izin listeleri.
Gateway, yan yana tek ajan (varsayılan) veya çok sayıda ajan barındırabilir.
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 ajan çalıştırır:
agentIdvarsayılan olarakmainolur.- Oturumlar
agent:main:<mainKey>olarak anahtarlanır. - Çalışma alanı varsayılan olarak
~/.openclaw/workspaceolur (veyaOPENCLAW_PROFILEayarlandığında~/.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:
openclaw agents add work
Ardından gelen iletileri yönlendirmek için bindings ekleyin (veya bunu sihirbazın yapmasına izin verin).
Şununla doğrulayın:
openclaw agents list --bindings
Hızlı başlangıç
Her ajan çalışma alanını oluşturun
Sihirbazı kullanın veya çalışma alanlarını elle oluşturun:
openclaw agents add coding
openclaw agents add social
Her ajan, SOUL.md, AGENTS.md ve isteğe bağlı USER.md içeren kendi çalışma alanını, ayrıca özel bir agentDir değerini ve ~/.openclaw/agents/<agentId> altında oturum deposunu alır.
Kanal hesapları oluşturun
Tercih ettiğiniz kanallarda ajan başına bir hesap oluşturun:
- 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: hesap başına her telefon numarasını bağlayın.
openclaw channels login --channel whatsapp --account work
Ajanları, hesapları ve bağlamaları ekleyin
Ajanları agents.list altına, kanal hesaplarını channels.<channel>.accounts altına ekleyin ve bunları bindings ile bağlayın (aşağıdaki örnekler).
Yeniden başlatın ve doğrulayın
openclaw gateway restart
openclaw agents list --bindings
openclaw channels status --probe
Birden çok ajan = birden çok kişi, birden çok kişilik
Birden çok ajan ile her agentId, tamamen yalıtılmış bir persona haline gelir:
- Farklı telefon numaraları/hesaplar (kanal başına
accountId). - Farklı kişilikler (
AGENTS.mdveSOUL.mdgibi ajan başına çalışma alanı dosyaları). - Ayrı kimlik doğrulama + oturumlar (açıkça etkinleştirilmedikçe çapraz konuşma yok).
Bu, birden çok kişinin tek bir Gateway sunucusunu paylaşırken AI "beyinlerini" ve verilerini yalıtılmış tutmasını sağlar.
Ajanlar arası QMD bellek araması
Bir ajanın başka bir ajanın QMD oturum dökümlerini araması gerekiyorsa agents.list[].memorySearch.qmd.extraCollections altına ek koleksiyonlar ekleyin. agents.defaults.memorySearch.qmd.extraCollections değerini yalnızca her ajanın aynı paylaşılan döküm koleksiyonlarını devralması gerektiğinde kullanın.
{
agents: {
defaults: {
workspace: "~/workspaces/main",
memorySearch: {
qmd: {
extraCollections: [{ path: "~/agents/family/sessions", name: "family-sessions" }],
},
},
},
list: [
{
id: "main",
workspace: "~/workspaces/main",
memorySearch: {
qmd: {
extraCollections: [{ path: "notes" }], // resolves inside workspace -> collection named "notes-main"
},
},
},
{ id: "family", workspace: "~/workspaces/family" },
],
},
memory: {
backend: "qmd",
qmd: { includeDefaultMemory: false },
},
}
Ek koleksiyon yolu ajanlar arasında paylaşılabilir, ancak yol ajan çalışma alanının dışındaysa koleksiyon adı açık kalır. Çalışma alanı içindeki yollar ajan kapsamlı kalır, böylece her ajan kendi döküm arama kümesini korur.
Tek WhatsApp numarası, birden çok kişi (DM ayrımı)
Tek WhatsApp hesabında kalırken farklı WhatsApp DM'lerini farklı ajanlara yönlendirebilirsiniz. peer.kind: "direct" ile gönderen E.164 üzerinde (ör. +15551234567) eşleştirin. Yanıtlar yine aynı WhatsApp numarasından gelir (ajan başına gönderen kimliği yoktur).
Örnek:
{
agents: {
list: [
{ id: "alex", workspace: "~/.openclaw/workspace-alex" },
{ id: "mia", workspace: "~/.openclaw/workspace-mia" },
],
},
bindings: [
{
agentId: "alex",
match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551230001" } },
},
{
agentId: "mia",
match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551230002" } },
},
],
channels: {
whatsapp: {
dmPolicy: "allowlist",
allowFrom: ["+15551230001", "+15551230002"],
},
},
}
Notlar:
- DM erişim denetimi ajan başına değil, WhatsApp hesabı başına geneldir (eşleştirme/izin listesi).
- Paylaşılan gruplar için grubu bir ajana bağlayın veya Yayın grupları kullanın.
Yönlendirme kuralları (iletiler ajanı nasıl seçer)
Bağlamalar deterministiktir ve en özel olan kazanır:
peer eşleşmesi
Tam DM/grup/kanal kimliği.
parentPeer eşleşmesi
Konu devralımı.
guildId + roller
Discord rol yönlendirmesi.
guildId
Discord.
teamId
Slack.
Bir kanal için accountId eşleşmesi
Hesap başına yedek.
Kanal düzeyi eşleşme
accountId: "*".
Varsayılan ajan
agents.list[].default değerine, yoksa ilk liste girdisine geri düşer; varsayılan: main.
Beraberlik bozma ve AND semantiği
- Aynı kademede birden çok bağlama eşleşirse yapılandırma sırasındaki ilk bağlama kazanır.
- Bir bağlama birden çok eşleşme alanı ayarlarsa (örneğin
peer+guildId), belirtilen tüm alanlar zorunludur (ANDsemantiği).
Hesap kapsamı ayrıntısı
accountIddeğerini atlayan bir bağlama yalnızca varsayılan hesapla eşleşir.- Tüm hesaplar genelinde kanal çapında yedek için
accountId: "*"kullanın. - Daha sonra aynı ajan için açık bir hesap kimliğiyle aynı bağlamayı eklerseniz OpenClaw mevcut yalnızca kanal bağlamasını çoğaltmak yerine hesap kapsamlı hale yükseltir.
Birden çok hesap / telefon numarası
Birden çok hesabı destekleyen kanallar (örn. WhatsApp), her oturum açmayı tanımlamak için accountId kullanır. Her accountId farklı bir ajana yönlendirilebilir; böylece tek sunucu, oturumları karıştırmadan birden çok telefon numarası barındırabilir.
accountId atlandığında kanal çapında varsayılan hesap istiyorsanız channels.<channel>.defaultAccount değerini ayarlayın (isteğe bağlı). Ayarlanmadığında OpenClaw varsa default değerine, yoksa ilk yapılandırılmış hesap kimliğine (sıralı) geri düşer.
Bu deseni destekleyen yaygın kanallar şunları içerir:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkbluebubbles,zalo,zalouser,nostr,feishu
Kavramlar
agentId: tek "beyin" (çalışma alanı, ajan başına kimlik doğrulama, ajan başına oturum deposu).accountId: tek kanal hesabı örneği (örn. WhatsApp hesabı"personal"ile"biz").binding: gelen iletileri(channel, accountId, peer)ve isteğe bağlı guild/team kimlikleriyle biragentIddeğerine yönlendirir.- Doğrudan sohbetler
agent:<agentId>:<mainKey>değerine daralır (ajan başına "ana";session.mainKey).
Platform örnekleri
Ajan başına Discord botları
Her Discord bot hesabı benzersiz bir accountId ile eşlenir. Her hesabı bir ajana bağlayın ve izin listelerini bot başına tutun.
{
agents: {
list: [
{ id: "main", workspace: "~/.openclaw/workspace-main" },
{ id: "coding", workspace: "~/.openclaw/workspace-coding" },
],
},
bindings: [
{ agentId: "main", match: { channel: "discord", accountId: "default" } },
{ agentId: "coding", match: { channel: "discord", accountId: "coding" } },
],
channels: {
discord: {
groupPolicy: "allowlist",
accounts: {
default: {
token: "DISCORD_BOT_TOKEN_MAIN",
guilds: {
"123456789012345678": {
channels: {
"222222222222222222": { allow: true, requireMention: false },
},
},
},
},
coding: {
token: "DISCORD_BOT_TOKEN_CODING",
guilds: {
"123456789012345678": {
channels: {
"333333333333333333": { allow: true, requireMention: false },
},
},
},
},
},
},
},
}
- Her botu guild'e davet edin ve Message Content Intent'i etkinlestirin.
- Token'lar
channels.discord.accounts.<id>.tokenicinde bulunur (varsayilan hesapDISCORD_BOT_TOKENkullanabilir).
Telegram bots per agent
{
agents: {
list: [
{ id: "main", workspace: "~/.openclaw/workspace-main" },
{ id: "alerts", workspace: "~/.openclaw/workspace-alerts" },
],
},
bindings: [
{ agentId: "main", match: { channel: "telegram", accountId: "default" } },
{ agentId: "alerts", match: { channel: "telegram", accountId: "alerts" } },
],
channels: {
telegram: {
accounts: {
default: {
botToken: "123456:ABC...",
dmPolicy: "pairing",
},
alerts: {
botToken: "987654:XYZ...",
dmPolicy: "allowlist",
allowFrom: ["tg:123456789"],
},
},
},
},
}
- BotFather ile ajan basina bir bot olusturun ve her token'i kopyalayin.
- Token'lar
channels.telegram.accounts.<id>.botTokenicinde bulunur (varsayilan hesapTELEGRAM_BOT_TOKENkullanabilir).
WhatsApp numbers per agent
Gateway'i baslatmadan once her hesabi baglayin:
openclaw channels login --channel whatsapp --account personal
openclaw channels login --channel whatsapp --account biz
~/.openclaw/openclaw.json (JSON5):
{
agents: {
list: [
{
id: "home",
default: true,
name: "Home",
workspace: "~/.openclaw/workspace-home",
agentDir: "~/.openclaw/agents/home/agent",
},
{
id: "work",
name: "Work",
workspace: "~/.openclaw/workspace-work",
agentDir: "~/.openclaw/agents/work/agent",
},
],
},
// Deterministic routing: first match wins (most-specific first).
bindings: [
{ agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
{ agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
// Optional per-peer override (example: send a specific group to work agent).
{
agentId: "work",
match: {
channel: "whatsapp",
accountId: "personal",
peer: { kind: "group", id: "[email protected]" },
},
},
],
// Off by default: agent-to-agent messaging must be explicitly enabled + allowlisted.
tools: {
agentToAgent: {
enabled: false,
allow: ["home", "work"],
},
},
channels: {
whatsapp: {
accounts: {
personal: {
// Optional override. Default: ~/.openclaw/credentials/whatsapp/personal
// authDir: "~/.openclaw/credentials/whatsapp/personal",
},
biz: {
// Optional override. Default: ~/.openclaw/credentials/whatsapp/biz
// authDir: "~/.openclaw/credentials/whatsapp/biz",
},
},
},
},
}
Yaygin kaliplar
WhatsApp daily + Telegram deep work
Kanala gore ayirin: WhatsApp'i hizli bir gunluk ajana, Telegram'i ise bir Opus ajanina yonlendirin.
{
agents: {
list: [
{
id: "chat",
name: "Everyday",
workspace: "~/.openclaw/workspace-chat",
model: "anthropic/claude-sonnet-4-6",
},
{
id: "opus",
name: "Deep Work",
workspace: "~/.openclaw/workspace-opus",
model: "anthropic/claude-opus-4-6",
},
],
},
bindings: [
{ agentId: "chat", match: { channel: "whatsapp" } },
{ agentId: "opus", match: { channel: "telegram" } },
],
}
Notlar:
- Bir kanal icin birden fazla hesabiniz varsa, baglamaya
accountIdekleyin (ornegin{ channel: "whatsapp", accountId: "personal" }). - Geri kalanini sohbette tutarken tek bir DM/grubu Opus'a yonlendirmek icin, o es icin bir
match.peerbaglamasi ekleyin; es eslesmeleri her zaman kanal geneli kurallara gore onceliklidir.
Same channel, one peer to Opus
WhatsApp'i hizli ajanda tutun, ancak bir DM'yi Opus'a yonlendirin:
{
agents: {
list: [
{
id: "chat",
name: "Everyday",
workspace: "~/.openclaw/workspace-chat",
model: "anthropic/claude-sonnet-4-6",
},
{
id: "opus",
name: "Deep Work",
workspace: "~/.openclaw/workspace-opus",
model: "anthropic/claude-opus-4-6",
},
],
},
bindings: [
{
agentId: "opus",
match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551234567" } },
},
{ agentId: "chat", match: { channel: "whatsapp" } },
],
}
Es baglamalari her zaman kazanir, bu nedenle bunlari kanal geneli kuralin uzerinde tutun.
Family agent bound to a WhatsApp group
Ozel bir aile ajanini tek bir WhatsApp grubuna, bahsetme kapisi ve daha siki bir arac ilkesiyle baglayin:
{
agents: {
list: [
{
id: "family",
name: "Family",
workspace: "~/.openclaw/workspace-family",
identity: { name: "Family Bot" },
groupChat: {
mentionPatterns: ["@family", "@familybot", "@Family Bot"],
},
sandbox: {
mode: "all",
scope: "agent",
},
tools: {
allow: [
"exec",
"read",
"sessions_list",
"sessions_history",
"sessions_send",
"sessions_spawn",
"session_status",
],
deny: ["write", "edit", "apply_patch", "browser", "canvas", "nodes", "cron"],
},
},
],
},
bindings: [
{
agentId: "family",
match: {
channel: "whatsapp",
peer: { kind: "group", id: "[email protected]" },
},
},
],
}
Notlar:
- Arac izin/engelleme listeleri araclardir, Skills degildir. Bir skill'in bir ikiliyi calistirmasi gerekiyorsa,
execicin izin verildiginden ve ikilinin sandbox icinde mevcut oldugundan emin olun. - Daha siki gecis kontrolu icin
agents.list[].groupChat.mentionPatternsayarini yapin ve kanal icin grup izin listelerini etkin tutun.
Ajan basina sandbox ve arac yapilandirmasi
Her ajanin kendi sandbox'i ve arac kisitlamalari olabilir:
{
agents: {
list: [
{
id: "personal",
workspace: "~/.openclaw/workspace-personal",
sandbox: {
mode: "off", // No sandbox for personal agent
},
// No tool restrictions - all tools available
},
{
id: "family",
workspace: "~/.openclaw/workspace-family",
sandbox: {
mode: "all", // Always sandboxed
scope: "agent", // One container per agent
docker: {
// Optional one-time setup after container creation
setupCommand: "apt-get update && apt-get install -y git curl",
},
},
tools: {
allow: ["read"], // Only read tool
deny: ["exec", "write", "edit", "apply_patch"], // Deny others
},
},
],
},
}
Avantajlar:
- Guvenlik yalitimi: guvenilmeyen ajanlar icin araclari kisitlayin.
- Kaynak kontrolu: belirli ajanlari sandbox'a alirken digerlerini host uzerinde tutun.
- Esnek ilkeler: ajan basina farkli izinler.
Ayrintili ornekler icin Cok ajanli sandbox ve araclar sayfasina bakin.
Ilgili
- ACP ajanlari — harici kodlama kosum takimlarini calistirma
- Kanal yonlendirme — mesajlarin ajanlara nasil yonlendirildigi
- Varlik — ajan varligi ve kullanilabilirligi
- Oturum — oturum yalitimi ve yonlendirme
- Alt ajanlar — arka plan ajan calismalari baslatma