Asosiy tarkibga o'tish

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
Group message flow If you want…
GoalWhat to set
Allow all groups but only reply on @mentionsgroups: { "*": { requireMention: true } }
Disable all group repliesgroupPolicy: "disabled"
Only specific groupsgroups: { "<group-id>": { ... 1. } } ("*" kalitisiz)
2. Guruhlarda faqat siz ishga tushira olasiz3. groupPolicy: "allowlist", groupAllowFrom: ["+1555..."]

4. Sessiya kalitlari

    1. Guruh sessiyalari agent:<agentId>:<channel>:group:<id> sessiya kalitlaridan foydalanadi (xonalar/kanallar agent:<agentId>:<channel>:channel:<id> dan foydalanadi).
    1. Telegram forum mavzulari guruh identifikatoriga :topic:<threadId> qoʻshadi, shuning uchun har bir mavzu alohida sessiyaga ega boʻladi.
    1. Toʻgʻridan-toʻgʻri chatlar asosiy sessiyadan foydalanadi (yoki sozlangan boʻlsa, joʻnatuvchi boʻyicha alohida).
    1. Yurak urishlari (heartbeats) guruh sessiyalari uchun oʻtkazib yuboriladi.

9. Andoza: shaxsiy DMlar + ommaviy guruhlar (bitta agent)

  1. Ha — agar “shaxsiy” trafikingiz DMlar va “ommaviy” trafikingiz guruhlar boʻlsa, bu juda yaxshi ishlaydi.
  2. 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. Agar mode: "non-main" bilan sandboxingni yoqsangiz, guruh sessiyalari Docker’da ishlaydi, asosiy DM sessiyangiz esa xostda qoladi.
  3. Bu sizga bitta agent “miyasi”ni (umumiy ish maydoni + xotira), ammo ikki xil bajarilish holatini beradi:
    1. DMlar: toʻliq vositalar (xost)
    1. Guruhlar: sandbox + cheklangan vositalar (Docker)
  1. 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.
  1. 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"],
      },
    },
  },
}
  1. “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",
          ],
        },
      },
    },
  },
}
  1. Bogʻliq:

27. Koʻrsatish yorliqlari

    1. UI yorliqlari mavjud boʻlsa displayName dan foydalanadi, <channel>:<token> formatida.
    1. #room xonalar/kanallar uchun band qilingan; guruh chatlari g-<slug> dan foydalanadi (kichik harflar, bo‘shliqlar -> -, #@+._- saqlanadi).

30. Guruh siyosati

  1. 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: ["[email protected]"],
    },
    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. Siyosat34. 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.
  1. Eslatmalar:
    1. groupPolicy eslatma-cheklashdan alohida (u @eslatmalarni talab qiladi).
    1. WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: groupAllowFrom dan foydalaning (zaxira: aniq allowFrom).
    1. Discord: allowlist channels.discord.guilds.<id> dan foydalanadi45. .channels.
    1. Slack: allowlist channels.slack.channels dan foydalanadi.
    1. Matrix: allowlist channels.matrix.groups dan foydalanadi (xona IDlari, aliaslar yoki nomlar). 48. Joʻnatuvchilarni cheklash uchun channels.matrix.groupAllowFrom dan foydalaning; xonaga xos users allowlistlari ham qoʻllab-quvvatlanadi.
    1. Guruh DMlari alohida boshqariladi (channels.discord.dm.*, channels.slack.dm.*).
    1. Telegram allowlist foydalanuvchi IDlarini ("123456789", "telegram:123456789", "tg:123456789") yoki foydalanuvchi nomlarini ("@alice" yoki "alice") moslashtirishi mumkin; prefikslar katta-kichik harfga sezgir emas.
  • Default is groupPolicy: "allowlist"; if your group allowlist is empty, group messages are blocked.
Tezkor mental model (guruh xabarlari uchun baholash tartibi):
  1. groupPolicy (open/disabled/allowlist)
  2. guruh allowlistlari (*.groups, *.groupAllowFrom, kanalga xos allowlist)
  3. 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 },
        "[email protected]": { 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:
  • mentionPatterns katta-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 mentionPatterns are 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.historyLimit dan foydalaning va override uchun channels.<channel>.historyLimit(yokichannels.<channel>.accounts.*.historyLimit) dan foydalaning. O‘chirish uchun 0 ni 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):
  1. guruh/kanal toolsBySender mos kelishi
  2. guruh/kanal tools
  3. standart ("*") toolsBySender mos kelishi
  4. 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.*, Slack channels.*, MS Teams teams.*.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):
  1. Barcha guruh javoblarini o‘chirish
{
  channels: { whatsapp: { groupPolicy: "disabled" } },
}
  1. Faqat muayyan guruhlarga ruxsat berish (WhatsApp)
{
  channels: {
    whatsapp: {
      groups: {
        "[email protected]": { requireMention: true },
        "[email protected]": { requireMention: false },
      },
    },
  },
}
  1. Barcha guruhlarga ruxsat berish, lekin mention talab qilish (aniq)
{
  channels: {
    whatsapp: {
      groups: { "*": { requireMention: true } },
    },
  },
}
  1. 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=group
  • GroupSubject (agar ma’lum bo‘lsa)
  • GroupMembers (agar ma’lum bo‘lsa)
  • WasMentioned (mention gating natijasi)
  • Telegram forum mavzulari, shuningdek, MessageThreadId va IsForum ni 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_id ga qaytadi.

WhatsApp ga xos jihatlar

WhatsApp-only xatti-harakatlar (tarixni kiritish, mentionlarni qayta ishlash tafsilotlari) uchun Group messages ga qarang.