Реестр компонентов и Группы
Этот документ описывает структуру и логику работы Реестра 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-файлом, который содержит:
- Metadata: Имя, версия, описание.
- Sources: Ссылки на исходный код или артефакты для режимов
prodиdev. - Deployment Profiles: (Для сервисов) Описание рантаймов (docker, uv, podman), команд запуска и переменных окружения.
- Dependencies: Список других компонентов HSM или внешних библиотек.
5. CLI Workflow
5.1. Исследование (hsm registry search)
Пользователь ищет нужный компонент в реестре. HSM сканирует все поддиректории реестра и выводит совпадения.
5.2. Добавление в проект (hsm library add / hsm service add)
При добавлении компонента HSM проверяет его наличие в реестре и автоматически прописывает его в нужную секцию hsm.yaml.
6. Преимущества подхода
- Централизация знаний: Все правила сборки и источники компонентов описаны в одном месте.
- Гибкость: Легко переключать реализации интерфейсов без изменения кода приложения.
- Масштабируемость: Разделение на типы (libraries/services) позволяет реестру расти без потери читаемости.