Архитектура обмена сообщениями

Все модули запускаются в виде сторонних процессов и общаются между собой через пересылку сообщений. Для обмена данными используются 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-схемы сообщений модуля.