Исследование • AI Infrastructure
OpenClaw Multi-User - Vaporwave

OpenClaw как ядро мультиюзерного Telegram-бота

Глубокое исследование: архитектура, session management, security, scaling и cost model для 10–500+ пользователей

500+
юзеров — цель
$30
LLM/мес на 500 юзеров
4
уровня изоляции
11
разделов анализа
OpenClaw как ядро мультиюзерного AI-бота

1. Архитектура OpenClaw для multi-user

Как это работает

OpenClaw — это AI Gateway, который принимает сообщения из каналов (Telegram, WhatsApp, Discord и др.) и маршрутизирует их к агентам. Ключевые абстракции:

🤖
Agent Изолированная сущность с собственным workspace, agentDir, сессиями, моделью и набором tools
💬
Session Контекст разговора, привязанный к конкретному пользователю/группе/каналу
🔀
Bindings Правила маршрутизации входящих сообщений к конкретному агенту
🔒
dmScope Режим изоляции DM-сессий

Сессионная модель

OpenClaw поддерживает несколько режимов session.dmScope:

Режим Формат ключа сессии Применение
main (default) agent:<agentId>:main Все DM в одну сессию (личный ассистент)
per-peer agent:<agentId>:dm:<peerId> Изоляция по отправителю
per-channel-peer agent:<agentId>:<channel>:dm:<peerId> Изоляция по каналу + отправителю
per-account-channel-peer agent:<agentId>:<channel>:<accountId>:dm:<peerId> Полная изоляция (мульти-аккаунт)
💡 Рекомендация
Для ProTechBot нужен режим per-channel-peer — каждый Telegram-юзер получает изолированную сессию с собственной историей.

Multi-agent routing

Можно запустить несколько агентов в одном Gateway:

{
  agents: {
    list: [
      { id: "protech", workspace: "~/protech-workspace", default: true },
      { id: "admin", workspace: "~/.openclaw/workspace" },
    ],
  },
  bindings: [
    // Фёдор → admin агент (полный доступ)
    { agentId: "admin", match: { channel: "telegram",
      peer: { kind: "direct", id: "224153441" } } },
    // Все остальные → protech агент (ограниченный)
    { agentId: "protech", match: { channel: "telegram" } },
  ],
}

Это значит: Фёдор общается с полноценным Джарвисом, а все остальные пользователи — с ограниченным ProTechBot агентом.

Lane-aware очередь

Сообщения обрабатываются через FIFO-очередь с concurrency cap:

