Перейти к основному содержимому

Реестр компонентов и Группы

Этот документ описывает структуру и логику работы Реестра HSM, который служит базой знаний для Meta-Orchestrator. Логика работы с реестром инкапсулирована в hsm/src/hyper_stack_manager/core/registry_manager.py.

1. Концепция

Реестр HSM — это структурированное описание компонентов и их взаимосвязей. Он позволяет абстрагироваться от конкретных реализаций через механизм групп. В HSM на один проект полагается ровно один реестр.

2. Структура Реестра (Registry Layout)

Реестр представляет собой директорию (по умолчанию hsm-registry/) со следующей структурой:

hsm-registry/
├── libraries/ # Манифесты Python-библиотек
├── services/ # Манифесты автономных сервисов
├── library_groups/ # Группы выбора для библиотек
└── service_groups/ # Группы выбора для сервисов

2.1. Изоляция (HSM_REGISTRY_PATH)

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

3. Группы и Стратегии выбора

Группы позволяют определять "интерфейсы" системы.

3.1. Стратегия 1-of-N (Virtual Component)

Используется для взаимоисключающих реализаций.

  • Пример: Выбор одной векторной БД из списка доступных.
  • Логика: В манифесте проекта hsm.yaml группе присваивается строка с именем выбранного компонента.

3.2. Стратегия M-of-N (Feature Set)

Используется для набора дополняющих друг друга компонентов.

  • Пример: Набор метрик для оценки модели.
  • Логика: В манифесте проекта группе присваивается список имен компонентов.

4. Манифесты компонентов

Каждый компонент (библиотека или сервис) описывается YAML-файлом, который содержит:

  1. Metadata: Имя, версия, описание.
  2. Sources: Ссылки на исходный код или артефакты для режимов prod и dev.
  3. Deployment Profiles: (Для сервисов) Описание рантаймов (docker, uv, podman), команд запуска и переменных окружения.
  4. Dependencies: Список других компонентов HSM или внешних библиотек.

5. CLI Workflow

Пользователь ищет нужный компонент в реестре. HSM сканирует все поддиректории реестра и выводит совпадения.

5.2. Добавление в проект (hsm library add / hsm service add)

При добавлении компонента HSM проверяет его наличие в реестре и автоматически прописывает его в нужную секцию hsm.yaml.

6. Преимущества подхода

  1. Централизация знаний: Все правила сборки и источники компонентов описаны в одном месте.
  2. Гибкость: Легко переключать реализации интерфейсов без изменения кода приложения.
  3. Масштабируемость: Разделение на типы (libraries/services) позволяет реестру расти без потери читаемости.