MindRoot.ru

Разработка плагинов

Плагин MindRoot — это Python-пакет, который добавляет агенту новые возможности (команды), внутренние компоненты (сервисы) и, при необходимости, собственные страницы интерфейса. В этом репозитории уже 10 коннекторов и 76 команд — их код можно использовать как эталон структуры.

Структура пакета

mr_your_service/ ├── plugin_info.json # манифест: имя, версия, команды, сервисы, настройки ├── pyproject.toml # сборка (package_data обязателен для static/ и templates/) ├── requirements.txt ├── README.md # русскоязычная документация └── src/ └── mr_your_service/ ├── __init__.py # from .mod import * ├── mod.py # команды и сервисы └── router.py # (опционально) FastAPI-роуты плагина

Манифест plugin_info.json

{ "name": "Битрикс24", "version": "1.0.0", "description": "Коннектор к Битрикс24: CRM, задачи, комментарии", "services": ["b24_rest_call"], "commands": ["b24_list_deals", "b24_create_deal"], "dependencies": { "requests": ">=2.28.0" }, "settings": [ { "key": "BITRIX24_WEBHOOK", "label": "Входящий вебхук", "required": true, "secret": true } ], "compliance": { "data_residency": "rf_only", "pii_fields": ["NAME", "PHONE", "EMAIL"], "redaction_supported": true } }
Команды в манифесте должны совпадать с кодом один в один. Наша проверка scripts/check_plugins.py сверяет манифест с зарегистрированными функциями и падает с ошибкой при расхождении.

Команда: то, что вызывает модель

Команда помечается декоратором @command(). Docstring — это и документация, и JSON-схема инструмента: из блоков «Параметры», «Пример» и «Результат» MindRoot собирает описание для модели. Пишите их по-русски и указывайте пример ровно в формате вызова.

from lib.providers.commands import command @command() async def b24_create_deal(title: str, opportunity: float = None, assigned_by_id: int = None, context=None) -> dict: """Создаёт новую сделку в CRM Битрикс24. Параметры: title - String. Название сделки, например "Поставка оборудования". opportunity - Number. Необязательный. Сумма сделки в рублях. assigned_by_id - Integer. Необязательный. ID ответственного менеджера. Пример: { "b24_create_deal": { "title": "Внедрение агента", "opportunity": 350000 } } Результат: { "ok": true, "deal_id": число } """ data = await _call('crm.deal.add', {'fields': {'TITLE': title}}, context) return { 'ok': True, 'deal_id': data.get('result') }

Сервис: переиспользуемая логика

Сервисы регистрируются декоратором @service() и доступны другим командам и агентам. Типичный пример — низкоуровневый вызов API с аутентификацией:

from lib.providers.services import service @service() async def b24_rest_call(method: str, params: dict = None, context=None) -> dict: """Выполняет произвольный метод REST API Битрикс24.""" ...

Секреты и конфигурация

Как проверить плагин перед публикацией

# 1. Сверка манифеста и кода + разбор docstring-примеров как JSON python3 scripts/check_plugins.py # 2. Сборка реестра витрины (команды с описаниями попадут в карточку) python3 scripts/build_registry.py # 3. Генерация pyproject/setup/README из манифеста python3 scripts/scaffold_plugin_files.py

Проверка контролирует: наличие plugin_info.json, совпадение объявленных и зарегистрированных команд, полноту docstring (блоки «Параметры» и «Результат», валидный JSON-пример вызова).

Публикация в маркетплейсе

  1. Заполните заявку в разделе «Разработчикам» — она попадает в очередь модерации.
  2. Модерация проверяет безопасность: к каким системам обращается плагин, какие данные читает и куда передаёт.
  3. Автоматическая проверка контракта (как в check_plugins.py) прогоняется на сервере MindRoot.ru.
  4. После публикации вы получаете статистику установок и доход: комиссия платформы — 20%, выплаты дважды в месяц.
Ускорение разработки: шаблон коннектора с авторизацией, ретраями, маскированием секретов и обработкой лимитов API лежит в любом из наших плагинов — скопируйте ближайший по смыслу и замените вызовы API.