Внутри OpenClaw: как опенсорсный ИИ-ассистент управляет 22+ мессенджерами через единый TypeScript-шлюз
Глубокий код March 8, 2026 📍 Wien, Österreich Analysis

Внутри OpenClaw: как опенсорсный ИИ-ассистент управляет 22+ мессенджерами через единый TypeScript-шлюз

Глубокий архитектурный разбор OpenClaw — опенсорсного персонального ИИ-ассистента, который работает локально на ваших устройствах и общается через WhatsApp, Telegram, Discord, Signal, iMessage и ещё 17 платформ. Мы проанализировали 95 000+ фрагментов кода, чтобы понять, как устроены его Gateway, Agent Engine и система памяти.

Ключевые выводы

OpenClaw — это self-hosted ИИ-ассистент на TypeScript/ESM, который маршрутизирует ответы ИИ через 22+ мессенджера посредством центрального WebSocket-шлюза. Его архитектура включает Pi Agent Engine для рассуждений ИИ с failover между моделями, гибридную векторную+BM25 систему памяти на sqlite-vec и Docker-песочницы для изоляции безопасности.


В быстро меняющемся мире ИИ-ассистентов большинство решений привязывают вас к одной платформе: ChatGPT живёт в облаке OpenAI, Copilot — в экосистеме Microsoft, Gemini — у Google. Но что, если вам нужен ИИ-помощник, который работает одновременно *во всех* мессенджерах — WhatsApp, Telegram, Discord, Slack, Signal, iMessage — при этом запускаясь целиком на вашем собственном железе? Именно эту задачу решает OpenClaw — амбициозный опенсорсный проект, который мы решили разобрать изнутри.

Для этого обзора мы не ограничились чтением документации или запуском софта. Мы проиндексировали весь исходный код OpenClaw — более 95 000 фрагментов кода, 81 000+ символов и 400 000 перекрёстных ссылок — с помощью Code Indexer, локального инструмента ИИ-аналитики кода. Это позволило нам выполнять семантический поиск по кодовой базе, прослеживать цепочки вызовов между компонентами и верифицировать архитектурные утверждения непосредственно по исходному коду. То, что следует далее — это глубокое погружение программиста, написанное для всех.

Что такое OpenClaw?

OpenClaw — это персональный ИИ-ассистент, который вы устанавливаете на свой компьютер (или сервер). В отличие от облачных решений, он работает локально как фоновый сервис и подключается к мессенджерам, которыми вы уже пользуетесь. Пишете ему в WhatsApp — он отвечает. Пишете в Discord — отвечает и там. Можно даже разговаривать с ним через нативные приложения на macOS, iOS и Android с голосовыми командами — как «Привет, Siri», только Siri не умеет запускать bash-команды на вашем сервере.

Проект создан Петером Штайнбергером — известным iOS-разработчиком и основателем PSPDFKit (ныне Nutrient). Он прошёл через несколько имён — Warelay, Clawdbot, Moltbot — прежде чем стать OpenClaw. Маскот проекта — космический лобстер по имени Molty, а боевой клич — восхитительно абсурдное «EXFOLIATE! EXFOLIATE!» (отсылка к далекам из «Доктора Кто»). Проект полностью открыт под лицензией MIT.

Но за забавным брендингом скрывается серьёзная инженерия. OpenClaw — это монорепозиторий на TypeScript/ESM, управляемый pnpm, содержащий более 300 исходных файлов только в движке агента, 34 пакета расширений, нативные приложения на Swift и Kotlin, и одну из самых продуманных архитектур плагинов, которые мы видели в опенсорсном ИИ-проекте.

Архитектура: Gateway как центр всего

Архитектура OpenClaw строится вокруг единой концепции: Gateway (шлюз). Представьте его как центральный коммутатор — HTTP- и WebSocket-сервер, который стоит между вами (на любой платформе обмена сообщениями) и ИИ. Каждое сообщение из каждого канала проходит через этот шлюз, который маршрутизирует его к нужному ИИ-агенту, управляет сессиями, обрабатывает аутентификацию и стримит ответы обратно.

