1. Архитектура OpenClaw для multi-user
Как это работает
OpenClaw — это AI Gateway, который принимает сообщения из каналов (Telegram, WhatsApp, Discord и др.) и маршрутизирует их к агентам. Ключевые абстракции:
Сессионная модель
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> |
Полная изоляция (мульти-аккаунт) |
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:
- • Main lane: default concurrency = 4
- • Subagent lane: default concurrency = 8
- • Настраиваемо:
agents.defaults.maxConcurrent
При множественных ботах/агентах обнаружен 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 | ⚠️ С оговорками |
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 имеет два уровня памяти:
contextTokens (default 200K). Автоматически pruning старых tool results.
В текущей архитектуре OpenClaw workspace общий для всех сессий одного агента. Это значит: все 500 юзеров ProTechBot делят один workspace, нет встроенного механизма «папка per user», агент может случайно прочитать/записать данные другого юзера.
Решения для персональной памяти
users/{peerId}/ в общем workspace. Агент в system prompt получает инструкцию читать файлы оттуда. ⚠️ Нет гарантии изоляции.Вариант 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. Но есть несколько подходов:
read tool. System prompt: «При вопросах о видеопродакшене — читай файлы из knowledge/». Просто, работает, легко обновлять. Минус: не масштабируется на большие базы знаний (100+ документов).
5. Security и изоляция
Prompt Injection Protection
OpenClaw имеет многоуровневую защиту:
allow: ["read", "web_search", "session_status"], deny: ["write", "edit", "exec", "process", "browser", "nodes"]
sandbox.mode: "all", scope: "session" — отдельный контейнер per session, workspaceAccess: "ro"
allowFrom: whitelist user IDs. dmPolicy: "open": все могут писать (для публичного бота).
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 |
Риски
read tool или sandbox с workspaceAccess: "none"
exec + sandbox mode "all"
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
Как Фёдор управляет ботом
admin с полным доступом. Все остальные — к protech. Admin-агент может: читать логи всех сессий, отправлять сообщения юзерам, спавнить субагентов для аналитики, управлять конфигурацией.
openclaw sessions — список сессий, openclaw sessions --active 60 — активные за час, openclaw agent --session-id <id> --message "..."
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) |
Пути масштабирования
maxConcurrent до 10-15. Использовать быстрые модели (Gemini Flash, DeepSeek V3.2). Оптимизировать промпт (короче = быстрее). Session reset по idle (30-60 мин).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 | — |
Детальный разбор
10. Реальный опыт из сообщества
GitHub Issues (OpenClaw)
Общие выводы из сообщества
11. Вердикт и рекомендации
Можно ли использовать OpenClaw для ProTechBot?
Короткий ответ: ДА, но с оговорками.
Плюсы OpenClaw для ProTechBot
Минусы OpenClaw для ProTechBot
Рекомендуемая архитектура: Гибридный подход
Конфигурация для чистого 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