Что потребуется
- Роль глобального администратора, чтобы регистрировать источники, устанавливать ревизии и выдавать доверие.
- Права администратора проекта, чтобы подключать, обновлять, откатывать и отключать пакеты в проекте.
- Для git-источника: узел MAIster клонирует репозиторий своими учётными
данными (SSH-ключ, credential helper или авторизованный
ghлибоglab). MAIster не запрашивает учётные данные репозитория в интерфейсе. - Для публикации форка обратно в виде pull request: CLI провайдера (
ghилиglab) и токен узла, напримерGH_TOKENилиGITLAB_TOKEN, в окружении веб-процесса. Без них MAIster отправит ветку и покажет ссылку на сравнение.
Раскладка репозитория с пакетами
MAIster находит пакеты, сканируяpackages/*/maister-package.yaml в ветке по
умолчанию источника. Каждая директория пакета самодостаточна:
name— имя пакета; с него начинаются теги версий.- Каждый
flows[].idсовпадает сnameвнутриflow.yamlэтого Flow. - Пути относительные и не выходят за пределы директории пакета.
- Шаблоны MCP в
mcps[]содержат только ссылкиenv:NAME, никогда значения секретов. - В манифесте нет поля версии. Версия — только git-тег.
maister-plugins. Репозиторий с единственным манифестом в корне
обнаруживается только при регистрации как локальный источник-директория (см.
ниже). Формат манифеста Flow описан в
справочнике по манифесту Flow.
Версии через git-теги
- Помечайте каждый выпуск тегом
<name>/vX.Y.Z, напримерmy-flows/v1.0.0. Пакеты одного репозитория версионируются и выпускаются независимо. - MAIster читает манифест из ветки по умолчанию, поэтому пакет должен быть в неё влит, чтобы его нашли. Список тегов определяет, какие версии можно установить.
- Установка разрешает тег в коммит. Установленная ревизия неизменяема: перенос или удаление тега потом ничего не меняет в уже установленном, а прогон сохраняет ревизию, с которой стартовал.
- Flow объявляет минимальную версию движка в
compat.engine_min. Ревизия вне диапазона движка узла остаётся доступной для просмотра, но её нельзя включить или запустить.
Регистрация источника
- Откройте Настройки → Источники пакетов. Та же панель доступна через Flow Studio → Источники.
- Нажмите Добавить источник.
-
Заполните форму:
-
Нажмите Обновить. MAIster получит список тегов репозитория и просканирует
packages/*в ветке по умолчанию. Найденные пакеты появятся под источником вместе с доступными для установки версиями.
MAISTER_PACKAGE_DISCOVERY_STALE_HOURS (по умолчанию 24 часа). После
отправки нового тега обновите источник вручную.
Встроенный источник https://github.com/maister-dev/maister-plugins
регистрируется при первом запуске и помечен как Встроенный. Его можно
выключить или удалить. MAISTER_DEFAULT_PACKAGE_SOURCES задаёт список
источников, которые установка регистрирует при старте; пустое значение не
регистрирует ничего.
Локальные источники-директории
Источник типаlocal указывает на абсолютный путь на узле MAIster, где лежит
либо maister-package.yaml в корне, либо раскладка packages/*. Тегов у него
нет: версия каждого пакета — это дайджест его текущего содержимого, он
отображается как local-<digest>. Обновить перечитывает директорию и
помечает подключения, содержимое которых изменилось, как имеющие обновление.
Локальные источники доверены политикой, потому что зарегистрировать их может
только глобальный администратор. Используйте их для быстрой итерации на
рабочей копии, а для всего общего — git-источник и теги.
Установка версии
- В списке пакетов источника выберите версию и нажмите установить.
- MAIster клонирует тег, проверяет манифест пакета и каждый входящий Flow,
записывает разрешённый коммит и сохраняет файлы. Ничего из пакета на этом
этапе не исполняется:
setup.shи команды MCP запускаются только после выдачи доверия. - Ревизия появляется в списке Установленные ревизии пакетов. Один тег устанавливается один раз и используется всеми проектами, которые его подключают.
- Ошибка манифеста (неверная схема, id Flow не совпадает с именем в
flow.yaml, небезопасный путь, неверная ссылкаenv:): ничего не установлено. Исправьте пакет и отправьте новый тег. - Ошибка клонирования: проверьте URL, учётные данные узла и наличие тега в удалённом репозитории.
- Несовместимость движка: ревизия сохранена и доступна для просмотра, но её нельзя включить или запустить. Опубликуйте версию, диапазон движка которой включает этот MAIster.
Доверие к ревизии
Доверие состоит из двух частей. Логическое доверие решает, можно ли вообще запускать Flow ревизии. Доверие к исполнению решает, можно ли выполнять на узле её скриптыsetup.sh и команды MCP.
Чтобы выдать доверие, откройте Проверка доверия у ревизии, изучите состав
(Flow, агенты, навыки, шаблоны MCP, сценарии и
setup.sh) и подтвердите.
Решение действует во всех проектах, к которым подключена эта ревизия; диалог
показывает, сколько их. После подтверждения MAIster выполняет setup.sh
каждого входящего Flow; сбой скрипта помечает ревизию как неудачную, и запуски
отклоняются, пока не установлена исправленная версия.
Доверие выдаётся на ревизию. Новая версия требует отдельной проверки, даже из
того же источника. Держите в MAISTER_TRUSTED_FLOW_SOURCE_PREFIXES только
репозитории, которые контролируете.
Подключение к проекту и закрепление версии
- Откройте Проект → Пакеты и нажмите Подключить.
- Выберите установленную ревизию. Диалог показывает её состав: Flow, агенты, навыки, требования MCP, ограничения, схемы и сценарии.
-
Подтвердите. Подключение добавляет Flow пакета в проект и записывает
закреплённую версию в
maister.yamlрепозитория: - Когда ревизия доверена, Включить делает её версией для новых запусков. Ревизия, доверенная политикой, включается сразу.
- Привяжите слоты раннеров и требования MCP во вкладках проекта до запуска задачи.
packages[] в
maister.yaml, MAIster устанавливает и подключает эти версии при регистрации,
поэтому проект можно воссоздать на другой установке из одного git.
Предупреждение о записи означает, что подключение сохранено, а maister.yaml
обновить не удалось; поправьте версию вручную. Подключение отклоняется, если id
Flow из пакета совпадает с отдельной записью flows[] или если id MCP или
ограничения уже предоставлен другим подключённым пакетом.
Обновление, откат и переключение версий
- Когда для подключённого пакета найден новый тег, подключение показывает доступное обновление. Нажмите Обновить, чтобы открыть Предпросмотр обновления: добавленные, удалённые и изменённые Flow, агенты, навыки и шаблоны MCP, а также предупреждения вида «перестанет работать здесь» для агента, подключённого в этом проекте. Подтвердите, чтобы перевести проект на новую ревизию. Уже идущие прогоны сохраняют свою закреплённую ревизию; меняются только новые запуски.
- Откатить показывает установленные ревизии вместе со ссылками на активные прогоны. Выбор одной из них возвращает включённую ревизию проекта назад; более новая ревизия остаётся установленной.
- Проекты независимы. Два проекта могут сколь угодно долго работать на разных версиях, и перевод одного никак не затрагивает другой. Чтобы выровнять проект с версией, которую использует другой проект, обновите или откатите его на эту ревизию.
- Отключить пакет нельзя, пока от его ревизии зависит активный прогон.
Доработка локальной версии
Установленные ревизии неизменяемы, поэтому изменения идут через локальный пакет во Flow Studio:- Откройте установленный пакет во Flow Studio и нажмите Форкнуть для
редактирования. MAIster копирует ревизию в локальный пакет с именем
<name>-localи сохраняет связь с исходной ревизией. Кастомизировать создаёт свежую копию, если форк уже есть; Новый локальный пакет начинает с нуля. - Отредактируйте пакет в редакторе Studio и зафиксируйте изменения коммитом. Коммит проверяет изменённые Flow, манифест, агентов, навыки и схемы и отклоняет некорректное содержимое.
- Нажмите Зафиксировать версию. Срез устанавливается как неизменяемая
ревизия с меткой
local-<digest>. Диалог может сразу перевести на новый срез проекты, уже подключённые к срезу этого пакета; по умолчанию не переводит ни один. - Подключите срез в Проект → Пакеты как любую другую ревизию (у него метка локальный срез) и подтвердите доверие к исполнению.
Выбор версии при запуске
Когда проект закрепил пакет, у которого появился новый срез, или у локального пакета есть ещё не срезанные правки, диалог запуска предлагает выбор:Синхронизация форка с исходным пакетом
Сравнить с исходным показывает пофайловые расхождения между форком и его исходной ревизией. Когда исходный пакет выпускает новый тег, нажмите Синхронизировать с исходным, выберите версию и подтвердите Установить и синхронизировать. MAIster установит тег и выполнит трёхстороннее слияние между базой форка, вашими изменениями и новой ревизией. Конфликтные файлы перечисляются для разрешения в редакторе; завершите синхронизацию из баннера или прервите её, чтобы вернуть рабочую копию к последнему коммиту. MAIster никогда не перезаписывает историю форка.Публикация форка обратно в источник
Нажмите Опубликовать в редакторе локального пакета, выберите Целевой источник (предлагаются только зарегистрированные git-источники) и подтвердите. MAIster отправляет зафиксированное состояние в веткуmaister/<package> и, если доступны CLI провайдера и токен, открывает или
обновляет pull request в базовую ветку публикации источника; иначе показывает
ветку и ссылку на сравнение. Если удалённая ветка ушла вперёд относительно
форка, публикация останавливается с сообщением Исходная ветка ушла вперёд —
сначала синхронизируйтесь: синхронизируйтесь с исходным, разрешите конфликты
и опубликуйте снова. Публикация никогда не делает force-push.
Признаки ошибки
- Обновление источника деградировало: MAIster показывает последний снимок.
Проверьте URL, учётные данные узла и наличие
packages/*в ветке по умолчанию. - Версия не в списке: тега нет в удалённом репозитории или он не начинается с имени пакета из манифеста. Отправьте тег и обновите источник.
- Запуск отклонён из-за доверия: ревизия не доверена или её
setup.shзавершился с ошибкой. Проверьте и выдайте доверие либо установите исправленную версию. - Подключение отклонено: id Flow, MCP или ограничения совпадает с уже подключённым в проекте содержимым.
- Отключение отклонено: активный прогон всё ещё использует ревизию. Дождитесь завершения или прервите прогон.
- Публикация отклонена: цель не является зарегистрированным git-источником, имя ветки некорректно или исходная ветка ушла вперёд.