- Блог
- Кодинг-агенты
Как собрать плагин VST3 или CLAP с помощью ИИ-агента для кодинга
ИИ-агент для кодинга может написать рабочий плагин VST3 или CLAP, но не по памяти. Агенты проваливаются на C++-фреймворках для аудио, придумывая имена, которые звучат правдоподобно, и написав код, который компилируется, но ломает аудиопоток. Решение — дать агенту настоящий API фреймворка, с которым можно сверяться, набор правил, которые нельзя угадать, и определение «готово», которое проверяет валидатор. Именно это Sonore SDK поставляет для Claude Code, Codex, Cursor и любого MCP-клиента. Из устоявшихся фреймворков для плагинов он единственный с официальным MCP-сервером: JUCE и iPlug2 поставляют файлы инструкций для агентов, но ничего, что агент мог бы запросить.
На этой странице
Почему агенты ошибаются в аудиоплагинах
Незнакомая C++-библиотека редко заставляет агента отказаться от работы. Она заставляет его импровизировать, а аудиоплагины наказывают за импровизацию тремя способами:
- Придуманные имена. Класс, которого должно быть, например
CompressorPro, или настоящий класс, которому приписан метод из другого фреймворка. Код читается идеально и не компилируется. - Код, который компилируется и всё равно неверен. Аллокация или блокировка внутри
process(), который работает в аудиопотоке. Это работает на машине разработчика и отваливается под нагрузкой в чьей-то сессии. - Правила, которые нигде не записаны в API. Лимитер с look-ahead, который не сообщает свою задержку, размазывает каждый параллельный микс, в котором стоит. Таблица параметров, переставленная в версии 1.1, загружает старые сессии в неправильные контролы. Ни один заголовок об этом не говорит.
Первая проблема касается имён, вторая — поведения, третья — соглашений. Большая модель не помогает ни с одной из них, потому что информации в её обучающих данных недостаточно надёжно, чтобы ей доверять.
Что нужно агенту вместо этого
Три вещи, каждая из которых отвечает на один из этих режимов сбоя:
| Агенту нужно | Потому что | В Sonore SDK |
|---|---|---|
| Способ проверить, что имя существует | Память выдаёт правдоподобные имена | MCP-сервер, поиск которого покрывает все 766 публичных типов в 282 заголовках |
| Правила, которым должен следовать плагин | Их нельзя прочитать из API | Скилл и sonore_rules: сигнатуры process, задержка, что запрещено в аудиопотоке |
| Определение готовности | «Компилируется» — не значит «работает» | Сгенерированные проекты с самопроверкой и аудитом реального времени в ctest, готовые к валидаторам |
Все три генерируются из заголовков SDK одним и тем же скриптом. Это важнее, чем кажется. Рукописная шпаргалка для агентов расходится с кодом в пределах одного релиза, и тогда она становится вторым источником придуманных имён. Здесь npm run verify:llms ломает сборку, если файлы расходятся с заголовками, а npm run verify:mcp проверяет, что поиск находит каждый публичный тип, так что «нет совпадений» от сервера — настоящий ответ, а не дыра в индексе.
Шесть инструментов MCP-сервера
Сервер запускается из локального клона по stdio, требует только Node.js, и каждый инструмент лишь читает файлы в клоне.
| Инструмент | Что отвечает |
|---|---|
sonore_search |
Существует ли этот класс, функция, алиас или понятие и где. Слова совпадают в любом порядке, поэтому «ladder filter» находит LadderFilter. |
sonore_declaration |
Настоящее объявление с комментарием, который объясняет, зачем оно нужно. |
sonore_header |
Для чего нужен один заголовок, его публичные типы и строка include. |
sonore_headers |
Все заголовки с однострочным описанием назначения. |
sonore_example |
Полный рабочий плагин: эффект, инструмент, сайдчейн, aux-выходы, MIDI-выход, сэмплер, ревербератор, нативный редактор и многое другое. |
sonore_rules |
Устройство плагина, какая сигнатура process делает инструмент, отчёт о задержке и что запрещено в аудиопотоке. |
Пример разницы. По запросу CompressorPro сервер отвечает, что в SDK ничего не совпадает. По запросу «ladder filter» он возвращает LadderFilter и диодный лестничный фильтр с заголовками, в которых они находятся. Агент пишет второе, а не первое.
Установка
Клонируйте SDK, затем добавьте скилл и сервер в своего агента. Для Claude Code:
git clone https://github.com/SonorieAI/sonore-sdk "$HOME/sonore-sdk"
npx skills add SonorieAI/sonore-sdk --skill sonore-sdk -a claude-code -g
claude mcp add --scope user sonore-sdk -- node "$HOME/sonore-sdk/scripts/mcp-server.mjs"Для Codex используйте -a codex и codex mcp add. Cursor и Antigravity получают скилл через -a cursor или -a antigravity, а сервер — через файл конфигурации MCP. Кнопка «Установить скилл и MCP» на главной странице содержит точные команды для каждого агента. Если инструмент командной строки skills недоступен, то же самое делает копирование skills/sonore-sdk в папку скиллов агента.
Первый промпт, который работает
Будьте конкретны в описании плагина и скажите, что означает «готово»:
Make a tape-style saturator plugin with Drive, Tone and Mix.
Start from a generated Sonore project. Look up every sonore:: name
before you use it. It is done when it builds, ctest passes, and
clap-validator and pluginval run clean.Когда скилл загружен, агент сам следует рабочему процессу SDK: генерирует проект с помощью sonore_new_plugin.cmake, пишет DSP в единственный файл src/plugin.cpp, проверяет имена по ходу дела и собирает. Один исходный файл становится .clap, .vst3, Audio Unit на macOS, бандлом LV2 и автономным приложением, а тот же проект собирает AUv3 для iPhone и iPad и приложение для Android.
Что значит «готово»
Плагин, который компилируется, — это черновик. Сгенерированный проект даёт агенту три проверки, которые нужно пройти по порядку того, что они доказывают:
- Он собирается во все форматы из одной сборки.
ctestпроходит. Он запускает два теста. Флаг--verifyавтономного приложения рендерит звук офлайн и проверяет, что всё в порядке. В проекте, собранном из клона SDK, аудит реального времени (sonore_add_rt_test) подсчитывает каждую аллокацию в аудиопотоке на всех частотах дискретизации и размерах блока и падает при любой. SDK подчиняет свои собственные примеры той же планке: девять частот дискретизации от 8 кГц до 384 кГц, размеры блока от 1 до 8192, ноль аллокаций.- Валидаторы проходят.
clap-validatorиpluginvalзагружают плагин так, как это делают хосты. Оба шаблона проекта проходят их на уровне строгости 10 pluginval в сгенерированном виде, поэтому провал означает, что проблему внёс агент.
Аудит и валидаторы ловят то, чего не видно при чтении кода, поэтому их стоит включать в промпт.
Что по-прежнему нужно вам
Агент с правильными инструментами пишет плагин, который загружается, проходит валидацию и не выделяет память в аудиопотоке. Он не может сказать, хорошо ли звучит сатуратор, правильно ли ощущается интерфейс в сессии или ведёт ли себя нужный вам хост. Прослушивание, вкус и тестирование в вашей DAW остаются за вами. То же касается форматов с привратниками: AAX требует соглашения разработчика с Avid и подписи PACE, которые никакой фреймворк выдать не может.
Пошаговую версию без агента читайте в Начало работы. О том, как SDK сравнивается с JUCE, iPlug2 и остальными, см. Фреймворки для аудиоплагинов: сравнение.
Источники
- Репозиторий Sonore SDK: раздел README «Writing plugins with a coding agent»,
llms.txtиscripts/mcp-server.mjs - Скилл sonore-sdk
- Спецификация Model Context Protocol
- Формат Agent Skills
- Соглашение llms.txt
Вопросы
Могут ли ChatGPT, Claude или Cursor написать плагин VST3?
Да, если агент может проверить настоящий API фреймворка и собрать результат. Полагаясь на память, агенты придумывают имена классов и методов, которых нет во фреймворке, который они используют. С установленными MCP-сервером и скиллом Sonore SDK агент проверяет каждое имя, начинает с сгенерированного проекта и считает плагин готовым только тогда, когда он собирается и проходит валидаторы.
Что такое MCP-сервер Sonore SDK?
Сервер Model Context Protocol, который запускается локально из клона SDK по stdio и требует только Node.js. Его шесть инструментов только читают данные: проверяют, существует ли имя, показывают его настоящее объявление, описывают заголовок, перечисляют заголовки, возвращают полный пример плагина и излагают правила плагина. Он поддерживает MCP 2026-07-28 и более старое рукопожатие initialize.
Отправляет ли MCP-сервер мой код куда-либо?
Нет. Он читает только клон SDK на вашем компьютере: без сетевого доступа, без телеметрии и без инструмента, который записывает файлы.
С какими кодинг-агентами он работает?
Скилл использует формат Agent Skills, который читают Claude Code, Codex, Cursor и Antigravity. MCP-сервер работает с любым MCP-клиентом, включая настольное приложение ChatGPT через Codex.
Это бесплатно?
Да. Sonore SDK, его скилл и его MCP-сервер открыты под лицензией Apache License 2.0, которая разрешает закрытые и коммерческие плагины без ограничения по выручке, сборов и заставки.