Почему я не поладил с OpenClaw, ZeroClaw и Moltis, и что у меня вышло в итоге. Спойлер: MicroClaw

Почему я не поладил с OpenClaw, ZeroClaw и Moltis, и что у меня вышло в итоге. Спойлер: MicroClaw

В этой статье я расскажу, как начал разрабатывать персонального ИИ-ассистента задолго до бума OpenClaw, с какими фундаментальными проблемами столкнулся и почему в итоге решил написать свой фреймворк. Вы узнаете, какие принципы работы ИИ-агента, как мне кажется, наиболее важны в современных агентских системах, как он обеспечивает безопасность и почему Python все-таки лучший выбор для подобных проектов. Если вы тоже пробовали подружиться с LLM-агентами, но сталкивались с перерасходом токенов, утечкой данных или проблемами их запуска, интеграции и модификации — возможно, этот проект окажется полезным.

Как все начиналось

С момента появления GPT-3 я стараюсь следить за развитием LLM. Когда в ИИ-моделях появилась поддержка function calling — примерно два года назад — я загорелся идеей создать виртуального ассистента. Он должен был стать личным секретарём: напоминать о важных событиях, помогать решать задачи на работе и дома, оповещать о таких вещах, как просроченная страховка и другие бытовые дела.

Function calling — это концепция, которая позволяет LLM использовать внешние инструменты.

Идея казалась простой: есть LLM, есть tools — соединяем и получаем ассистента. Но 1,5 года назад я потерпел фиаско: локальные LLM были настолько слабы, что даже с поддержкой tools часто не могли корректно их вызывать. А полноценных облачных решений в российском сегменте тогда ещё почти не было.

Первые попытки и разочарования

Недавно рынок взорвался выходом OpenClaw, вызвав настоящий дефицит MacMini. Я снова решил вернуться к идее персонального ИИ-ассистента и запустить его на базе OpenClaw. Но уже на старте столкнулся с рядом проблем:

  1. Огромные требования к количеству токенов — каждый запрос сжигал десятки тысяч токенов из-за гигантской базы навыков. Модель терялась в выборе и начинала перебирать инструменты, пока не находила нужный.
  2. Полный контроль над системой — по умолчанию действует принцип «разрешено всё, что не запрещено». Это создаёт риски: легко что-то забыть запретить.
  3. Куча непроверенного функционала — в GitHub лежат репозитории с тысячами навыков для OpenClaw, почти все они сгенерированы ИИ. Никто толком не знает, что они делают и работают ли вообще.
  4. Способность агента модифицировать себя и свои навыки — звучит как эволюция, но нет гарантии, что она пойдёт вам на пользу. Плюс — это сотни миллионов лишних токенов.
  5. Утечка авторизационных данных в модель — не просто баг, а критическая дыра в безопасности. Уязвимости OpenClaw подробно разбирали в Лаборатории Касперского.

С одной стороны, «развязанные руки» у агента — именно то, что сделало OpenClaw популярным и открыло новый этап в развитии ИИ-агентов. С другой — такой агент становится опасным инструментом, причём не для окружающих, а для самого пользователя.

Повозившись с OpenClaw, я начал искать альтернативы: Nanobot, NanoClaw, Moltis, SafeClaw, ZeroClaw. Попробовал все, но ближе всего к моему идеалу оказались Moltis и ZeroClaw. Расскажу только о них — остальные заслуживают отдельной статьи.

ZeroClaw — сильный проект. Написан на Rust, работает только с tools (без системы навыков), что экономит токены, делает диалоги чище и повышает точность вызовов. Но есть проблема: tools нужно писать на Rust, а добавить их в работающий контейнер крайне сложно — приходится пересобирать образ с нуля. Поэтому я перешёл к Moltis.

Последняя капля

В Moltis я столкнулся с финальной проблемой, которая и подтолкнула меня к созданию собственного решения — система tools и skills работает плохо.

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

Это не только огромный перерасход токенов и забитый контекст, но и полная небезопасность, мусор в чате и куча ошибок в логах — что вызывает раздражение у любого разработчика.

Почему я сделал MicroClaw и что это такое

Я решил написать свой фреймворк, который решал бы эти проблемы. Основные принципы:

Безопасность — модель не должна иметь доступ к данным авторизации и к системе.

