Ko‘p-agentli marshrutlash¶
Maqsad: bitta ishlayotgan Gateway’da bir nechta ajratilgan agentlar (alohida ish maydoni + agentDir + sessiyalar), shuningdek bir nechta kanal akkauntlari (masalan, ikkita WhatsApp). Kirish oqimi bog‘lamalar orqali agentga yo‘naltiriladi.
“Bitta agent” nima?¶
Agent — bu o‘ziga xos, to‘liq chegaralangan miya bo‘lib, quyidagilarga ega:
- Ish maydoni (fayllar, AGENTS.md/SOUL.md/USER.md, mahalliy qaydlar, persona qoidalari).
- Holat katalogi (
agentDir) — auth profillari, model reyestri va har bir agent uchun sozlamalar. - Sessiyalar ombori (chat tarixi + marshrutlash holati)
~/.openclaw/agents/<agentId>/sessionsostida.
- Auth profillari har bir agent uchun alohida. 2. Har bir agent o‘zining quyidagi manbasidan o‘qiydi:
3. ~/.openclaw/agents/<agentId>/agent/auth-profiles.json
-
Asosiy agent credentiallari avtomatik ravishda ulashilmaydi. 5.
agentDirni hech qachon qayta ishlatmang agentlar o‘rtasida (bu auth/session to‘qnashuvlariga olib keladi). 6. Agar credentiallarni ulashmoqchi bo‘lsangiz,auth-profiles.jsonfaylini boshqa agentningagentDirichiga nusxalang. -
Skilllar har bir agent uchun alohida bo‘lib, har bir workspace’ning
skills/papkasi orqali boshqariladi, umumiy skilllar esa~/.openclaw/skillsdan mavjud. 8. Qarang: Skills: per-agent vs shared. -
Gateway bitta agentni (default) yoki bir nechta agentni yonma-yon joylashtirib ishlata oladi.
-
Workspace eslatmasi: har bir agentning workspace’i default cwd hisoblanadi, qat’iy sandbox emas. 11. Nisbiy yo‘llar workspace ichida yechiladi, ammo absolut yo‘llar sandboxing yoqilmagan bo‘lsa, hostdagi boshqa joylarga yetib borishi mumkin. 12. Qarang Sandboxing.
13. Yo‘llar (tezkor xarita)¶
-
- Config:
~/.openclaw/openclaw.json(yokiOPENCLAW_CONFIG_PATH)
- Config:
-
- State dir:
~/.openclaw(yokiOPENCLAW_STATE_DIR)
- State dir:
-
- Workspace:
~/.openclaw/workspace(yoki~/.openclaw/workspace-<agentId>)
- Workspace:
-
- Agent dir:
~/.openclaw/agents/<agentId>/agent(yokiagents.list[].agentDir)
- Agent dir:
-
- Sessions:
~/.openclaw/agents/<agentId>/sessions
- Sessions:
19. Yakka-agent rejimi (default)¶
- Hech narsa qilmasangiz, OpenClaw bitta agentni ishga tushiradi:
-
agentIddefault bo‘yichamain.
-
- Sessionlar
agent:main:<mainKey>sifatida kalitlanadi.
- Sessionlar
-
- Workspace default bo‘yicha
~/.openclaw/workspace(yokiOPENCLAW_PROFILEo‘rnatilganda~/.openclaw/workspace-<profile>).
- Workspace default bo‘yicha
-
- State default bo‘yicha
~/.openclaw/agents/main/agent.
- State default bo‘yicha
25. Agent yordamchisi¶
- Yangi izolyatsiyalangan agent qo‘shish uchun agent wizard’dan foydalaning:
27. openclaw agents add work
-
So‘ngra kiruvchi xabarlarni yo‘naltirish uchun
bindingsqo‘shing (yoki wizard’ga buni avtomatik bajarishga ruxsat bering). -
Tekshirish:
30. openclaw agents list --bindings
31. Bir nechta agent = bir nechta odam, bir nechta shaxsiyat¶
- Bir nechta agent bilan, har bir
agentIdto‘liq izolyatsiyalangan personaga aylanadi:
-
- Turli telefon raqamlari/akkauntlar (har bir kanal uchun
accountId).
- Turli telefon raqamlari/akkauntlar (har bir kanal uchun
-
- Turli shaxsiyatlar (har bir agent workspace’iga xos
AGENTS.mdvaSOUL.mdkabi fayllar).
- Turli shaxsiyatlar (har bir agent workspace’iga xos
-
- Alohida auth + sessionlar (aniq yoqilmaguncha o‘zaro aralashuv yo‘q).
- Bu bir nechta odamga bitta Gateway serverdan foydalanib, ularning AI “miyalari” va ma’lumotlarini izolyatsiya holatda saqlash imkonini beradi.
37. Bitta WhatsApp raqami, bir nechta odam (DM bo‘linishi)¶
-
Turli WhatsApp DMlarni bitta WhatsApp akkauntida qolgan holda turli agentlarga yo‘naltirishingiz mumkin. 44. { 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"], }, }, } 39. Javoblar baribir bir xil WhatsApp raqamidan keladi (har bir agent uchun alohida yuboruvchi identifikatori yo‘q).
-
Muhim tafsilot: to‘g‘ridan-to‘g‘ri chatlar agentning asosiy session kalitiga birlashadi, shuning uchun haqiqiy izolyatsiya har bir odam uchun bitta agentni talab qiladi.
-
Misol:
45. {
agents: {
list: [
{
id: "chat",
name: "Everyday",
workspace: "~/.openclaw/workspace-chat",
model: "anthropic/claude-sonnet-4-5",
},
{
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" } },
],
}
- Eslatmalar:
-
- DM kirish nazorati har bir WhatsApp akkaunti uchun global (pairing/allowlist), agent bo‘yicha emas.
-
- Umumiy guruhlar uchun guruhni bitta agentga bog‘lang yoki Broadcast groups dan foydalaning.
45. Marshrutlash qoidalari (xabarlar agentni qanday tanlaydi)¶
-
Bindinglar deterministik va eng aniq moslik yutadi:
-
peermosligi (aniq DM/guruh/kanal id)
-
guildId(Discord)
-
teamId(Slack)
-
- Kanal uchun
accountIdmosligi
- Kanal uchun
-
- kanal darajasidagi moslash (
accountId: "*")
- kanal darajasidagi moslash (
-
- standart agentga qaytish (
agents.list[].default, aks holda roʻyxatdagi birinchi element, standart:main)
- standart agentga qaytish (
3) Bir nechta hisoblar / telefon raqamlari¶
- Bir nechta hisoblarni qoʻllab-quvvatlaydigan kanallar (masalan, WhatsApp) har bir loginni aniqlash uchun
accountIddan foydalanadi. Vektor o‘xshashligi (semantik moslik, ifodalar farq qilishi mumkin)
6. Tushunchalar¶
-
agentId: bitta “miya” (ish maydoni, har-agent autentifikatsiyasi, har-agent seanslar ombori).
-
accountId: kanal hisobining bitta nusxasi (masalan, WhatsApp hisobi "personal" va "biz").
-
binding: kiruvchi xabarlarni(channel, accountId, peer)va ixtiyoriy ravishda guild/jamoa IDlari orqaliagentIdga yoʻnaltiradi.
-
- Toʻgʻridan-toʻgʻri chatlar
agent:<agentId>:<mainKey>ga yigʻiladi (har-agent uchun “main”;session.mainKey).
- Toʻgʻridan-toʻgʻri chatlar
11. Misol: ikkita WhatsApp → ikkita agent¶
Har bir accountId alohida agentga yo‘naltirilishi mumkin, shuning uchun bitta server sessiyalarni aralashtirmasdan bir nechta telefon raqamlarini joylashtira oladi.
13. {
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",
},
],
},
// Deterministik marshrutlash: birinchi mos kelgani yutadi (eng aniqdan boshlab).
bindings: [
{ agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
{ agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
// Ixtiyoriy peer bo‘yicha override (misol: muayyan guruhni work agentga yuborish).
{
agentId: "work",
match: {
channel: "whatsapp",
accountId: "personal",
peer: { kind: "group", id: "1203630...@g.us" },
},
},
],
// Sukut bo‘yicha o‘chiq: agentdan agentga xabar almashish aniq yoqilishi va allowlist qilinishi kerak.
tools: {
agentToAgent: {
enabled: false,
allow: ["home", "work"],
},
},
channels: {
whatsapp: {
accounts: {
personal: {
// Ixtiyoriy override. Sukut bo‘yicha: ~/.openclaw/credentials/whatsapp/personal
// authDir: "~/.openclaw/credentials/whatsapp/personal",
},
biz: {
// Ixtiyoriy override. Sukut bo‘yicha: ~/.openclaw/credentials/whatsapp/biz
// authDir: "~/.openclaw/credentials/whatsapp/biz",
},
},
},
},
}
14. Misol: WhatsApp kundalik chat + Telegram chuqur ish¶
~/.openclaw/openclaw.json (JSON5):
16. {
agents: {
list: [
{
id: "chat",
name: "Everyday",
workspace: "~/.openclaw/workspace-chat",
model: "anthropic/claude-sonnet-4-5",
},
{
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" } },
],
}
Kanal bo‘yicha ajrating: WhatsApp’ni tezkor kundalik agentga, Telegram’ni esa Opus agentiga yo‘naltiring.
-
- Agar kanal uchun bir nechta hisobingiz bo‘lsa, binding’ga
accountIdqo‘shing (masalan,{ channel: "whatsapp", accountId: "personal" }).
- Agar kanal uchun bir nechta hisobingiz bo‘lsa, binding’ga
-
- Qolganlarini chatda qoldirib, bitta DM/guruhni Opus’ga yo‘naltirish uchun o‘sha peer uchun
match.peerbinding qo‘shing; peer mosliklari har doim kanal darajasidagi qoidalardan ustun keladi.
- Qolganlarini chatda qoldirib, bitta DM/guruhni Opus’ga yo‘naltirish uchun o‘sha peer uchun
20. Misol: bir xil kanal, bitta peer Opus’ga¶
- WhatsApp’ni tezkor agentda qoldiring, lekin bitta DM’ni Opus’ga yo‘naltiring:
46. Tur bo‘yicha alohida sozlamalar (ixtiyoriy): `resetByType` `direct`, `group` va `thread` sessiyalari uchun siyosatni almashtirish imkonini beradi (thread = Slack/Discord tarmoqlari, Telegram mavzulari, Matrix tarmoqlari — konnektor taqdim etsa).
Eslatmalar:
23. WhatsApp guruhiga bog‘langan oila agenti¶
- Bitta WhatsApp guruhiga maxsus oila agentini bog‘lang, mention gating va yanada qat’iyroq tool siyosati bilan:
25. {
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" },
},
},
],
}
- Eslatmalar:
- Peer bog‘lanishlari har doim ustun turadi, shuning uchun ularni kanal bo‘yicha umumiy qoidadan yuqorida saqlang. 28. Agar skill binar faylni ishga tushirishi kerak bo‘lsa,
execruxsat etilganligiga va binar sandbox’da mavjudligiga ishonch hosil qiling. -
- Yanada qat’iy gating uchun
agents.list[].groupChat.mentionPatternsni sozlang va kanal uchun guruh allowlist’larini yoqilgan holda saqlang.
- Yanada qat’iy gating uchun
30. Har-Agent Sandbox va Tool konfiguratsiyasi¶
- v2026.1.6 dan boshlab, har bir agent o‘z sandbox’i va tool cheklovlariga ega bo‘lishi mumkin:
32. {
agents: {
list: [
{
id: "personal",
workspace: "~/.openclaw/workspace-personal",
sandbox: {
mode: "off", // personal agent uchun sandbox yo‘q
},
// Tool cheklovlari yo‘q - barcha tool’lar mavjud
},
{
id: "family",
workspace: "~/.openclaw/workspace-family",
sandbox: {
mode: "all", // Har doim sandbox’da
scope: "agent", // Har bir agent uchun alohida konteyner
docker: {
// Konteyner yaratilgandan keyin bir martalik ixtiyoriy sozlash
setupCommand: "apt-get update && apt-get install -y git curl",
},
},
tools: {
allow: ["read"], // Faqat read tool
deny: ["exec", "write", "edit", "apply_patch"], // Qolganlarini taqiqlash
},
},
],
},
}
- Eslatma:
setupCommandsandbox.dockerostida joylashadi va konteyner yaratilganda bir marta ishga tushadi. -
Agar yakuniy scope
"shared"bo‘lsa, har-agentsandbox.docker.*override’lari e’tiborga olinmaydi. -
Afzalliklar:
-
- Xavfsizlik izolyatsiyasi: ishonchsiz agentlar uchun tool’larni cheklash
-
- Resurslarni boshqarish: ayrim agentlarni sandbox’da, boshqalarini esa host’da qoldirish
-
- Moslashuvchan siyosatlar: har agent uchun turli ruxsatlar
- Eslatma:
tools.elevatedglobal va yuboruvchi asosida ishlaydi; uni har agent uchun sozlab bo‘lmaydi. - Agar har-agent chegaralari kerak bo‘lsa,
agents.list[].toolsdan foydalanibexecni taqiqlang. -
Guruhni nishonga olish uchun
agents.list[].groupChat.mentionPatternsdan foydalaning, shunda @mention’lar to‘g‘ri agentga aniq mos keladi. -
Batafsil misollar uchun Multi-Agent Sandbox & Tools sahifasiga qarang.