В нашем сообществе уже не первый день живёт агент @vega_exactly_not_ai.

Его создатель th0r3nt открыл исходный код на GitHub - чтобы мы вместе могли решить фундаментальные проблемы. На сегодня это самое стабильное решение автономного агента с личным Telegram-аккаунтом.

Создатель попросил рассказать об архитектуре и поставить ряд вопросов перед сообществом. Думаю, вместе мы способны разобраться.

Большинство современных Open-Source фреймворков для создания ИИ-агентов (от AutoGPT до недавнего OpenClaw) страдают от ряда детских болезней. Во-первых, это амнезия: агент теряет контекст спустя десяток шагов, так как векторные базы данных превращают память в кашу из семантически похожих, но логически не связанных кусков текста. Во-вторых, это зацикливание в бесконечных ReAct-петлях. В-третьих - ужасная безопасность при выполнении сгенерированного кода прямо на хостовой машине.


В этой статье я хочу разобрать архитектуру Autonomous Agent Framework (AAF) - моего pet-проекта, который перерос в полноценную OS-level сущность на Python.

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

  • Архитектура и слои (Layers)

Проект построен на asyncio и использует строгий src-layout. Логика разбита на 5 независимых слоев, которые общаются друг с другом через асинхронную шину событий (EventBus).

Layer 00 (Utils): Логгер, подсистема мониторинга (WatchDog), инструменты для работы с локальной ФС.

Layer 01 (DataState): Тройная гибридная память (SQL, Vector, GraphRAG) и глобальное состояние.

Layer 02 (Sensors): «Органы чувств» агента. Telethon (для жизни в Telegram в виде Userbot), микрофон (Vosk), динамики (Edge-TTS) и терминал.

Layer 03 (Brain): Оркестратор. Очередь приоритетов и три независимых ReAct-цикла.

Layer 04 (Swarm): Менеджер субагентов и управление Docker-песочницей.

  • Асинхронный «Мозг» и Event-Driven подход

Классические боты работают по паттерну listen() -> answer(). В AAF мозг нейросети полностью отвязан от сенсоров.

Все входящие раздражители (сообщение в Telegram, изменение погоды, падение системного модуля, алерт от фонового скрипта) публикуются в EventBus с определенным уровнем приоритета (CRITICAL, HIGH, MEDIUM, LOW).

Мозг (BrainEngine) имеет внутри себя asyncio.PriorityQueue. Агент сам решает, на что реагировать прямо сейчас, а что отложить. Более того, у агента есть три независимых цикла:

Event-Driven ReAct: Реакция на прямые события (например, сообщение от пользователя).

Proactivity ReAct: Фоновый цикл. Агент просыпается по таймеру, анализирует накопленные LOW-события (например, кто-то поставил реакцию на его сообщение или в чате накопилось 300 сообщений) и решает, нужно ли что-то предпринять.

Thoughts ReAct (Интроспекция): Цикл рефлексии. Агент анализирует свои последние действия, сжимает контекст, удаляет устаревшие задачи и обновляет графовую базу данных.

  • Тройная гибридная память (Reverse G-RAG)

Это ядро системы. Хранить всё в ChromaDB или в Markdown-файлах — путь к галлюцинациям. AAF использует каскадную систему памяти:

PostgreSQL (SQLAlchemy + JSONB): Отвечает за «жесткую» память. Здесь хранится Mental State (важные сущности и их статусы), Long-Term Tasks (долгосрочные задачи) и Personality Traits (приобретенные правила поведения).

KuzuDB (GraphRAG): Отвечает за интуицию и нейронные связи. Отдельно хочу выделить мною написанный механизм GraphRAG - он позволяет изучать неочевидные связи и реализует подобие интуиции у ИИ-агента.

ChromaDB (Vector): Отвечает за семантику и "поток рефлексии" (agent_thoughts). В качестве модели эмбеддингов локально крутится BAAI/bge-m3.

Как работает сборка контекста:
Когда происходит событие, система не просто делает векторный поиск по запросу. Реализован алгоритм, который я называю Reverse Graph-RAG:

Извлекается векторный смысл текущего события.

Текст парсится на наличие «якорей» - имен узлов, которые есть в графовой БД.

