КейсМастерская электроники и прототипов
Мастерская: складская программа с AI-агентами, поиском по смыслу и MCP-сервером
Наша собственная программа для мастерской электроники и прототипов: остатки, внутренние коды, документы и фото к каждой детали, поиск по смыслу, чат с агентом внутри и MCP-сервер для внешних агентов. Проект непубличный, поэтому показываем его на скриншотах.
- 30инструментов MCP-сервера
- 538векторов для поиска по смыслу
- 86изменений от агентов за 7 дней
- 877автотестов
Деталей всё больше, а память одна
В мастерской собирают прототипы: платы, датчики, моторы, аккумуляторы, 3D-печать, пайка. Чтобы начать новое изделие, нужно знать, что уже лежит на полке, сколько этого, где даташит и потянет ли работу имеющееся оборудование. Раньше всё это держалось в голове и на полках: чтобы узнать, есть ли нужная плата, приходилось идти и искать.
Первую систему задумали слишком масштабно: 17 моделей, 18 таблиц, а до интерфейса склада дело так и не дошло, потому что ею никто не пользовался. Поэтому начали заново и другим методом: наименьшая рабочая версия, проба в деле, выводы, развитие.
Заносить руками долго. Если каждую плату нужно описывать в форме, записи отстают от полки, и склад перестаёт быть правдой.
Название не подсказывает задачу. Ищешь «чем управлять сервоприводами», а в таблице лежит PCA9685. Поиск по словам такого не найдёт.
Знания разбросаны. Даташит, фото платы, пределы оборудования и видео процесса должны быть при записи, а не в закладках браузера.
Агентам нужны границы. Они должны читать и менять склад, но без лишних прав и без выдумок о том, чего никто не проверял.
Что мы сделали
Приложение на Laravel и React с собственным MCP-сервером: человек, чат и внешние агенты работают с одними и теми же данными и инструментами.
Склад, где у каждой детали есть код, документы и фото
Каждая деталь получает внутренний код вроде PRT-000141: по нему её находит и человек, и агент. Количество ведётся с единицами, статус идёт за ним, а тип, области и теги берутся из словарей, которые не дают завести дубль: LEDs и LED — один термин, а ESP32-S2 и ESP32-S3 — разные.
К детали крепятся фото, даташиты, ссылки и заметки. Оборудование описывает, что умеет мастерская и где её пределы. Проект собирает детали, оборудование, видео и 3D-модели, которые вращаются прямо на странице. Видео до 5 ГБ лежат на Google Drive и играют в приложении без публичной ссылки.
Поиск по смыслу, а не по названию
Описываешь задачу своими словами, и программа находит нужное. Запрос «protect a lithium battery» поднимает платы защиты BMS, а за ними — ячейки и зарядные модули. Колонка Match показывает, насколько результат близок к запросу. Описание может быть на одном языке, а запрос на другом.
Под капотом — text-embedding-3-large на 1536 измерений и pgvector внутри PostgreSQL. В вектор входят название, партномер, тип, области, теги и описание, а также документы и AI-описания фото, так что попадание в даташит поднимает деталь, которой он принадлежит. Код, статус и количество намеренно остаются вне вектора: смена остатка ничего не пересчитывает. Раз в 10 минут программа сверяет SHA-256 текста и обновляет только то, что изменилось.
Голосовая заметка становится деталью на складе
Формами склад не заполнить, поэтому всё летит во входящие: голос, фото, файл, ссылка, заметка или видео. Речь становится текстом с подсказками из словаря мастерской, AI описывает каждое фото, а агент забирает заявку, блокирует её на 30 минут и заводит записи.
Реальный пример. 28 октября в 15:57 — голосовая на 26 секунд о плате ШИМ с просьбой найти даташит. В 16:07 заявка закрыта: есть деталь PRT-000141, количество агент понял по фото, официальный даташит NXP на 52 страницы прикреплён, характеристики в описании. Отдельным абзацем агент честно написал, чего не проверил: платы не включали, а чип на плате без бренда может быть клоном.
Чат внутри и MCP-сервер для внешних агентов
В чате можно спросить: «хочу управлять 16 сервоприводами от одной ESP32, что есть на складе?». Агент сам делает несколько поисков, открывает карточки и отвечает таблицей с кодами: что взять, чего не хватает, на что обратить внимание в питании. Каждый вызов инструмента виден в ответе. Перед первым сообщением выбираешь режим — только чтение или чтение и запись. Удалять в чате нельзя.
То же доступно снаружи: собственный MCP-сервер на 30 инструментов, Streamable HTTP, OAuth 2.1 с PKCE и динамической регистрацией клиентов. Права на чтение, запись и удаление выбирает владелец на экране согласия, а инструменты вне этих прав агент даже не видит. Проверено с Claude Code и коннектором claude.ai.
На чём сделано
Laravel и React без конструкторов. Векторы живут в той же базе, что и данные, а чат и MCP-сервер пользуются одними классами инструментов.
- Laravel
- PHP
- Inertia.js
- React
- TypeScript
- PostgreSQL
- pgvector
- OpenAI API
- MCP
- Google Drive
Что получилось
Числа с дашборда программы на 2 ноября 2026 года. Проект наш, мы пользуемся им сами, и он продолжает расти.
-
141 деталь и 7 единиц оборудования
Склад заполнен: у каждой детали есть код и статус, 140 сейчас в наличии. Всё оборудование рабочее, и видно, на что способна мастерская.
-
42 заявки разобраны
Голос, фото и файлы стали записями на складе. Активных заявок сейчас нет: ничего не ждёт в очереди.
-
235 фото описаны AI
Все 235 из 235. Описания попадают в вектор, поэтому фото тоже работают на поиск.
-
86 изменений от агентов за 7 дней
Агенты действительно работают с данными. Фоновые задачи за это время не дали ни одного сбоя.
-
877 автотестов и PHPStan уровня 7
22 864 строки PHP в приложении и 16 484 строки тестов. От первого коммита до текущей версии — 38 дней и 126 коммитов.
Нужна такая система для вашего бизнеса?
Склад запчастей, сервисный центр, производство или база знаний с документами: расскажите, как у вас устроена работа, и мы подскажем, с какой части стоит начать. Без обязательств и давления.