Архитектура OpenClaw: звездообразная топология
graph TB
    subgraph "Ваши устройства"
        WA["WhatsApp"]
        TG["Telegram"]
        DC["Discord"]
        SL["Slack"]
        SG["Signal"]
        IM["iMessage"]
        WB["Веб-браузер"]
        MC["macOS"]
        IOS["iOS"]
        AND["Android"]
    end

    subgraph "OpenClaw Gateway"
        GW["Gateway Server\nHTTP + WebSocket"]
        AUTH["Авторизация и сессии"]
        ROUTE["Маршрутизатор"]
    end

    subgraph "ИИ-движок"
        PI["Pi Agent Runner"]
        TOOLS["Инструменты\nbash, read, browse"]
        MEM["Система памяти\nsqlite-vec"]
        MODELS["Выбор модели\nOpenAI / Anthropic / Google / Ollama"]
    end

    WA --> GW
    TG --> GW
    DC --> GW
    SL --> GW
    SG --> GW
    IM --> GW
    WB --> GW
    MC --> GW
    IOS --> GW
    AND --> GW

    GW --> AUTH
    GW --> ROUTE
    ROUTE --> PI
    PI --> TOOLS
    PI --> MEM
    PI --> MODELS
Source: По данным анализа ARCHITECTURE.md

Эта звездообразная архитектура элегантна по ключевой причине: вы настраиваете ИИ только один раз. Ваш системный промпт, навыки, инструменты, память и политики безопасности живут в одном месте — конфигурационном файле шлюза (JSON5 или YAML по адресу ~/.openclaw/openclaw.json). Каждый канал наследует эти настройки, при этом допуская переопределения для конкретных каналов — например, пользовательские списки доступа или правила поведения в групповых чатах.

Система каналов: 22+ платформы, одна кодовая база

Пожалуй, самая впечатляющая возможность OpenClaw — его система каналов. Проект поддерживает 22 платформы обмена сообщениями, каждая интегрирована через известные опенсорсные библиотеки или официальные SDK:

Канал Метод интеграции Статус
WhatsApp Baileys (Web-протокол) Встроенный
Telegram Фреймворк grammY Встроенный
Discord Carbon / discord-api-types Встроенный
Slack @slack/bolt Встроенный
Signal signal-cli bridge Встроенный
iMessage Мост macOS native Встроенный
Web Chat Express + WebSocket Встроенный
Microsoft Teams Bot Framework Расширение
Matrix matrix-js-sdk Расширение
Twitch tmi.js Расширение
LINE LINE Messaging API Расширение
Google Chat Chat API Расширение
Nostr Интеграция протокола Расширение
Zalo Zalo API Расширение
Feishu (Lark) Lark Open Platform Расширение
Mattermost Mattermost API Расширение

Архитектурно это работает благодаря Channel Framework (src/channels/). Каждая интеграция реализует единый интерфейс: получает сообщения от пользователей, нормализует их в унифицированный формат и передаёт в Channel Dock — маршрутизирующий слой, определяющий, какой ИИ-агент должен обработать сообщение. Ответы идут обратно тем же путём.

Каждый канал также имеет собственную систему списков доступа. По умолчанию OpenClaw использует политику «сопряжения»: когда неизвестный пользователь отправляет личное сообщение, вместо ответа ИИ он получает короткий код сопряжения. Вы подтверждаете код из командной строки (openclaw pairing approve <канал> <код>), и только после этого пользователь получает доступ. Это не даёт случайным людям в WhatsApp общаться с вашим ИИ — реальная проблема, когда ассистент может выполнять shell-команды на вашем сервере.

ИИ-движок: Pi Agent Runner

В основе ИИ-возможностей OpenClaw лежит Pi Embedded Runner — продвинутый оркестратор, управляющий полным жизненным циклом «хода» ИИ (получение сообщения, генерация ответа и обработка вызовов инструментов по пути).