⚠️ Критическая проблема (Issue #16055, 14.02.2026)

При множественных ботах/агентах обнаружен bottleneck — все сообщения проходят через shared queue серийно. Задержки 1-2 минуты при одновременных запросах к разным агентам. Это свежий баг, возможно будет исправлен.

2. Hardware Requirements

Mac Mini M4 Pro (24GB RAM, 512GB SSD)

OpenClaw Gateway — Node.js процесс. Основное потребление ресурсов:

Компонент RAM CPU Примечание
Gateway процесс ~200-400 MB Минимально Event loop, routing
Сессия (in-memory context) ~5-20 MB Зависит от длины контекста
Session store (disk) ~50-500 KB/сессию JSONL файлы
Docker sandbox (если вкл.) ~100-300 MB/контейнер Переменно Изоляция exec
LLM API calls 0 MB (remote) 0 CPU Вся нагрузка на провайдере

Расчёт по сценариям

Важно: OpenClaw НЕ запускает LLM локально — он отправляет запросы к API провайдерам. Поэтому основная нагрузка — это сеть + session state.

Сценарий Одновременных сессий RAM Справится?
10 юзеров 2-3 одновременно ~1 GB ✅ Легко
50 юзеров 5-10 одновременно ~2 GB ✅ Да
100 юзеров 10-20 одновременно ~3-4 GB ✅ Да
500 юзеров 30-50 одновременно ~5-8 GB ⚠️ С оговорками
💡 Оговорки для 500 юзеров
Узкое место — NOT RAM, а concurrency Gateway: default main lane = 4 concurrent. При 50 одновременных запросах — очередь. Нужно тюнить maxConcurrent до 10-20. Каждый LLM-запрос занимает 3-30 секунд (зависит от модели/провайдера).

Вердикт: Mac Mini M4 Pro 24GB потянет 500 юзеров по ресурсам, но bottleneck будет в concurrency обработки и скорости LLM API.

3. Session Management

Хранение контекстов

Сессии хранятся на диске:

~/.openclaw/agents/<agentId>/sessions/sessions.json  — индекс
~/.openclaw/agents/<agentId>/sessions/*.jsonl         — полная история

Формат — JSONL (JSON Lines): каждый turn (user/assistant/tool) — отдельная строка. Файлы не модифицируются, только дописываются (append-only).

Memory per user

OpenClaw имеет два уровня памяти:

💭
Session memory (in-context) История текущей сессии, отправляемая в LLM. Ограничена contextTokens (default 200K). Автоматически pruning старых tool results.
📁
Workspace memory (файловая) Агент может читать/писать файлы в workspace. Это основной механизм долгосрочной памяти (MEMORY.md, daily notes, etc.)
⚠️ Проблема для multi-user

В текущей архитектуре OpenClaw workspace общий для всех сессий одного агента. Это значит: все 500 юзеров ProTechBot делят один workspace, нет встроенного механизма «папка per user», агент может случайно прочитать/записать данные другого юзера.

Решения для персональной памяти

Вариант A: Без персонального workspace
Только in-session context. Session reset раз в день. Персональные данные теряются при reset. ❌ Не подходит для «помнить каждого юзера».
Вариант B: Файловая структура (хак) ✅
Папка users/{peerId}/ в общем workspace. Агент в system prompt получает инструкцию читать файлы оттуда. ⚠️ Нет гарантии изоляции.
Вариант C: Агент per user (тяжёлый)
Динамическое создание агента для каждого юзера. ❌ Не масштабируется: 500 агентов = 500 записей в config. OpenClaw не поддерживает динамическое создание.
Вариант D: Memory tool (experimental)
SQLite-backed индекс с FTS5 поиском. Per-entity pages, temporal queries. ⚠️ Статус: research/experimental, не production-ready.
💚 Рекомендация

Вариант B + строгий system prompt. Для MVP этого достаточно.

~/protech-workspace/
  users/
    tg_123456789/
      profile.md
      history.md
    tg_987654321/
      profile.md
      history.md
  shared/
    knowledge-base/

4. Shared Knowledge Base + персональная память

Архитектура RAG на OpenClaw

OpenClaw не имеет встроенного RAG. Но есть несколько подходов:

📂
Подход 1: Файловый RAG через workspace Агент читает файлы через read tool. System prompt: «При вопросах о видеопродакшене — читай файлы из knowledge/». Просто, работает, легко обновлять. Минус: не масштабируется на большие базы знаний (100+ документов).
🔧
Подход 2: Skill с внешним RAG Написать OpenClaw skill (bash/Python обёртка). Skill вызывает внешний RAG engine (ChromaDB, Qdrant, etc.). Масштабируемо, настоящий vector search. Минус: нужно разрабатывать и поддерживать.
🧪
Подход 3: Memory tool (когда будет готов) SQLite + FTS5 + optional embeddings. Единая система для shared knowledge + personal memory. Temporal queries, entity summaries. ⚠️ Пока experimental.
💡 Рекомендация для старта
Подход 1 (файловый) + постепенная миграция на Подход 2.

5. Security и изоляция

Prompt Injection Protection

OpenClaw имеет многоуровневую защиту:

🛡️
1. Tool policy — ограничение доступных tools allow: ["read", "web_search", "session_status"], deny: ["write", "edit", "exec", "process", "browser", "nodes"]
📦
2. Sandbox — Docker-изоляция exec sandbox.mode: "all", scope: "session" — отдельный контейнер per session, workspaceAccess: "ro"
🚪
3. DM policy — контроль доступа allowFrom: whitelist user IDs. dmPolicy: "open": все могут писать (для публичного бота).
🔐
4. Session isolation dmScope: "per-channel-peer" изолирует сессии

Изоляция юзеров друг от друга

Аспект Уровень изоляции Детали
Session history ✅ Полная dmScope per-channel-peer
Workspace files ⚠️ Частичная Общий workspace, изоляция через промпт
Tools execution ✅ Полная (sandbox) Docker per-session
LLM context ✅ Полная Каждая сессия = отдельный API call
Logs on disk ⚠️ Доступны admin JSONL per-session, but same OS user

Риски

🚨
Prompt injection → file access Юзер может попросить «прочитай файл users/tg_другой_юзер/profile.md». Защита: deny read tool или sandbox с workspaceAccess: "none"
🚨
Prompt injection → tool abuse Без sandbox юзер может заставить агента выполнить shell-команду. Защита: deny exec + sandbox mode "all"
🚨
Context leakage При dmScope: main все юзеры делят контекст. Защита: per-channel-peer
💚 Рекомендация для публичного бота

1. dmScope: "per-channel-peer" — обязательно
2. sandbox.mode: "all" — обязательно
3. tools.deny: ["exec", "process", "write", "edit", "browser", "nodes"] — обязательно
4. Оставить только: read (для knowledge base), web_search, session_status

6. Admin Access

Как Фёдор управляет ботом

Вариант 1: Два агента через bindings (рекомендуемый) Фёдор привязан к агенту admin с полным доступом. Все остальные — к protech. Admin-агент может: читать логи всех сессий, отправлять сообщения юзерам, спавнить субагентов для аналитики, управлять конфигурацией.
💻
Вариант 2: CLI доступ openclaw sessions — список сессий, openclaw sessions --active 60 — активные за час, openclaw agent --session-id <id> --message "..."
🌐
Вариант 3: Control UI Web-интерфейс на http://127.0.0.1:18789/. Просмотр сессий, логов, конфигурации. Требует gateway token.

Мониторинг

# Логи сессий
~/.openclaw/agents/<agentId>/sessions/*.jsonl

# Gateway логи
openclaw logs --tail

# Security audit
openclaw security audit --deep

# Health check
openclaw health

7. Scaling

Текущие ограничения

Ограничение Значение Настраиваемо?
Main lane concurrency 4 (default) maxConcurrent
Subagent concurrency 8 (default)
Queue cap 20 messages messages.queue.cap
Context tokens 200K (default) contextTokens
Gateway instances 1 per host ❌ (single process)

Пути масштабирования

Этап 1: Один Mac Mini (10-100 юзеров)
Увеличить maxConcurrent до 10-15. Использовать быстрые модели (Gemini Flash, DeepSeek V3.2). Оптимизировать промпт (короче = быстрее). Session reset по idle (30-60 мин).
Этап 2: Docker на VPS (100-500 юзеров)
Выделенный VPS: 8 vCPU, 32GB RAM, ~€40/мес. Docker Compose с OpenClaw Gateway. Более стабильный uptime чем Mac Mini.
Этап 3: Multiple Gateways (500+ юзеров)
Каждый Gateway обслуживает подмножество юзеров. Но: один Telegram bot token = один Gateway webhook. Нужен load balancer (сложно с Telegram).
💡 Альтернативный подход для 500+
Отказаться от OpenClaw как единственного ядра. OpenClaw = admin/orchestrator, aiogram = frontend для юзеров. Общение между ними через API.

8. Cost Model

LLM API costs per user

Средний юзер ProTechBot: ~5-20 сообщений/день, ~500-2000 tokens per turn.

Модель Input $/1M tok Output $/1M tok Cost/юзер/день 100 юзеров/мес 500 юзеров/мес
DeepSeek V3.2 $0.028 $0.28 ~$0.005 ~$15 ~$75
Gemini 3 Flash $0.10 $0.40 ~$0.002 ~$6 ~$30
Gemini Flash (free tier) $0 $0 $0 $0 ⚠️ Rate limits
GPT-5.3 mini $0.15 $0.60 ~$0.003 ~$9 ~$45
Claude Haiku 4 $0.80 $4.00 ~$0.015 ~$45 ~$225
Claude Sonnet 4.5 $3.00 $15.00 ~$0.06 ~$180 ~$900
Qwen 3.5 72B (free/OR) $0 $0 $0 $0 ⚠️ Rate limits
💚 Рекомендация

MVP/тест: Gemini 3 Flash или DeepSeek V3.2 (~$30-75/мес на 500 юзеров)
Production: DeepSeek V3.2 как primary + Gemini Flash как fallback
Premium tier: Claude Haiku для платных юзеров

Дополнительные расходы

Статья Стоимость/мес
VPS (Hetzner CAX31) ~€15-40
Mac Mini электричество ~$5-10
Домен/SSL ~$1-2
Мониторинг $0 (self-hosted)
Итого (без LLM) ~$20-50

9. Сравнение с альтернативами

Критерий OpenClaw aiogram + Redis Botpress Rasa Custom Node.js
Setup complexity Средняя Низкая Низкая (cloud) Высокая Высокая
Multi-user sessions ✅ Встроенно ✅ Redis sessions ✅ Встроенно ✅ Встроенно 🔧 Ручная
Per-user memory ⚠️ Через промпт ✅ Redis/DB ✅ Встроенно ⚠️ Ограничено 🔧 Любая DB
RAG ⚠️ Через skill 🔧 Ручная ✅ Встроенно ⚠️ Ограничено 🔧 Любая
Prompt injection ✅ Tool policy + sandbox ❌ Ручная ✅ Встроенно ✅ Встроенно ❌ Ручная
Admin panel ✅ Control UI + CLI ❌ Нужно делать ✅ Web UI ✅ Web UI ❌ Нужно делать
Scaling >500 ⚠️ Сложно ✅ Горизонтально ✅ Cloud-native ✅ Kubernetes ✅ Горизонтально
Cost (infra) $0 (self-hosted) $5-20/мес $500+/мес $0 (self-hosted) $5-20/мес
LLM flexibility ✅ Любой провайдер ✅ Любой API ⚠️ Ограничен ⚠️ Свои модели ✅ Любой API
Tool execution ✅ Shell, browser ❌ Только код ⚠️ Actions ⚠️ Custom actions 🔧 Любое
Telegram integration ✅ Native channel ✅ aiogram (лучший) ✅ Connector ⚠️ REST webhook 🔧 Bot API
Субагенты ✅ Встроенно ❌ Нет ⚠️ Workflows ❌ Нет 🔧 Ручная
Зрелость ⚠️ Быстро развивается ✅ Стабильная ✅ Production ✅ Production

Детальный разбор

🐍
aiogram + Redis + LangChain (текущий стек) ✅ Полный контроль, лучшая библиотека для Telegram. ✅ Горизонтально масштабируется. ❌ Нет sandbox, tool policy — нужно всё писать руками. ❌ Нет admin UI, субагентов, memory management.
🤖
Botpress ✅ Визуальный flow builder, встроенный RAG, knowledge base. ❌ Cloud-only для production ($500+/мес). ❌ Ограниченный выбор LLM. ❌ Vendor lock-in.
🏗️
Rasa ✅ Open-source, NLU pipeline. ❌ Сложный setup, устаревающий подход (intent-based vs LLM-based). ❌ Не заточен под LLM-first бота.
⚙️
Custom Node.js ✅ Максимальная гибкость. ❌ Всё с нуля: sessions, memory, admin, security. ❌ Месяцы разработки.

10. Реальный опыт из сообщества

GitHub Issues (OpenClaw)

🐛
Issue #16055 (14.02.2026): «Message Processing Bottleneck with Multiple Telegram Bots» 5 независимых Telegram ботов на одном Gateway. Все сообщения обрабатываются серийно через shared queue. Задержки 1-2 минуты при одновременных запросах. Статус: Открыт, обсуждается.
💡
Issue #1159: «Feature Request: Parallel Session Processing» Запрос на параллельную обработку сессий. Telegram topics/channels блокируют друг друга.
📝
Gist (digitalknk): «Running OpenClaw Without Burning Money» Совет: «Treat OpenClaw like infrastructure, not a chatbot». Дешёвая модель как координатор, дорогие модели для реальной работы.

Общие выводы из сообщества

1️⃣
OpenClaw работает для multi-user, но это не его основной use case
2️⃣
Основной use case OpenClaw = личный AI-ассистент (1 юзер, много каналов)
3️⃣
Multi-user требует тщательной настройки security + session isolation
4️⃣
Concurrency — главный bottleneck при масштабировании
5️⃣
Никто в сообществе не запускал OpenClaw на 500+ юзеров (пока)

11. Вердикт и рекомендации

Можно ли использовать OpenClaw для ProTechBot?

Короткий ответ: ДА, но с оговорками.

Плюсы OpenClaw для ProTechBot

Session isolation из коробки — dmScope per-channel-peer
Security — tool policy, sandbox, DM policy
Admin access — CLI, Control UI, sessions API
Субагенты — можно спавнить для сложных задач
Multi-model — легко менять/fallback модели
Уже работает — Джарвис уже на OpenClaw, знаем систему

Минусы OpenClaw для ProTechBot

Concurrency bottleneck — single-process, limited lane concurrency
Нет встроенного per-user workspace — только хак через файлы
Нет встроенного RAG — нужен skill или внешний сервис
Scaling >200 юзеров — terra incognita — никто не пробовал
Нет динамического создания агентов — config = static
Нет analytics/dashboard для юзеров — нужно строить

Рекомендуемая архитектура: Гибридный подход

┌─────────────┐ ┌──────────────────┐ ┌─────────────┐ │ Telegram │────▶│ aiogram Router │────▶│ OpenClaw │ │ Users │◀────│ (Python) │◀────│ Gateway │ │ (500+) │ │ │ │ (AI Engine) │ └─────────────┘ └──────────────────┘ └─────────────┘ │ │ ┌─────▼─────┐ ┌──────▼──────┐ │ Redis │ │ Workspace │ │ Sessions │ │ + Knowledge │ │ + Queue │ │ Base │ └───────────┘ └─────────────┘
🐍 aiogram обрабатывает
Telegram webhook (быстро, масштабируемо). User sessions (Redis). Rate limiting, anti-spam. Простые команды (/start, /help, меню). Очередь сообщений к OpenClaw.
🧠 OpenClaw обрабатывает
AI reasoning (через LLM API). Knowledge base queries. Сложные мультистеповые задачи. Admin функции. Субагенты для analytics.

Конфигурация для чистого OpenClaw (MVP до 50 юзеров)

{
  session: {
    dmScope: "per-channel-peer",
    reset: { mode: "idle", idleMinutes: 120 },
  },
  agents: {
    defaults: {
      model: { primary: "deepseek/deepseek-chat" },
      maxConcurrent: 10,
      contextTokens: 100000,
    },
    list: [
      {
        id: "protech",
        default: true,
        workspace: "~/protech-bot/workspace",
        sandbox: { mode: "all", scope: "session", workspaceAccess: "ro" },
        tools: {
          allow: ["read", "web_search", "session_status"],
          deny: ["write", "edit", "exec", "process", "browser",
                 "nodes", "canvas"],
        },
      },
      {
        id: "admin",
        workspace: "~/.openclaw/workspace",
      },
    ],
  },
  bindings: [
    { agentId: "admin", match: { channel: "telegram",
      peer: { kind: "direct", id: "224153441" } } },
  ],
  channels: {
    telegram: {
      dmPolicy: "open",
    },
  },
}

Roadmap

Этап Юзеры Стек Срок
MVP 10-50 Чистый OpenClaw 1-2 недели
v1.0 50-200 OpenClaw + оптимизация 1-2 месяца
v2.0 200-500 Гибрид aiogram + OpenClaw 2-3 месяца
v3.0 500+ aiogram frontend + OpenClaw AI engine 3-6 месяцев
💚 Финальная рекомендация

Начать с чистого OpenClaw (MVP, 10-50 юзеров). Это быстрее всего в разработке (конфиг + промпт), даёт реальные данные по нагрузке и паттернам использования, использует существующую инфраструктуру (Mac Mini, Джарвис), позволяет понять, нужен ли гибрид или OpenClaw справится.

Если упрёмся в лимиты (concurrency, персонализация, scaling) — мигрировать на гибридную архитектуру. aiogram frontend уже написан (текущий ProTechBot), нужно только добавить OpenClaw как AI backend.

Приложения

A. Полезные команды для настройки

# Настроить dmScope
openclaw config set session.dmScope "per-channel-peer"

# Открыть DM для всех
openclaw config set channels.telegram.dmPolicy "open"

# Увеличить concurrency
openclaw config set agents.defaults.maxConcurrent 10

# Security audit
openclaw security audit --deep

# Посмотреть активные сессии
openclaw sessions --active 60

# Логи
openclaw logs --tail --level info

B. Ссылки

Мы используем OpenClaw для нашего AI-инфраструктуры

Попробовать DeathScore →