Эффективность — минимум лишних вызовов модели.

Простота — код должен быть понятным и легко расширяемым.

Python — популярный, доступный язык, мой основной стек.

Архитектура MicroClaw

MicroClaw построен как каркас с чётким разделением ответственности. В основе — агент, который общается с LLM и вызывает инструменты. Инструменты сгруппированы в тулкиты — логические наборы связанных функций.

Channels — интерфейсы общения

Channels — это то, через что я общаюсь с агентом. Сейчас доступны:

  • CLI — для локального общения в терминале,
  • Telegram — для общения через бота (поддерживает polling и webhook).

Интерфейс каналов унифицирован, поэтому добавить Slack или Discord займёт пару часов.

Agent Core — мозг агента

Agent Core связывает LLM с инструментами. Использует LangChain для создания и управления агентом. Важно: агент не имеет прямого доступа к системе — может вызывать только те инструменты, которые ему явно разрешены.

Toolkits — инструменты

Ключевая особенность MicroClaw. Вместо набора разрозненных инструментов — логические группы (тулкиты), например:

  • CalDAV — работа с календарём: создание, чтение, поиск событий,
  • CardDAV — управление контактами,
  • Email — отправка и чтение почты (IMAP/SMTP),
  • WebDAV — работа с файлами на серверах.

Каждый тулкит — отдельный класс с методами, помеченными декоратором @tool. Они автоматически становятся доступными агенту. Данные для авторизации хранятся в настройках тулкита и никогда не передаются модели.

Session Storage — хранилище диалогов

Отвечает за хранение истории. Доступны два варианта:

  • Memory — в оперативной памяти (быстро, но не персистентно),
  • Filesystem — в JSON-файлах (медленнее, но персистентно).

Безопасность

MicroClaw работает по принципу «запрещено всё, что не разрешено». Модель может использовать только те инструменты, которые вы ей явно дали. Нет инструмента для выполнения команд в терминале — агент ничего не выполнит, даже если захочет.

Авторизационные данные изолированы. Логины и пароли хранятся в настройках тулкитов и не попадают в модель. Агент видит только результат выполнения инструмента, но не знает, как он был инициализирован. Даже если модель попытается «вспомнить» доступы — у неё не будет такой возможности.

Ещё один плюс — явное подключение тулкитов. Если вы не подключили CalDAV, агент не сможет работать с календарём. Это повышает безопасность и снижает расход токенов: модель видит только нужные инструменты, а не сотню ненужных.

Возможности из коробки

MicroClaw поставляется с готовыми тулкитами:

Работа с почтой (IMAP/SMTP):

  • чтение папок и писем,
  • отправка писем с вложениями,
  • поиск по критериям,
  • управление папками.

Работа с календарём (CalDAV):

  • создание событий,
  • чтение событий,
  • поиск по датам.

Управление контактами (CardDAV):

  • создание контактов,
  • чтение контактов,
  • поиск по имени или email.

Работа с файлами (WebDAV):

  • загрузка файлов,
  • скачивание файлов,
  • управление директориями.

Написание своих тулкитов

Создать свой тулкит просто. Пример:

Методы с декоратором @tool автоматически становятся доступными агенту. Данные из MyToolkitSettings не попадают в модель.

Почему Python

Почему не Rust, как у ZeroClaw? Потому что для такого проекта скорость не критична. Важнее:

  1. понятность кода — Python проще и популярнее,
  2. простота разработки — новый тулкит можно написать за 10 минут,
  3. экосистема — огромное количество готовых библиотек для интеграций.

Код MicroClaw написан человеком. Я делал ставку на читаемость, структурированность и поддерживаемость. Я не гонюсь за минимальным количеством строк — важнее архитектура и чистота кода.

Планы на будущее

Мультиагентность

Сейчас в MicroClaw один агент с доступом ко всем тулкитам. В будущем планирую реализовать систему мультиагентности: отдельные агенты с разными задачами и инструментами.

Например:

  • личный секретарь — с доступом к календарю и почте,
  • разработчик — с доступом к git,
  • исследователь — для поиска статей.

Агенты смогут общаться между собой. Это уменьшит расход токенов, повысит точность и улучшит разделение ответственности.

Постоянная память

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

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

Это сделает взаимодействие более персонализированным и естественным.

Изолированный запуск инструментов

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

Читать оригинал