Когда приходит сообщение, Runner: (1) формирует системный промпт, комбинируя идентичность агента, загруженные навыки, контекст рабочего пространства и информацию о канале; (2) выбирает подходящую ИИ-модель на основе конфигурации и доступности; (3) стримит ответ от модели; (4) обнаруживает и выполняет вызовы инструментов (запуск bash-команд, чтение файлов, поиск в памяти); (5) подаёт результаты инструментов обратно в модель и продолжает диалог.

Один только конструктор системного промпта (system-prompt.ts) — это файл на 32 КБ, что отражает сложность формирования контекста для ИИ. Он динамически внедряет навыки из рабочего пространства, метаданные канала (например, находится ли пользователь в групповом чате или в ЛС), и релевантные фрагменты памяти из системы векторного поиска.

Поддержка моделей: 20+ провайдеров с автоматическим failover

OpenClaw не привязывает вас ни к одному провайдеру ИИ. Наш анализ кода подтвердил поддержку более 20 провайдеров — от крупных облачных игроков до локальных рантаймов LLM:

  • Облачные провайдеры: OpenAI (GPT-5.4), Anthropic (Claude Opus 4.6), Google Gemini (3.1 Pro), xAI (Grok), Mistral, Groq, Cerebras
  • Шлюзовые сервисы: OpenRouter, Vercel AI Gateway, Kilo Gateway, GitHub Copilot
  • Локальные рантаймы: Ollama, vLLM, LM Studio и любой OpenAI-совместимый эндпоинт
  • Специализированные: Z.AI (GLM), Moonshot AI (Kimi K2.5), Volcano Engine (Doubao), BytePlus, Qwen, Synthetic, Hugging Face Inference

Система failover продумана особенно тщательно. OpenClaw поддерживает несколько API-ключей на провайдера (через переменные окружения вроде OPENAI_API_KEY_1, OPENAI_API_KEY_2) и ротирует их при обнаружении лимитов (HTTP 429). Если основная модель полностью недоступна, он переключается на резервного провайдера — если квота Anthropic закончилась в 2 часа ночи, ассистент бесшовно переходит на OpenAI.

Система памяти: векторный поиск поверх Markdown-файлов

Одно из самых интересных инженерных решений в OpenClaw — его архитектура памяти. В отличие от многих ИИ-ассистентов, использующих непрозрачные базы данных, память OpenClaw — это обычные Markdown-файлы. Знания вашего ассистента хранятся в человекочитаемых .md файлах в каталоге рабочего пространства (~/.openclaw/workspace/memory/). Два уровня:

  • Ежедневные логи (memory/YYYY-MM-DD.md): заметки каждого дня в режиме append-only. ИИ читает логи за сегодня и вчера при старте сессии.
  • Курируемая память (MEMORY.md): долговременные знания — ваши предпочтения, решения, устойчивые факты. Загружается только в приватных (не групповых) сессиях.

Но дальше становится ещё интереснее: поверх этих Markdown-файлов OpenClaw строит индекс векторного поиска на sqlite-vec — расширении SQLite для поиска по векторному сходству. Это значит, что ИИ может семантически вспомнить информацию, даже если формулировка отличается от оригинала. Для проектов, требующих более масштабируемого векторного хранилища, OpenClaw также предлагает расширение LanceDB (extensions/memory-lancedb) как альтернативный бэкенд.

