# Как собрать плагин VST3 или CLAP с помощью ИИ-агента для кодинга

Автор: Sonorie. Опубликовано 2026-10-27, последнее изменение: 2026-10-27. https://sonore.dev/ru/blog/build-audio-plugin-with-ai-coding-agent/

ИИ-агент для кодинга может написать рабочий плагин VST3 или CLAP, но не по памяти. Агенты проваливаются на C++-фреймворках для аудио, придумывая имена, которые звучат правдоподобно, и написав код, который компилируется, но ломает аудиопоток. Решение — дать агенту настоящий API фреймворка, с которым можно сверяться, набор правил, которые нельзя угадать, и определение «готово», которое проверяет валидатор. Именно это Sonore SDK поставляет для Claude Code, Codex, Cursor и любого MCP-клиента. Из устоявшихся фреймворков для плагинов он единственный с официальным MCP-сервером: JUCE и iPlug2 поставляют файлы инструкций для агентов, но ничего, что агент мог бы запросить.

## Почему агенты ошибаются в аудиоплагинах

Незнакомая C++-библиотека редко заставляет агента отказаться от работы. Она заставляет его импровизировать, а аудиоплагины наказывают за импровизацию тремя способами:

1. **Придуманные имена.** Класс, которого должно быть, например `CompressorPro`, или настоящий класс, которому приписан метод из другого фреймворка. Код читается идеально и не компилируется.
2. **Код, который компилируется и всё равно неверен.** Аллокация или блокировка внутри `process()`, который работает в аудиопотоке. Это работает на машине разработчика и отваливается под нагрузкой в чьей-то сессии.
3. **Правила, которые нигде не записаны в 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:

```sh
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»** на [главной странице](/ru/#agents) содержит точные команды для каждого агента. Если инструмент командной строки `skills` недоступен, то же самое делает копирование `skills/sonore-sdk` в папку скиллов агента.

## Первый промпт, который работает

Будьте конкретны в описании плагина и скажите, что означает «готово»:

```txt
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.

## Что значит «готово»

Плагин, который компилируется, — это черновик. Сгенерированный проект даёт агенту три проверки, которые нужно пройти по порядку того, что они доказывают:

1. **Он собирается** во все форматы из одной сборки.
2. **`ctest` проходит.** Он запускает два теста. Флаг `--verify` автономного приложения рендерит звук офлайн и проверяет, что всё в порядке. В проекте, собранном из клона SDK, аудит реального времени (`sonore_add_rt_test`) подсчитывает каждую аллокацию в аудиопотоке на всех частотах дискретизации и размерах блока и падает при любой. SDK подчиняет свои собственные примеры той же планке: девять частот дискретизации от 8 кГц до 384 кГц, размеры блока от 1 до 8192, ноль аллокаций.
3. **Валидаторы проходят.** `clap-validator` и `pluginval` загружают плагин так, как это делают хосты. Оба шаблона проекта проходят их на уровне строгости 10 pluginval в сгенерированном виде, поэтому провал означает, что проблему внёс агент.

Аудит и валидаторы ловят то, чего не видно при чтении кода, поэтому их стоит включать в промпт.

## Что по-прежнему нужно вам

Агент с правильными инструментами пишет плагин, который загружается, проходит валидацию и не выделяет память в аудиопотоке. Он не может сказать, хорошо ли звучит сатуратор, правильно ли ощущается интерфейс в сессии или ведёт ли себя нужный вам хост. Прослушивание, вкус и тестирование в вашей DAW остаются за вами. То же касается форматов с привратниками: AAX требует соглашения разработчика с Avid и подписи PACE, которые никакой фреймворк выдать не может.

Пошаговую версию без агента читайте в [Начало работы](/docs/getting-started/). О том, как SDK сравнивается с JUCE, iPlug2 и остальными, см. [Фреймворки для аудиоплагинов: сравнение](/ru/blog/audio-plugin-frameworks-compared/).

## Источники

- [Репозиторий Sonore SDK](https://github.com/SonorieAI/sonore-sdk): раздел README «Writing plugins with a coding agent», `llms.txt` и `scripts/mcp-server.mjs`
- [Скилл sonore-sdk](https://github.com/SonorieAI/sonore-sdk/tree/main/skills/sonore-sdk)
- [Спецификация Model Context Protocol](https://modelcontextprotocol.io/specification)
- [Формат Agent Skills](https://agentskills.io)
- [Соглашение llms.txt](https://llmstxt.org)

## Вопросы

### Могут ли 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, которая разрешает закрытые и коммерческие плагины без ограничения по выручке, сборов и заставки.
