JAWL: новый асинхронный Python-фреймворк для ИИ-агентов с гибридной памятью и событийным управлением
Разработчик, известный по экспериментальному фреймворку AAF, представил полностью переработанную архитектуру для автономных ИИ-агентов. Новый проект JAWL сочетает асинхронность, событийно-управляемый цикл принятия решений и гибридную векторно-графовую память, что отличает его от существующих опенсорсных решений.
В начале марта текущего года автор опубликовал материал о своём раннем проекте AAF (Autonomous Agent Framework), который служил базовой площадкой для отработки концепций локального контекста и вызова инструментов. Однако за прошедшие месяцы разработчик полностью переписал архитектуру с нуля, учтя накопленный опыт и выявленные недостатки, и представил новый фреймворк под названием JAWL (Just A While Loop). Этот проект позиционируется как полностью асинхронный Python-фреймворк для создания событийно-управляемых ИИ-агентов, способных работать в режиме реального времени с минимальными задержками. Основное внимание в JAWL уделено системной инженерии, что отличает его от многих существующих решений, ориентированных на конечного пользователя, а не на разработчика. Ключевая особенность JAWL — это гибридная память Vector-Graph RAG, которая объединяет векторный поиск по семантике с графовыми структурами для отслеживания логических связей. В отличие от популярного Hermes Agent от Nous Research, который полагается на плоский векторный поиск и логи сессий, JAWL использует три типа баз данных: SQLite для структурированных данных (матрица Эйзенхауэра, гипотезы Байеса, CRM), Qdrant для векторного поиска (знания и рефлексия) и KuzuDB для графа знаний и навигации по коду. Такая трёхуровневая архитектура (L0 — кэш состояний, L1 — базы данных, L2 — интерфейсы, L3 — ядро агента) позволяет агенту быстро получать доступ к релевантной информации без задержек на сетевые запросы при каждом обращении к модели. Это достигается за счёт пассивного кэширования состояний интерфейсов на уровне L0, что снижает нагрузку на I/O операции.
Техническая реализация JAWL включает несколько инновационных механизмов. Во-первых, это событийно-управляемый Heartbeat, работающий через локальную асинхронную шину событий (EventBus). Все интерфейсы L2 подключены к этой шине, и каждое входящее событие имеет приоритет от BACKGROUND до CRITICAL. Heartbeat динамически корректирует время сна агента: для событий MEDIUM применяется коэффициент ускорения (например, x0.6), а для CRITICAL — мгновенное пробуждение с коэффициентом 0.0. Это позволяет агенту реагировать на прямые сообщения пользователя или вебхуки без задержек, экономя ресурсы при обработке фоновых задач. Во-вторых, гибридный поиск RAG работает следующим образом: из текста запроса извлекаются ключевые сущности с помощью RapidFuzz и алгоритма Ахо-Корасик FlashText, что особенно важно для корректной обработки русского языка с его падежами. Затем параллельно выполняются векторный поиск в Qdrant и поиск связанных узлов в KuzuDB, после чего результаты кросс-резолвятся: найденные векторные факты проверяются на наличие узлов в графе и подтягивают соседние связи, и наоборот.
Ещё одной важной особенностью JAWL является оркестрация субагентами, которая решает проблему неэффективного распределения токенов при выполнении тяжёлых задач. Главный агент выступает в роли оркестратора: он формулирует техническое задание и спавнит фоновых субагентов со специализированными ролями, такими как CODER, WEB_RESEARCHER, ARCHIVIST, QA_ENGINEER или SYSADMIN. Эти субагенты работают в изолированных Stateless ReAct-циклах на более дешёвых и быстрых моделях, например Gemini 3.5 Flash Lite, и не имеют доступа к основной памяти агента. Результаты возвращаются в виде структурированных Markdown-отчётов, после чего главный агент получает событие SUBAGENT_TASK_COMPLETED и просыпается для обработки результатов. Нагрузка на API регулируется с помощью asyncio.Semaphore, что позволяет контролировать параллельные запросы и избегать превышения лимитов.
В контексте рынка опенсорсных автономных агентов JAWL выделяется на фоне таких проектов, как OpenClaw (созданный Питером Штайнбергером) и Hermes Agent. OpenClaw — это готовое локальное приложение-ассистент на Node.js, которое выступает гейтвеем между мессенджерами и ПК, но оно монолитно и часто страдает от проблем с безопасностью. Hermes Agent, хотя и является продвинутым ассистентом с самообучением, использует память на основе логов и плоского векторного поиска без жёсткой реляционной структуры. JAWL, напротив, предлагает системный подход с чётким разделением ответственности по слоям (SOLID), что упрощает поддержку и расширение функциональности. Это делает фреймворк привлекательным для разработчиков, которым нужна гибкая платформа для создания агентов, интегрируемых с различными интерфейсами (Host OS, Telegram, GitHub, Web, Voice) через механизм Plugin Discovery.
Для российского рынка появление JAWL может иметь особое значение, учитывая активное развитие ИИ-разработок в стране. Поддержка русского языка в гибридном поиске (благодаря FlashText и RapidFuzz) снимает барьер для локальных разработчиков, которые часто сталкиваются с проблемами обработки кириллицы в зарубежных фреймворках. Кроме того, асинхронная архитектура и возможность делегирования задач фоновым воркерам позволяют оптимизировать затраты на API, что критично для стартапов и индивидуальных разработчиков. Однако стоит отметить, что JAWL пока не имеет широкого сообщества и документации, что может затруднить его внедрение по сравнению с более зрелыми проектами. Тем не менее, открытый исходный код и модульная структура дают потенциал для быстрого развития и адаптации под конкретные задачи.
Сравнивая JAWL с альтернативами, можно выделить его уникальные возможности, такие как безопасная самомодификация кода с автоматическим откатом при наличии уровня доступа OPERATOR. Эта функция, хотя и звучит рискованно, реализована с защитой от падения системы в незапускаемое состояние — изменения фиксируются транзакционно, и при ошибке происходит откат. Это ставит JAWL в один ряд с экспериментальными проектами, которые исследуют границы автономности ИИ. Тем не менее, остаются открытые вопросы: насколько стабилен фреймворк в длительных производственных сценариях, как он масштабируется при большом количестве параллельных субагентов и какие модели лучше всего подходят для оркестрации. Разработчик планирует продолжить развитие проекта, и, судя по динамике от AAF к JAWL, можно ожидать дальнейших улучшений в области событийного управления и гибридной памяти.
Перспективы JAWL выглядят многообещающими, но многое будет зависеть от реакции сообщества и готовности разработчиков экспериментировать с новой архитектурой. В ближайшее время автору предстоит решить вопросы документирования, создания примеров использования и, возможно, публикации бенчмарков, демонстрирующих преимущества перед конкурентами. Также важно следить за тем, как JAWL будет интегрироваться с популярными LLM API и поддерживать ли он локальные модели, что становится всё более актуальным в свете требований к конфиденциальности данных. Если проект получит достаточную поддержку, он может стать значимым вкладом в экосистему опенсорсных ИИ-агентов, особенно для разработчиков, работающих с русскоязычными данными и нуждающихся в тонкой настройке поведения агентов.