Наш анализ системы памяти (src/memory/manager.ts — файл на 26 КБ) выявил гибридную архитектуру поиска, комбинирующую векторное сходство с релевантностью по ключевым словам BM25. Векторный поиск отлично справляется с запросами «это значит то же самое» («Mac Studio gateway host» находит «машина, на которой работает gateway»), а BM25 ловит точные токены — коды ошибок, имена переменных окружения, конкретные ID. Два скора объединяются с настраиваемыми весами, затем опционально уточняются двумя этапами постобработки:

  • MMR (Maximal Marginal Relevance): Перессортировывает результаты, исключая почти-дубликаты, чтобы ИИ получал разнообразную информацию, а не пять копий одной заметки.
  • Temporal Decay: Применяет экспоненциальный множитель по возрасту, так что вчерашние заметки ранжируются выше прошлогодних. Период полураспада по умолчанию — 30 дней: заметка полугодичной давности сохраняет лишь ~1,6% исходного скора.

Есть также механизм автоматического «сброса памяти». Когда сессия приближается к лимиту контекстного окна (перед авто-компакцией, обрезающей беседу), OpenClaw запускает «тихий» ход агента, напоминающий ИИ записать важную информацию на диск, пока она не потеряна. ИИ записывает долговременные заметки в Markdown-файлы, после чего отвечает NO_REPLY, чтобы пользователь не заметил этого поддерживающего шага. Изящное решение фундаментальной проблемы конечных контекстных окон.

Безопасность: от сопряжения до Docker-песочниц

Запуск ИИ-ассистента, способного выполнять shell-команды на вашем компьютере и доступного через публичные мессенджеры — это серьёзная задача безопасности. Модель безопасности OpenClaw отражает эту реальность многоуровневой защитой:

  • DM-сопряжение: неизвестные пользователи должны предъявить код сопряжения, прежде чем взаимодействовать с ассистентом. Это предотвращает инъекции промптов от случайных людей из интернета.
  • Списки доступа: каждый канал поддерживает индивидуальные и групповые списки доступа. Вы явно одобряете, кто может общаться с ИИ.
  • Docker-песочницы: для неосновных сессий (групповые чаты, публичные каналы) OpenClaw может запускать инструменты внутри отдельных Docker-контейнеров. Bash выполняется внутри Docker, а не на хост-системе.
  • Политики инструментов: в песочницах есть белый список безопасных инструментов (bash, read, write, edit) и чёрный список опасных (browser, canvas, nodes, gateway).
  • Подтверждение исполнения: инструменты можно закрыть за воркфлоу подтверждения, требующим явной авторизации перед выполнением чувствительных команд.

Проект также ведёт формальный документ модели угроз по фреймворку MITRE ATLAS — структурированный подход к документированию угроз, специфичных для ИИ/МЛ-систем. Он охватывает Gateway, Agent Runtime, интеграции каналов, маркетплейс навыков ClawHub и взаимодействие с MCP-серверами. Такой уровень документации безопасности необычен для опенсорсного проекта и говорит о серьёзном отношении к безопасному развёртыванию.

Нативные приложения: macOS, iOS, Android

Хотя Gateway — это мозг, OpenClaw также включает сопутствующие приложения для платформ Apple и Android. Приложение macOS (на Swift) предоставляет панель управления в меню бар с голосовым пробуждением (тригерные слова вроде «Hey Molty»), push-to-talk и поверхностью Canvas для визуальных рабочих пространств агента. Приложение iOS добавляет голосовое пробуждение и Canvas на мобильном, а приложение Android (Kotlin) открывает доступ к специфичным командам устройства — чтение уведомлений, геолокация, SMS, фото, контакты и календарь.

Нативные приложения подключаются к Gateway по WebSocket и регистрируются как «узлы» (nodes). Gateway затем маршрутизирует к ним действия, специфичные для устройства: нужно фото? ИИ говорит iOS-узлу сделать снимок. Нужна геолокация? Запрашивает у Android-узла. Исполнение остаётся лёгким — это сенсорные и дисплейные поверхности, а не полные рантаймы.

Экосистема плагинов и навыков

OpenClaw включает полноценную систему плагинов с обнаружением, загрузкой, валидацией манифестов и изолированным рантаймом. Плагины могут предоставлять инструменты, хуки, сервисы и HTTP-маршруты. Архитектура следует классическому паттерну слотов расширений: именованные точки расширения, которые заполняют плагины.