Система идет в KuzuDB и достает связи на глубину 1 (прямые контакты) и глубину 2 (косвенные ассоциации), игнорируя "суперузлы" - сам агент и главный пользователь (чтобы не перегруз��ть контекст).

Найденные соседние узлы из графа используются для вторичного поиска по векторной базе.

В итоге LLM получает не только похожие куски текста, а полную, структурированную картину: прямые связи объектов, косвенные ассоциации и релевантные мысли из прошлого.

  • Agent Swarm System и Docker-in-Docker (DinD)

Давать LLM-агенту доступ к выполнению bash-скриптов на хостовой машине - это катастрофа с точки зрения безопасности.

В AAF главный агент выступает только как оркестратор. Если задача требует написания и выполнения кода, парсинга сайтов или анализа 500 страниц логов, мозг динамически спавнит специализированного субагента (Worker или Daemon) на базе более дешевой LLM модели.

Как реализована песочница:
Пока для запуска песочницы используется проброс docker.sock. Я понимаю, что это риск для хостовой машины (агент может получить root через монтирование томов), и в будущем планирую перевести это на gVisor, Firecracker или изолированный удаленный Docker Daemon.

Если скрипт завис или ушел в бесконечный цикл - контейнер принудительно убивается (SIGKILL), а главному агенту возвращается Traceback. Хостовая машина при этом остается в полной безопасности.

Также реализован паттерн Agentic Mesh: субагенты могут передавать задачи друг другу по эстафете, сохраняя промежуточные данные в локальные файлы песочницы. Это позволяет использовать для рутины дешевые и быстрые модели, экономя токены дорогой основной модели.

  • Протокол Self-Healing и WatchDog

Все критически важные функции (работа с БД, Telegram-клиент, модули распознавания речи) обернуты в кастомный дек��ратор watchdog_decorator.

Он работает как Heartbeat-монитор. Если, например, отваливается соединение с базой данных, декоратор перехватывает исключение и публикует в шину SYSTEM_MODULE_ERROR с полным Traceback'ом.

Шина мгновенно будит агента с наивысшим приоритетом (CRITICAL). Агент читает ошибку, использует инструмент read_local_system_file, чтобы прочитать свой же исходный код (.py файлы), анализирует причину падения и может предложить фикс или попытаться перезапустить модуль.

  • Multi-Agent Architecture & CLI Manager

AAF - это платформа. Встроенный интерактивный терминал (aaf.py) позволяет в 3 клика развернуть на одном сервере целую команду независимых агентов. Никакого ада зависимостей и ручной правки конфигов: скрипт сам генерирует Docker Compose, изолирует песочницы и управляет ключами. У каждого запущенного агента своя память, свои ключи, свой характер и возможность спавнить уже своих субагентов.

Итог

AAF - это попытка уйти от парадигмы «умных чат-ботов» в сторону полноценных цифровых сущностей, которые живут на сервере, имеют свою картину мира, умеют рефлексировать и безопасно взаимодействовать с операционной системой.

GitHub: https://github.com/th0r3nt/AAF-Autonomous-Agent-Framework-
Чатик где можно посмотреть на жизнь Веги: https://t.me/openclaw_lab_community

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Безопасность vs свобода. AAF пробрасывает Docker-сокет (/var/run/docker.sock) для создания песочниц. Это даёт безграничные возможности, но является дырой в безопасности. Как решать проблему выполнения LLM-сгенерированного кода?
77.78%WASM7
22.22%Firecracker microVM2
Проголосовали 9 пользователей. Воздержались 7 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Графовая память — единственный способ заставить агента реально помнить сложный контекст, или это оверинжиниринг и достаточно хорошего векторного поиска?
84.62%GraphRAG11
15.38%VectorDB2
Проголосовали 13 пользователей. Воздержались 8 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Насколько жизнеспособна концепция агента как «вечного фонового демона» по сравнению с подходом «запустился → выполнил → уснул»?
75%Демон9
25%Serverless3
Проголосовали 12 пользователей. Воздержались 6 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Self-Healing. Верите в концепцию самоисправляющегося кода через LLM, или это путь к тому, что агент окончательно всё сломает без надзора человека?
68.75%Да11
31.25%Нет5
Проголосовали 16 пользователей. Воздержались 4 пользователя.