Multi-agent
Çoklu ajan yönlendirmesi
Tek bir Gateway işleminde, her biri kendi çalışma alanına, durum dizinine (agentDir) ve SQLite destekli oturum geçmişine sahip birden fazla yalıtılmış agent'ın yanı sıra birden fazla kanal hesabı (ör. iki WhatsApp numarası) çalıştırın. Gelen mesajlar bağlamalar aracılığıyla doğru agent'a yönlendirilir.
Bir agent, persona başına kapsamın tamamıdır: çalışma alanı dosyaları, kimlik doğrulama profilleri, model kayıt defteri ve oturum deposu. Bir bağlama, bir kanal hesabını (bir Slack çalışma alanı, bir WhatsApp numarası vb.) bu agent'lardan biriyle eşler.
Bir agent nedir
Her agent'ın kendine ait şunları vardır:
- Ç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, agent başına yapılandırma. - Oturum deposu:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqliteiçindeki sohbet geçmişi ve yönlendirme durumu.
Kimlik doğrulama profilleri agent başınadır ve şuradan okunur:
~/.openclaw/agents/<agentId>/agent/auth-profiles.jsonSkills, her agent çalışma alanından ve ~/.openclaw/skills gibi paylaşılan köklerden yüklenir, ardından geçerli agent becerisi izin listesine göre filtrelenir. Paylaşılan bir temel için agents.defaults.skills, agent başına değiştirme için agents.entries.*.skills kullanın (açık girdiler varsayılanın yerini alır, onunla birleştirilmez). Bkz. Skills: agent başına ve paylaşılan ve Skills: agent izin listeleri.
Plugin'e ait depolama, ilgili Plugin'in yapılandırmasını izler; ikinci bir agent eklemek her genel Plugin deposunu otomatik olarak ayırmaz. Örneğin personaların derlenmiş wiki bilgisini paylaşmaması gerektiğinde agent başına Memory Wiki kasalarını yapılandırın.
Yollar
| Ne | Varsayılan | Geçersiz kılma |
|---|---|---|
| Yapılandırma | ~/.openclaw/openclaw.json |
OPENCLAW_CONFIG_PATH |
| Durum dizini | ~/.openclaw |
OPENCLAW_STATE_DIR |
| Varsayılan agent'ın çalışma alanı | ~/.openclaw/workspace (OPENCLAW_PROFILE ayarlandığında workspace-<profile>) |
agents.entries.*.workspace, ardından agents.defaults.workspace veya OPENCLAW_WORKSPACE_DIR |
| Diğer agent'ların çalışma alanı | <stateDir>/workspace-<agentId> (ayarlandığında <agents.defaults.workspace>/<agentId>) |
agents.entries.*.workspace |
| Agent dizini | ~/.openclaw/agents/<agentId>/agent |
agents.entries.*.agentDir |
| Oturumlar ve dökümler | ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite |
— |
| Eski/arşivlenmiş oturum yapıtları | ~/.openclaw/agents/<agentId>/sessions |
— |
Tek agent modu (varsayılan)
Hiçbir şey yapılandırmazsanız OpenClaw tek bir agent çalıştırır:
agentIdvarsayılan olarakmaindeğerini alır.- Oturumlar
agent:main:<mainKey>olarak anahtarlanır (varsayılanmainKey,maindeğeridir). - Çalışma alanı varsayılan olarak
~/.openclaw/workspacedeğerini alır (OPENCLAW_PROFILE,defaultdışında bir değere ayarlandığındaworkspace-<profile>). - Durum varsayılan olarak
~/.openclaw/agents/main/agentdeğerini alır.
Agent yardımcısı
Yeni bir yalıtılmış agent ekleyin:
openclaw agents add workBayraklar: --workspace <dir>, --model <id>, --agent-dir <dir>, --bind <channel[:accountId]> (tekrarlanabilir), --non-interactive (--workspace gerektirir).
Gelen mesajları yönlendirmek için bindings ekleyin (sihirbaz bunu sizin için yapmayı önerir), ardından doğrulayın:
openclaw agents list --bindingsHızlı başlangıç
Her agent çalışma alanını oluşturun
openclaw agents add codingopenclaw agents add socialHer agent, SOUL.md, AGENTS.md ve isteğe bağlı USER.md içeren kendi çalışma alanının yanı sıra özel bir agentDir ve ~/.openclaw/agents/<agentId> altında bir oturum deposu edinir.
Kanal hesaplarını oluşturun
Tercih ettiğiniz kanallarda her agent için bir hesap oluşturun:
- Discord: agent başına bir bot oluşturun, Message Content Intent seçeneğini etkinleştirin ve her belirteci kopyalayın.
- Telegram: BotFather aracılığıyla agent başına bir bot oluşturun ve her belirteci kopyalayın.
- WhatsApp: her hesap için ilgili telefon numarasını bağlayın.
openclaw channels login --channel whatsapp --account workAgent'ları, hesapları ve bağlamaları ekleyin
Agent'ları agents.entries altında, kanal hesaplarını channels.<channel>.accounts altında ekleyin ve bunları bindings ile bağlayın (aşağıdaki örneklere bakın).
Yeniden başlatın ve doğrulayın
openclaw gateway restartopenclaw agents list --bindingsopenclaw channels status --probeBirden fazla agent, birden fazla persona
Yapılandırılan her agentId, temel agent durumu için ayrı bir persona sınırıdır:
- Kanal başına farklı hesaplar (
accountIdbaşına). - Farklı kişilikler (agent başına
AGENTS.md/SOUL.md). - Agent'lar arası erişimin yalnızca açık özellikler veya Plugin yapılandırması aracılığıyla etkinleştirildiği ayrı kimlik doğrulama ve oturumlar.
Bu, temel agent durumunu ayrı tutarken birden fazla kişinin tek bir Gateway'i paylaşmasına olanak tanır.
Agent başına Memory Wiki kasaları
Memory Wiki varsayılan olarak tek bir genel kasa kullanır. Bir destek agent'ının
derlenmiş bilgisini bir pazarlama agent'ının bilgisinden ayrı tutmak için
plugins.entries.memory-wiki.config.vault.scope değerini agent olarak ayarlayın:
{ plugins: { entries: { "memory-wiki": { enabled: true, config: { vault: { scope: "agent", path: "~/.openclaw/wiki", }, }, }, }, },}Yapılandırılan yol üst dizindir. OpenClaw normalize edilmiş
agent kimliğini ekleyerek ~/.openclaw/wiki/support ve
~/.openclaw/wiki/marketing gibi yollar oluşturur. Birden fazla agent yapılandırıldığında
agent kapsamlı CLI ve Gateway işlemleri açıkça bir agent belirtilmesini gerektirir. Köprü
filtreleme, geçiş ve güven sınırı ayrıntıları için
Agent başına Memory Wiki kasaları bölümüne bakın.
Agent'lar arası QMD bellek araması
Bir agent'ın başka bir agent'ın QMD oturum dökümlerinde arama yapmasına izin vermek için agents.entries.*.memory.search.qmd.extraCollections altına ek koleksiyonlar ekleyin. Her agent'ın aynı koleksiyonları paylaşması gerektiğinde memory.search.qmd.extraCollections kullanın.
{ agents: { defaults: { workspace: "~/workspaces/main", }, entries: { main: { workspace: "~/workspaces/main", memory: { search: { qmd: { extraCollections: [{ path: "notes" }], // çalışma alanı içinde çözümlenir -> "notes-main" adlı koleksiyon }, }, }, }, family: { workspace: "~/workspaces/family" }, }, }, memory: { backend: "qmd", search: { qmd: { extraCollections: [{ path: "~/agents/family/sessions", name: "family-sessions" }], }, }, qmd: { includeDefaultMemory: false }, },}Ek bir koleksiyon yolu agent'lar arasında paylaşılabilir, ancak yol agent çalışma alanının dışındaysa name açıkça belirtilmiş olarak kalır. Çalışma alanının içindeki yollar agent kapsamlı kalır; böylece her agent kendi döküm arama kümesini korur.
Tek WhatsApp numarası, birden fazla kişi (DM ayrımı)
Gönderenin E.164 (+15551234567) değerini peer.kind: "direct" ile eşleştirerek tek bir WhatsApp hesabındaki farklı WhatsApp DM'lerini farklı agent'lara yönlendirin. Yanıtlar yine aynı WhatsApp numarasından gelir; agent başına gönderen kimliği yoktur.
{ 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"], }, },}DM erişim denetimi (eşleştirme/izin listesi), agent başına değil WhatsApp hesabı başına geneldir. Paylaşılan gruplar için grubu tek bir agent'a bağlayın veya Yayın gruplarını kullanın.
Yönlendirme kuralları
Bağlamalar deterministiktir ve en özel eşleşme kazanır. Tam katman sıralaması (tam eş, üst eş, eş joker karakteri, lonca+roller, lonca, ekip, hesap, kanal, varsayılan agent) için Kanal yönlendirme bölümüne bakın. Burada özellikle belirtilmesi gereken birkaç kural:
- Aynı katmanda birden fazla bağlama eşleşirse yapılandırma sırasındaki ilk bağlama kazanır.
- Bir bağlama birden fazla eşleşme alanı ayarlarsa (örneğin
peer+guildId), belirtilen tüm alanlar eşleşmelidir (ANDsemantiği). accountIddeğerini atlayan bir bağlama, tüm hesaplarla değil yalnızca varsayılan hesapla eşleşir. Kanal genelinde geri dönüş içinaccountId: "*", tek bir hesap içinaccountId: "<name>"kullanın. Aynı bağlamayı açık bir hesap kimliğiyle yeniden eklemek, mevcut yalnızca kanal bağlamasını çoğaltmak yerine yükseltir.
Birden fazla hesap / telefon numarası
Birden fazla hesabı destekleyen kanallar (ör. WhatsApp), her oturum açma işlemini tanımlamak için accountId kullanır. Her accountId kendi agent'ına yönlendirilir; böylece tek bir sunucu, oturumları karıştırmadan birden fazla telefon numarasını barındırabilir.
accountId belirtilmediğinde kullanılacak hesabı seçmek için channels.<channel>.defaultAccount değerini ayarlayın. Ayarlanmadığında OpenClaw, varsa default değerini; yoksa yapılandırılan ilk hesap kimliğini (sıralanmış olarak) kullanır.
Birden fazla hesabı destekleyen kanallar: discord, feishu, googlechat, imessage, irc, line, mattermost, matrix, nextcloud-talk, nostr, signal, slack, telegram, whatsapp, zalo, zalouser.
Kavramlar
agentId: tek bir "beyin" (çalışma alanı, aracı başına kimlik doğrulama, aracı başına oturum deposu).accountId: tek bir kanal hesabı örneği (ör. WhatsApp hesabıpersonalilebiz).binding: gelen mesajları(channel, accountId, peer)ve isteğe bağlı olarak guild/ekip kimliklerine göre biragentIdöğesine yönlendirir.- Doğrudan sohbetler
agent:<agentId>:<mainKey>altında birleştirilir (aracı başına "ana"; bkz.session.mainKey).
Platform örnekleri
Aracı başına Discord botları
Her Discord bot hesabı benzersiz bir accountId ile eşleşir. Her hesabı bir aracıya bağlayın ve izin listelerini bot başına ayrı 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 seçeneğini etkinleştirin.
- Tokenlar
channels.discord.accounts.<id>.tokeniçinde bulunur (varsayılan hesapDISCORD_BOT_TOKENkullanabilir).
Aracı başına Telegram botları
{ 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 her aracı için bir bot oluşturun ve her tokenı kopyalayın.
- Tokenlar
channels.telegram.accounts.<id>.botTokeniçinde bulunur (varsayılan hesapTELEGRAM_BOT_TOKENkullanabilir). - Aynı Telegram grubunda birden fazla bot için her botu davet edin ve yanıtlaması gereken bottan @bahsedin.
- Her grup botu için BotFather Privacy Mode'u devre dışı bırakın (
/setprivacy-> Disable), ardından Telegram'ın ayarı uygulaması için botu kaldırıp yeniden ekleyin. - Gruplara
channels.telegram.groupsile izin verin veya yalnızca güvenilen grup dağıtımlarındagroupPolicy: "open"kullanın. - Gönderen kullanıcı kimliklerini
groupAllowFromiçine yerleştirin. Grup ve süper grup kimliklerigroupAllowFromiçine değil,channels.telegram.groupsiçine konulmalıdır. - Her botun kendi aracısına yönlendirilmesi için
accountIdile bağlayın.
Aracı başına WhatsApp numaraları
Gateway'i başlatmadan önce her hesabı bağlayın:
openclaw channels login --channel whatsapp --account personalopenclaw 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", }, ], }, // Belirlenimci yönlendirme: ilk eşleşme kazanır (önce en özgül olan). bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, // İsteğe bağlı eş düzeyi geçersiz kılma (örnek: belirli bir grubu iş aracısına gönderin). { agentId: "work", match: { channel: "whatsapp", accountId: "personal", peer: { kind: "group", id: "1203630...@g.us" }, }, }, ], // Varsayılan olarak kapalıdır: aracılar arası mesajlaşma açıkça etkinleştirilmeli ve izin listesine alınmalıdır. tools: { agentToAgent: { enabled: false, allow: ["home", "work"], }, }, channels: { whatsapp: { accounts: { personal: { // İsteğe bağlı geçersiz kılma. Varsayılan: ~/.openclaw/credentials/whatsapp/personal // authDir: "~/.openclaw/credentials/whatsapp/personal", }, biz: { // İsteğe bağlı geçersiz kılma. Varsayılan: ~/.openclaw/credentials/whatsapp/biz // authDir: "~/.openclaw/credentials/whatsapp/biz", }, }, }, },}Yaygın kalıplar
Günlük WhatsApp + Telegram'da derin çalışma
Kanala göre ayırın: WhatsApp'ı hızlı bir gündelik aracıya, Telegram'ı ise bir Opus aracısına yönlendirin.
{ 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", accountId: "*" } }, { agentId: "opus", match: { channel: "telegram", accountId: "*" } }, ],}Bu örneklerde accountId: "*" kullanıldığından daha sonra hesap ekleseniz bile bağlamalar çalışmayı sürdürür. Geri kalanını sohbet aracısında tutarken tek bir DM/grubu Opus'a yönlendirmek için o eş düzeyi adına bir match.peer bağlaması ekleyin; eş düzeyi eşleşmeleri her zaman kanal genelindeki kurallardan önce gelir.
Aynı kanal, bir eş düzeyi Opus'a
WhatsApp'ı hızlı aracıda tutun ancak bir DM'yi Opus'a yönlendirin:
{ 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", accountId: "*", peer: { kind: "direct", id: "+15551234567" } }, }, { agentId: "chat", match: { channel: "whatsapp", accountId: "*" } }, ],}Eş düzeyi bağlamaları her zaman önceliklidir; bu nedenle bunları kanal genelindeki kuralın üzerinde tutun.
Bir WhatsApp grubuna bağlı aile aracısı
Özel bir aile aracısını, @bahsetme koşulu ve daha sıkı bir araç politikasıyla tek bir WhatsApp grubuna bağlayın:
{ 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: "120363999999999999@g.us" }, }, }, ],}Araç izin/ret listeleri beceriler değil, araçlardır. Bir becerinin ikili dosya çalıştırması gerekiyorsa exec öğesine izin verildiğinden ve ikili dosyanın sandbox içinde bulunduğundan emin olun. Daha sıkı koşullandırma için agents.entries.*.groupChat.mentionPatterns değerini ayarlayın ve kanal için grup izin listelerini etkin tutun.
Aracı başına sandbox ve araç yapılandırması
Her aracının kendi sandbox ve araç kısıtlamaları olabilir:
{ agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off", // Kişisel aracı için sandbox yok }, // Araç kısıtlaması yoktur; tüm araçlar kullanılabilir }, { id: "family", workspace: "~/.openclaw/workspace-family", sandbox: { mode: "all", // Her zaman sandbox içinde scope: "agent", // Aracı başına bir container docker: { // Container oluşturulduktan sonra isteğe bağlı tek seferlik kurulum setupCommand: "apt-get update && apt-get install -y git curl", }, }, tools: { allow: ["read"], // Yalnızca okuma aracı deny: ["exec", "write", "edit", "apply_patch"], // Diğerlerini reddet }, }, ], },}Bu yapı şunları sağlar:
- Güvenlik yalıtımı: güvenilmeyen aracılar için araçları kısıtlayın.
- Kaynak denetimi: bazı aracıları sandbox içinde çalıştırırken diğerlerini ana sistemde tutun.
- Esnek politikalar: aracı başına farklı izinler.
Ayrıntılı örnekler için Çok aracılı sandbox ve araçlar sayfasına bakın.
İlgili
- ACP ajanları — harici kodlama sistemlerini çalıştırma
- Kanal yönlendirme — iletilerin ajanlara nasıl yönlendirildiği
- Varlık — ajan varlığı ve kullanılabilirliği
- Oturum — oturum yalıtımı ve yönlendirme
- Alt ajanlar — arka planda ajan çalıştırmaları başlatma