Навыки (skills), в отличие от плагинов, более легковесны — по сути, это SKILL.md файлы со специализированными инструкциями и возможностями. Их можно поставлять с проектом, устанавливать из маркетплейса ClawHub (clawhub.ai) или помещать в каталог рабочего пространства. Проект придерживается строгого разделения: большинство новых возможностей должны поставляться как навыки ClawHub или внешние плагины, а не как добавления в ядро.

Поддержка MCP (Model Context Protocol) также доступна через внешний мост mcporter, что держит интеграцию MCP отделённой от ядра рантайма. Это позволяет добавлять или менять MCP-серверы без перезапуска Gateway — прагматичное проектное решение, жертвующее тесной интеграцией ради операционной стабильности.

Статистика проекта

Метрика Значение
Основной язык TypeScript (ESM)
Пакетный менеджер pnpm (монорепо workspace)
Проиндексировано фрагментов кода 95 767
Проиндексировано символов 81 633
Перекрёстных ссылок 400 179
Каталогов в src/ 52
Пакетов расширений 34
Каналов обмена сообщениями 22+
Провайдеров ИИ-моделей 20+
Лицензия MIT
Требования к рантайму Node.js ≥ 22
Система сборки tsdown (на базе ESBuild)
Тестовый фреймворк Vitest
Размер схемы конфигурации 56 КБ (TypeBox + Zod)
Варианты установки npm, Docker, Nix, из исходников

Как сообщение путешествует через OpenClaw

Чтобы свести всё воедино, проследим, что происходит, когда вы отправляете сообщение в WhatsApp вашему ассистенту OpenClaw:

Путь сообщения: WhatsApp → ИИ → Ответ
sequenceDiagram
    participant U as Вы (WhatsApp)
    participant WA as Канал WhatsApp
    participant D as Channel Dock
    participant R as Маршрутизатор
    participant GW as Gateway
    participant PI as Pi Agent Runner
    participant LLM as ИИ-модель (напр. Claude)
    participant T as Инструменты (bash/memory)

    U->>WA: "Какая погода в Вене?"
    WA->>D: Нормализация формата
    D->>R: Определение агента + сессии
    R->>GW: Диспатч в сессию
    GW->>PI: Запуск хода ИИ
    PI->>PI: Формирование промпта + история
    PI->>LLM: Стрим запроса к модели
    LLM-->>PI: Вызов инструмента: bash
    PI->>T: Выполнение: curl wttr.in/Vienna
    T-->>PI: Данные о погоде
    PI->>LLM: Продолжение с результатом
    LLM-->>PI: "В Вене 8°C..."
    PI-->>GW: Финальный ответ
    GW-->>D: Обратная маршрутизация
    D-->>WA: Форматирование под WhatsApp
    WA-->>U: "В Вене 8°C, частичная облачность 🌤️"
Source: По данным sequence-диаграммы из ARCHITECTURE.md

Общая задержка зависит от ИИ-модели и выполнения инструментов. Но ответы стримятся в реальном времени — пользователь видит появляющийся текст последовательно, как индикатор набора в обычном чате. OpenClaw обрабатывает разбиение на фрагменты и рейт-лимитинг для каждого канала, поскольку некоторые платформы (как WhatsApp) имеют ограничения длины сообщений.

Чем OpenClaw выделяется

Проанализировав кодовую базу в деталях, мы выделили несколько ключевых проектных решений:

  • Философия local-first: ваши данные остаются на вашей машине. Память — это Markdown-файлы. Сессии — JSONL-логи на диске. Никаких облачных баз данных, никакой телеметрии.
  • Широта каналов: ни один другой опенсорсный ИИ-ассистент не приближается к поддержке 22+ платформ обмена сообщениями. Абстракция Channel Dock делает добавление новых платформ относительно простым.
  • Память-как-Markdown: использование текстовых файлов как источника истины для памяти, с наложенным векторным поиском, одновременно практично (вы можете редактировать память ИИ любым текстовым редактором) и философски прозрачно.
  • Безопасность по умолчанию: DM-сопряжение, Docker-песочницы и формальное моделирование угроз демонстрируют зрелость, необычную для проекта такого возраста.
  • Модельный агностицизм: с 20+ провайдерами и автоматическим failover OpenClaw полностью избегает привязки к вендору.

