Архитектура обмена сообщениями
Все модули запускаются в виде сторонних процессов и общаются между собой через пересылку сообщений. Для обмена данными используются gRPC и Protocol Buffers.
Общие принципы
Взаимодействие в системе строится на разграничении типов описания данных:
-
Обращения к ядру строго типизированы и используют сообщения на основе Protobuf.
-
Модули регистрируют свои собственные сообщения динамически, используя JSON-схемы.
Классификация сообщений
Система разделяет сообщения по двум ключевым признакам: способу определения (регистрации) и модели взаимодействия (типу действия).
1. По способу регистрации
-
Статические сообщения (Сообщения ядра) Строго описаны на стороне ядра с использованием Protobuf. Обеспечивают высокую производительность и типизацию для базовых системных функций (инфраструктура, нейросеть, память).
-
Динамические сообщения (Сообщения модулей) Регистрируются модулями в процессе работы через JSON-схемы. Позволяют расширять функционал системы без пересборки ядра, передавая структуру данных через инфраструктурные вызовы.
2. По характеру взаимодействия (типу действия)
В зависимости от необходимости получения ответа, сообщения делятся на два типа:
-
get(Запрос с ответом) Используются для получения данных или подтверждения выполнения операции. -
post(Отправка без ответа). Используются для передачи уведомлений, событий или данных, не требующих немедленной реакции или подтверждения от принимающей стороны.
Сообщения ядра
Сообщениями ядра называются такие сообщения, которые регистрируются самим ядром и строго описываются в protobuf. При этом конечное исполнение или обработка такого сообщения может происходить в другом модуле.
Сообщения ядра разделены на три функциональные группы:
1. Инфраструктурные сообщения
Отвечают за базовую жизнедеятельность системы:
-
Динамическая регистрация новых модулей.
-
Отправка отчетов о статусе (health check) работы модуля.
-
Динамическая регистрация сообщений через JSON-схемы.
-
Пересылка динамических сообщений между модулями.
2. Сообщения для работы с нейросетью
Обеспечивают стандартизированный интерфейс, позволяющий модулям отправлять запросы к LLM (Large Language Models).
3. Сообщения для работы с памятью
Предназначены для управления данными ИИ-агента:
-
Взаимодействие с файловой системой.
-
Работа с долговременной памятью.
-
Работа с кратковременной памятью.
Сообщения модулей
Модули могут регистрировать свои собственные типы сообщений. Для этого используется соответствующая JSON-схема, которая передается в ядро через инфраструктурное сообщение о регистрации схемы. Это позволяет расширять функционал системы без изменения protobuf-дефиниций ядра.
Подробное описание структуры и синтаксиса регистрации приведено в разделе Документация JSON-схемы сообщений модуля.