Guruhlar¶
OpenClaw guruh chatlarini barcha platformalarda bir xil tarzda boshqaradi: WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams.
Boshlang‘ich kirish (2 daqiqa)¶
OpenClaw sizning shaxsiy xabar almashish akkauntlaringizda “yashaydi”. Alohida WhatsApp bot foydalanuvchisi mavjud emas. If you are in a group, OpenClaw can see that group and respond there.
Standart xatti-harakat:
- Guruhlar cheklangan (
groupPolicy: "allowlist"). - Javoblar uchun siz mention gating’ni ataylab o‘chirib qo‘ymaguningizcha, tilga olish (mention) talab qilinadi.
Tarjimasi: allowlist ro‘yxatidagi jo‘natuvchilar OpenClaw’ni tilga olib uni ishga tushirishi mumkin.
TL;DR
- DM access is controlled by
*.allowFrom.- Group access is controlled by
*.groupPolicy+ allowlists (*.groups,*.groupAllowFrom).- Reply triggering is controlled by mention gating (
requireMention,/activation).
Quick flow (what happens to a group message):
groupPolicy? disabled -> drop
groupPolicy? allowlist -> group allowed? no -> drop
requireMention? yes -> mentioned? no -> store for context only
otherwise -> reply
If you want...
| Goal | What to set |
|---|---|
| Allow all groups but only reply on @mentions | groups: { "*": { requireMention: true } } |
| Disable all group replies | groupPolicy: "disabled" |
| Only specific groups | groups: { "<group-id>": { ... 1. } } ("*" kalitisiz) |
| 2. Guruhlarda faqat siz ishga tushira olasiz | 3. groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
4. Sessiya kalitlari¶
-
- Guruh sessiyalari
agent:<agentId>:<channel>:group:<id>sessiya kalitlaridan foydalanadi (xonalar/kanallaragent:<agentId>:<channel>:channel:<id>dan foydalanadi).
- Guruh sessiyalari
-
- Telegram forum mavzulari guruh identifikatoriga
:topic:<threadId>qoʻshadi, shuning uchun har bir mavzu alohida sessiyaga ega boʻladi.
- Telegram forum mavzulari guruh identifikatoriga
-
- Toʻgʻridan-toʻgʻri chatlar asosiy sessiyadan foydalanadi (yoki sozlangan boʻlsa, joʻnatuvchi boʻyicha alohida).
-
- Yurak urishlari (heartbeats) guruh sessiyalari uchun oʻtkazib yuboriladi.
9. Andoza: shaxsiy DMlar + ommaviy guruhlar (bitta agent)¶
-
Ha — agar “shaxsiy” trafikingiz DMlar va “ommaviy” trafikingiz guruhlar boʻlsa, bu juda yaxshi ishlaydi.
-
Sabab: bitta-agent rejimida DMlar odatda asosiy sessiya kalitiga (
agent:main:main) tushadi, guruhlar esa har doim asosiy boʻlmagan sessiya kalitlaridan foydalanadi (agent:main:<channel>:group:<id>). 12. Agarmode: "non-main"bilan sandboxingni yoqsangiz, guruh sessiyalari Docker’da ishlaydi, asosiy DM sessiyangiz esa xostda qoladi. -
Bu sizga bitta agent “miyasi”ni (umumiy ish maydoni + xotira), ammo ikki xil bajarilish holatini beradi:
-
- DMlar: toʻliq vositalar (xost)
-
- Guruhlar: sandbox + cheklangan vositalar (Docker)
- Agar haqiqatan ham alohida ish maydonlari/personalar kerak boʻlsa (“shaxsiy” va “ommaviy” hech qachon aralashmasligi kerak), ikkinchi agent + bogʻlashlardan foydalaning. 17. Qarang: Multi-Agent Routing.
- Misol (DMlar xostda, guruhlar sandboxlangan + faqat xabar almashish vositalari):
19. {
agents: {
defaults: {
sandbox: {
mode: "non-main", // groups/channels are non-main -> sandboxed
scope: "session", // strongest isolation (one container per group/channel)
workspaceAccess: "none",
},
},
},
tools: {
sandbox: {
tools: {
// If allow is non-empty, everything else is blocked (deny still wins).
allow: ["group:messaging", "group:sessions"],
deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"],
},
},
},
}
- “Guruhlar faqat X papkani koʻra olsin” deganini “xostga umuman kirish yoʻq” oʻrniga xohlaysizmi? 21.
workspaceAccess: "none"ni saqlang va faqat ruxsat etilgan yoʻllarni sandboxga ulang:
22. {
agents: {
defaults: {
sandbox: {
mode: "non-main",
scope: "session",
workspaceAccess: "none",
docker: {
binds: [
// hostPath:containerPath:mode
"~/FriendsShared:/data:ro",
],
},
},
},
},
}
- Bogʻliq:
-
- Sozlama kalitlari va standartlari: Gateway configuration
-
- Vosita nima uchun bloklanganini sozlash: Sandbox vs Tool Policy vs Elevated
-
- Bind mount tafsilotlari: Sandboxing
27. Koʻrsatish yorliqlari¶
-
- UI yorliqlari mavjud boʻlsa
displayNamedan foydalanadi,<channel>:<token>formatida.
- UI yorliqlari mavjud boʻlsa
-
#roomxonalar/kanallar uchun band qilingan; guruh chatlarig-<slug>dan foydalanadi (kichik harflar, bo‘shliqlar ->-,#@+._-saqlanadi).
30. Guruh siyosati¶
- Har bir kanal boʻyicha guruh/xona xabarlari qanday qayta ishlanishini boshqaring:
32. {
channels: {
whatsapp: {
groupPolicy: "disabled", // "open" | "disabled" | "allowlist"
groupAllowFrom: ["+15551234567"],
},
telegram: {
groupPolicy: "disabled",
groupAllowFrom: ["123456789", "@username"],
},
signal: {
groupPolicy: "disabled",
groupAllowFrom: ["+15551234567"],
},
imessage: {
groupPolicy: "disabled",
groupAllowFrom: ["chat_id:123"],
},
msteams: {
groupPolicy: "disabled",
groupAllowFrom: ["user@org.com"],
},
discord: {
groupPolicy: "allowlist",
guilds: {
GUILD_ID: { channels: { help: { allow: true } } },
},
},
slack: {
groupPolicy: "allowlist",
channels: { "#general": { allow: true } },
},
matrix: {
groupPolicy: "allowlist",
groupAllowFrom: ["@owner:example.org"],
groups: {
"!roomId:example.org": { allow: true },
"#alias:example.org": { allow: true },
},
},
},
}
| 33. Siyosat | 34. Xulq-atvor |
|---|---|
35. "open" |
36. Guruhlar allowlistlarni chetlab oʻtadi; eslatma-cheklash (mention-gating) baribir qoʻllanadi. |
37. "disabled" |
38. Barcha guruh xabarlarini butunlay bloklash. |
39. "allowlist" |
40. Faqat sozlangan allowlistga mos keladigan guruh/xonalarga ruxsat berish. |
- Eslatmalar:
-
groupPolicyeslatma-cheklashdan alohida (u @eslatmalarni talab qiladi).
-
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams:
groupAllowFromdan foydalaning (zaxira: aniqallowFrom).
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams:
-
- Discord: allowlist
channels.discord.guilds.<id>dan foydalanadi45..channels.
- Discord: allowlist
-
- Slack: allowlist
channels.slack.channelsdan foydalanadi.
- Slack: allowlist
-
- Matrix: allowlist
channels.matrix.groupsdan foydalanadi (xona IDlari, aliaslar yoki nomlar). 48. Joʻnatuvchilarni cheklash uchunchannels.matrix.groupAllowFromdan foydalaning; xonaga xosusersallowlistlari ham qoʻllab-quvvatlanadi.
- Matrix: allowlist
-
- Guruh DMlari alohida boshqariladi (
channels.discord.dm.*,channels.slack.dm.*).
- Guruh DMlari alohida boshqariladi (
-
- Telegram allowlist foydalanuvchi IDlarini (
"123456789","telegram:123456789","tg:123456789") yoki foydalanuvchi nomlarini ("@alice"yoki"alice") moslashtirishi mumkin; prefikslar katta-kichik harfga sezgir emas.
- Telegram allowlist foydalanuvchi IDlarini (
- Default is
groupPolicy: "allowlist"; if your group allowlist is empty, group messages are blocked.
Tezkor mental model (guruh xabarlari uchun baholash tartibi):
groupPolicy(open/disabled/allowlist)- guruh allowlistlari (
*.groups,*.groupAllowFrom, kanalga xos allowlist) - mention gating (
requireMention,/activation)
Mention gating (standart)¶
Guruh xabarlari, agar guruh bo‘yicha alohida o‘zgartirilmagan bo‘lsa, mention talab qiladi. Standartlar har bir subsistema uchun *.groups."*" ostida joylashgan.
Bot xabariga javob berish (kanal javob metamaʼlumotlarini qo‘llab-quvvatlasa) implicit mention hisoblanadi. Bu Telegram, WhatsApp, Slack, Discord va Microsoft Teams uchun amal qiladi.
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
"123@g.us": { requireMention: false },
},
},
telegram: {
groups: {
"*": { requireMention: true },
"123456789": { requireMention: false },
},
},
imessage: {
groups: {
"*": { requireMention: true },
"123": { requireMention: false },
},
},
},
agents: {
list: [
{
id: "main",
groupChat: {
mentionPatterns: ["@openclaw", "openclaw", "\\+15555550123"],
historyLimit: 50,
},
},
],
},
}
Eslatmalar:
mentionPatternskatta-kichik harfga sezgir bo‘lmagan regexlardir.- Aniq mentionlarni taqdim etadigan interfeyslar baribir o‘tkaziladi; patternlar zaxira sifatida ishlatiladi.
- Agent bo‘yicha override:
agents.list[].groupChat.mentionPatterns(bir nechta agentlar bitta guruhni bo‘lishganda foydali). - Mention gating is only enforced when mention detection is possible (native mentions or
mentionPatternsare configured). - Discord standartlari
channels.discord.guilds."*"da joylashgan (guild/kanal bo‘yicha o‘zgartirilishi mumkin). - Guruh tarix konteksti barcha kanallarda bir xil tarzda o‘raladi va faqat pending (mention gating sababli o‘tkazib yuborilgan xabarlar); global standart uchun
messages.groupChat.historyLimitdan foydalaning va override uchunchannels.<channel>.historyLimit(yokichannels..accounts.*.historyLimit) dan foydalaning. O‘chirish uchun0ni o‘rnating.
Guruh/kanal asbob cheklovlari (ixtiyoriy)¶
Baʼzi kanal sozlamalari muayyan guruh/xona/kanal ichida qaysi asboblar mavjudligini cheklashni qo‘llab-quvvatlaydi.
tools: butun guruh uchun asboblarni allow/deny qilish.toolsBySender: guruh ichida jo‘natuvchi bo‘yicha override (kalitlar kanalga qarab jo‘natuvchi IDlari/foydalanuvchi nomlari/email/telefon raqamlari bo‘lishi mumkin). Wildcard sifatida"*"dan foydalaning.
Qaror chiqarish tartibi (eng aniq ustun):
- guruh/kanal
toolsBySendermos kelishi - guruh/kanal
tools - standart (
"*")toolsBySendermos kelishi - standart (
"*")tools
Misol (Telegram):
{
channels: {
telegram: {
groups: {
"*": { tools: { deny: ["exec"] } },
"-1001234567890": {
tools: { deny: ["exec", "read", "write"] },
toolsBySender: {
"123456789": { alsoAllow: ["exec"] },
},
},
},
},
},
}
Eslatmalar:
- Guruh/kanal asbob cheklovlari global/agent asbob siyosatiga qo‘shimcha ravishda qo‘llanadi (deny baribir ustun).
- Baʼzi kanallar xonalar/kanallar uchun boshqa ichki tuzilmani ishlatadi (masalan, Discord
guilds.*.channels.*, Slackchannels.*, MS Teamsteams.*.channels.*).
Guruh allowlistlari¶
channels.whatsapp.groups, channels.telegram.groups yoki channels.imessage.groups sozlanganda, kalitlar guruh allowlisti sifatida ishlaydi. Barcha guruhlarga ruxsat berib, shu bilan birga standart mention xatti-harakatini sozlash uchun "*" dan foydalaning.
Keng tarqalgan intentlar (copy/paste):
- Barcha guruh javoblarini o‘chirish
{
channels: { whatsapp: { groupPolicy: "disabled" } },
}
- Faqat muayyan guruhlarga ruxsat berish (WhatsApp)
{
channels: {
whatsapp: {
groups: {
"123@g.us": { requireMention: true },
"456@g.us": { requireMention: false },
},
},
},
}
- Barcha guruhlarga ruxsat berish, lekin mention talab qilish (aniq)
{
channels: {
whatsapp: {
groups: { "*": { requireMention: true } },
},
},
}
- Guruhlarda faqat egasi trigger qila oladi (WhatsApp)
{
channels: {
whatsapp: {
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"],
groups: { "*": { requireMention: true } },
},
},
}
Faollashtirish (faqat egasi)¶
Guruh egalari har bir guruh bo‘yicha faollashtirishni yoqib/o‘chirishi mumkin:
/activation mention/activation always
Ega channels.whatsapp.allowFrom orqali aniqlanadi (yoki sozlanmagan bo‘lsa, botning o‘z E.164 raqami). Buyruqni alohida xabar sifatida yuboring. Hozirda boshqa interfeyslar /activation ni e’tiborsiz qoldiradi.
Kontekst maydonlari¶
Guruhdan keluvchi payloadlar quyidagilarni o‘rnatadi:
ChatType=groupGroupSubject(agar ma’lum bo‘lsa)GroupMembers(agar ma’lum bo‘lsa)WasMentioned(mention gating natijasi)- Telegram forum mavzulari, shuningdek,
MessageThreadIdvaIsForumni ham o‘z ichiga oladi.
Agent tizim prompti yangi guruh sessiyasining birinchi navbatida guruh tanishtiruvini o‘z ichiga oladi. U modelga inson kabi javob berishni, Markdown jadvallaridan qochishni va literal \n ketma-ketliklarini yozmaslikni eslatadi.
iMessage ga xos jihatlar¶
- Yo‘naltirish yoki ruxsat ro‘yxatiga olishda
chat_id:<id>ni afzal ko‘ring. - Chatlarni ro‘yxatlash:
imsg chats --limit 20. - Guruh javoblari har doim bir xil
chat_idga qaytadi.
WhatsApp ga xos jihatlar¶
WhatsApp-only xatti-harakatlar (tarixni kiritish, mentionlarni qayta ishlash tafsilotlari) uchun Group messages ga qarang.