Ограничения и оговорки

Ни один обзор не был бы полным без упоминания компромиссов. OpenClaw требует Node.js 22+ и на данный момент ориентирован на терминал — первоначальная настройка предполагает запуск CLI-команд, что может отпугнуть менее технически подготовленных пользователей. Интеграция с WhatsApp использует неофициальную библиотеку Baileys (реверс-инжиниринг Web-протокола), что несёт определённый риск действий со стороны Meta. Проект также является, прежде всего, однопользовательским ассистентом: хотя маршрутизация мультиагентов существует, она предназначена для одного оператора, управляющего несколькими персонами, а не для мультитенантного развёртывания.

Кодовая база велика и стремительно развивается. Наш анализ охватил версию 2026.3.8, а один лишь CHANGELOG.md весит 665 КБ — что говорит об экстремально быстрой разработке. Такая скорость впечатляет, но может усложнить жизнь новым контрибьюторам. Проект явно не рекомендует PR-ы более 5000 строк и большие пачки мелких PR-ов, что говорит о том, что они уже сталкивались с проблемами масштаба.

Заключение: самый амбициозный опенсорсный ИИ-ассистент

OpenClaw — не самый простой ИИ-ассистент в настройке. Не самый отполированный. Но, возможно, самый архитектурно амбициозный. Комбинация 22+ каналов обмена сообщениями, 20+ провайдеров моделей, дополненной векторами памяти, нативных мобильных приложений, Docker-песочниц и полноценной системы плагинов — всё в одном MIT-лицензированном монорепозитории — представляет собой инженерное усилие, сопоставимое с коммерческими продуктами компаний с куда большими ресурсами.

Для разработчиков и опытных пользователей, которые хотят ИИ-ассистента, уважающего конфиденциальность, работающего на их железе и доступного через все используемые платформы, OpenClaw — на данный момент самый убедительный опенсорсный вариант. Проект молод, быстро развивается и иногда шероховат — но архитектура надёжна, модель безопасности серьёзна, а сообщество (во главе с проверенным ветераном опенсорса) активно и растёт.

Развернёте ли вы его сегодня или будете наблюдать со стороны — OpenClaw представляет собой увлекательный шаблон того, как может выглядеть персональная ИИ-инфраструктура, когда её создают люди для людей.

Методология

Данный анализ был проведён путём индексации полного исходного кода OpenClaw (версия 2026.3.8) с помощью Code Indexer — локального инструмента ИИ-аналитики кода, создающего семантические эмбеддинги для целых кодовых баз. Проиндексированный корпус составил 95 767 фрагментов кода, 81 633 символа и 400 179 перекрёстных ссылок. Мы выполняли семантические поиски по кодовой базе для верификации архитектурных утверждений, прослеживали цепочки вызовов между компонентами и сопоставляли исходный код с официальной документацией. Все диаграммы и статистика получены из прямого анализа кода, а не из промо-материалов.

Code Indexer (codeindexer.dev) делает возможным такой глубокий анализ кодовых баз, предоставляя векторный поиск, навигацию по символам и отслеживание ссылок для любого проекта, независимо от языка программирования. Если вы хотите проводить подобные глубокие разборы опенсорсных проектов — он доступен как бесплатный локальный инструмент.

📚 Источники и ссылки

# Source Link
[1] Репозиторий OpenClaw на GitHub Peter Steinberger et al., 2026 github.com
[2] sqlite-vec: расширение SQLite для векторного поиска Alex Garcia, 2024 github.com
Share X Reddit LinkedIn Telegram Facebook