Всё, что AI-помощник умеет, одинаково в любом магазине Melbis: файлы, данные, деревья, витрина. AI-инструменты — исключение: их пишет владелец под свой магазин. Завести товар так, как заводит его именно он, с его проверкой дублей и его расчётом цены; закрыть заказ по его правилам.
Список инструментов — данные, а не код: заведённая строка появляется у помощника со следующим подключением, и обновлять для этого ни программу, ни движок не нужно.
Инструмент стоит завести, когда видно одно из двух:
«Проектирование → AI-инструменты». Слева каталог инструментов, справа — команды выбранного и разрешения на каждую из них.
Каталог устроен как остальные деревья программы: разделы-папки для группировки, признак группы ставится кнопкой на панели. Папка инструментом не является — у неё нет ни команд, ни разрешений, и помощнику она не видна.
| Поле | Что задаёт |
|---|---|
| Наименование | имя строки в каталоге; помощник видит его как название инструмента |
| Модуль | имя файла модуля в папке units; им же помощник
зовёт инструмент |
| Описание для AI-помощника | что инструмент делает и когда его звать |
Описание читает не человек, а модель, и это единственное, по чему она решает, брать инструмент или нет. Поэтому пишется оно как инструкция, а не как подпись в интерфейсе: что делает, в каких случаях звать, чего не делает, какие есть оговорки. Всё, чего в описании нет, помощник додумает сам.
Модуль готовит разработчик — как устроен такой модуль, описано в разделе «AI-инструменты» руководства разработчика.
| Поле | Что задаёт |
|---|---|
| Команда | слово, которым помощник называет одно дело инструмента |
| Описание для AI-помощника | что команда делает, когда её звать и чего она не делает |
Порядок строк задаётся стрелками — в этом же порядке команды видит помощник.
Имя команды — это имя функции модуля, которая её
выполняет: CmdList, CmdAdd,
CmdUpdate, CmdRemove. Приставка
Cmd отличает команду от внутренних функций модуля, которых
помощник не видит.
Список команд — ещё и защита от выдумки: слово, которого инструмент не объявлял, движок отбивает сразу и перечисляет в ответе объявленные.
Поля команды тоже объявляются здесь, по строке на поле: имя, описание, тип (число, строка, да/нет, день, час, json, поток строк, файлы), обязательность и значение по умолчанию. По этим строкам движок сам проверяет каждый вызов до модуля: лишнее поле, пропущенное обязательное или число, присланное словом, возвращаются отказом — разработчику модуля эта рутина не достаётся вовсе.
К типу можно дописать /json — тогда
поле принимает и одно значение, и список: int/json для
«одного товара или сразу нескольких», float/json для
диапазона цены, datetime/json для «с такого дня по такой».
Каждое значение списка движок проверяет тем же типом, поэтому список
остаётся таким же защищённым, как одиночное значение.
Отдельно стоит тип «поток строк»
(jsonl) — для инструментов, которые грузят пачку однородных
записей: товары из прайса, значения характеристик, цены. Помощник
передаёт в такое поле либо сами строки, либо файл со своей машины, по
записи на строку — и тогда данные едут в магазин, минуя переписку.
Разница ощутима: сотню товаров помощник надиктовывает минутами, а
файлом, который написал его же скрипт, грузит за секунду.
Право выдаётся на команду — отметкой на пересечении «команда × сотрудник или группа». Сколько у инструмента команд, столько отдельных разрешений: можно позволить читать список, не позволяя добавлять и менять. Права сотрудника и его групп складываются.
Права раздаются людям, а не помощнику. Помощник работает от имени сотрудника, который его запустил (см. «AI-помощник»), и грант считается по этому человеку. Отсюда и то, что один и тот же инструмент у разных сотрудников умеет разное.
Команду, грант и поля движок проверяет сам, до модуля. Незнакомое слово, невыданная команда и не сошедшееся поле возвращаются готовым отказом, модуль их не увидит вовсе — ему остаются правила предметной области.
Перечень инструментов и команд помощник видит целиком, независимо от прав, — и про невыданную команду отвечает адресом, а не «доступа нет»: какая команда какого инструмента и где её выдают. Этот адрес и стоит передать администратору как есть. Сотрудник, которому разрешено сохранять настройки AI, владеет всеми командами автоматически — о чём и говорит сноска под таблицами разрешений.
С демонстрационным магазином идёт готовый набор: товары с ценами и описаниями, каталог и характеристики, файлы и профили картинок, реестр настроек, сотрудники, задачи планировщика. Точный перечень в документации не живёт — он данные магазина: полный и всегда свежий список стоит в «Проектирование → AI-инструменты», и его же помощник видит при каждом подключении.
Пара примеров, как это выглядит:
Они же служат образцами для разработки собственных.