Tools
Генерация музыки
Инструмент music_generate позволяет агенту создавать музыку или аудио через
общую возможность генерации музыки с настроенными провайдерами — сейчас это
ComfyUI, fal, Google, MiniMax и OpenRouter.
Для запусков агента с поддержкой сессии OpenClaw запускает генерацию музыки как
фоновую задачу, отслеживает ее в журнале задач, а затем снова пробуждает агента,
когда трек готов, чтобы агент мог сообщить пользователю и прикрепить
готовое аудио. Агент завершения следует обычному режиму видимых ответов сессии:
автоматическая доставка финального ответа, если она настроена, или message(action="send"),
если сессия требует инструмент сообщений. Если сессия запрашивающего
неактивна или ее активное пробуждение завершается неудачно, а часть сгенерированного
аудио все еще отсутствует в ответе завершения, OpenClaw отправляет идемпотентный
прямой резервный ответ только с недостающим аудио.
Быстрый старт
На основе общего провайдера
Настройте аутентификацию
Задайте API-ключ хотя бы для одного провайдера — например
GEMINI_API_KEY или MINIMAX_API_KEY.
Выберите модель по умолчанию (необязательно)
{ agents: { defaults: { musicGenerationModel: { primary: "google/lyria-3-clip-preview", }, }, },}Попросите агента
"Generate an upbeat synthpop track about a night drive through a neon city."
Агент автоматически вызывает music_generate. Список разрешенных
инструментов не требуется.
Для прямых синхронных контекстов без запуска агента с поддержкой сессии встроенный инструмент все равно возвращается к встроенной генерации и возвращает итоговый путь к медиафайлу в результате инструмента.
Рабочий процесс ComfyUI
Настройте рабочий процесс
Настройте plugins.entries.comfy.config.music с JSON рабочего процесса
и узлами prompt/output.
Облачная аутентификация (необязательно)
Для Comfy Cloud задайте COMFY_API_KEY или COMFY_CLOUD_API_KEY.
Вызовите инструмент
/tool music_generate prompt="Warm ambient synth loop with soft tape texture"Примеры запросов:
Generate a cinematic piano track with soft strings and no vocals.Generate an energetic chiptune loop about launching a rocket at sunrise.Поддерживаемые провайдеры
| Провайдер | Модель по умолчанию | Эталонные входные данные | Поддерживаемые элементы управления | Аутентификация |
|---|---|---|---|---|
| ComfyUI | workflow |
До 1 изображения | Музыка или аудио, определенные рабочим процессом | COMFY_API_KEY, COMFY_CLOUD_API_KEY |
| fal | fal-ai/minimax-music/v2.6 |
Нет | lyrics, instrumental, durationSeconds, format |
FAL_KEY или FAL_API_KEY |
lyria-3-clip-preview |
До 10 изображений | lyrics, instrumental, format |
GEMINI_API_KEY, GOOGLE_API_KEY |
|
| MiniMax | music-2.6 |
Нет | lyrics, instrumental, format=mp3 |
MINIMAX_API_KEY или MiniMax OAuth |
| OpenRouter | google/lyria-3-pro-preview |
До 1 изображения | lyrics, instrumental, durationSeconds, format |
OPENROUTER_API_KEY |
Матрица возможностей
Явный контракт режимов, используемый music_generate, контрактными тестами и
общим live sweep:
| Провайдер | generate |
edit |
Ограничение редактирования | Общие live-линии |
|---|---|---|---|---|
| ComfyUI | ✓ | ✓ | 1 изображение | Не входит в общий sweep; покрывается extensions/comfy/comfy.live.test.ts |
| fal | ✓ | — | Нет | generate |
| ✓ | ✓ | 10 изображений | generate, edit |
|
| MiniMax | ✓ | — | Нет | generate |
| OpenRouter | ✓ | ✓ | 1 изображение | generate, edit |
Используйте action: "list", чтобы во время выполнения просмотреть доступных
общих провайдеров и модели:
/tool music_generate action=listИспользуйте action: "status", чтобы просмотреть активную задачу генерации
музыки с поддержкой сессии:
/tool music_generate action=statusПример прямой генерации:
/tool music_generate prompt="Dreamy lo-fi hip hop with vinyl texture and gentle rain" instrumental=trueПараметры инструмента
promptstringrequiredЗапрос для генерации музыки. Требуется для action: "generate".
action"generate" | "status" | "list"default: generate"status" возвращает текущую задачу сессии; "list" проверяет провайдеров.
modelstringПереопределение провайдера/модели (например, google/lyria-3-pro-preview,
comfy/workflow).
lyricsstringНеобязательный текст песни, когда провайдер поддерживает явный ввод текста.
instrumentalbooleanЗапрашивает вывод только инструментальной версии, когда провайдер это поддерживает.
imagestringПуть или URL одного эталонного изображения.
imagesstring[]Несколько эталонных изображений (до 10 у поддерживающих провайдеров).
durationSecondsnumberЦелевая длительность в секундах, когда провайдер поддерживает подсказки длительности.
format"mp3" | "wav"Подсказка формата вывода, когда провайдер это поддерживает.
filenamestringТайм-ауты запросов к провайдеру являются только операторской конфигурацией.
OpenClaw использует agents.defaults.musicGenerationModel.timeoutMs, когда он
настроен, повышает значения ниже 120000ms до 120000ms, а в остальных случаях
по умолчанию задает для запросов к провайдеру 300000ms.
Асинхронное поведение
Генерация музыки с поддержкой сессии выполняется как фоновая задача:
- Фоновая задача:
music_generateсоздает фоновую задачу, сразу возвращает ответ о запуске/задаче и позже публикует готовый трек в последующем сообщении агента. - Предотвращение дубликатов: пока задача находится в состоянии
queuedилиrunning, последующие вызовыmusic_generateв той же сессии возвращают статус задачи вместо запуска другой генерации. Используйтеaction: "status"для явной проверки. - Просмотр статуса:
openclaw tasks listилиopenclaw tasks show <taskId>проверяет статусы в очереди, выполнения и терминальные статусы. - Пробуждение при завершении: OpenClaw внедряет внутреннее событие завершения обратно в ту же сессию, чтобы модель могла сама написать пользовательское последующее сообщение.
- Подсказка запроса: последующие пользовательские/ручные ходы в той же сессии
получают небольшую runtime-подсказку, когда музыкальная задача уже выполняется,
чтобы модель не вызывала
music_generateповторно вслепую. - Резерв без сессии: прямые/локальные контексты без реальной сессии агента выполняются встроенно и возвращают итоговый результат аудио в том же ходе.
Жизненный цикл задачи
| Состояние | Значение |
|---|---|
queued |
Задача создана и ожидает, пока провайдер ее примет. |
running |
Провайдер обрабатывает запрос (обычно от 30 секунд до 3 минут в зависимости от провайдера и длительности). |
succeeded |
Трек готов; агент пробуждается и публикует его в беседе. |
failed |
Ошибка провайдера или тайм-аут; агент пробуждается с подробностями ошибки. |
Проверьте статус из CLI:
openclaw tasks listopenclaw tasks show <taskId>openclaw tasks cancel <taskId>Конфигурация
Выбор модели
{ agents: { defaults: { musicGenerationModel: { primary: "google/lyria-3-clip-preview", fallbacks: ["fal/fal-ai/minimax-music/v2.6", "minimax/music-2.6"], }, }, },}Порядок выбора провайдера
OpenClaw пробует провайдеров в следующем порядке:
- Параметр
modelиз вызова инструмента (если агент его указывает). musicGenerationModel.primaryиз конфигурации.musicGenerationModel.fallbacksпо порядку.- Автообнаружение только с использованием значений провайдеров по умолчанию,
подкрепленных аутентификацией:
- текущий провайдер по умолчанию первым;
- остальные зарегистрированные провайдеры генерации музыки в порядке id провайдера.
Если провайдер завершается ошибкой, следующий кандидат пробуется автоматически. Если завершаются ошибкой все, ошибка включает подробности каждой попытки.
Задайте agents.defaults.mediaGenerationAutoProviderFallback: false, чтобы
использовать только явные записи model, primary и fallbacks.
Примечания о провайдерах
ComfyUI
Управляется рабочим процессом и зависит от настроенного графа, а также
сопоставления узлов для полей prompt/output. Встроенный Plugin comfy
подключается к общему инструменту music_generate через реестр провайдеров
генерации музыки.
fal
Использует конечные точки моделей fal через общий путь аутентификации
провайдера. Встроенный провайдер по умолчанию использует
fal-ai/minimax-music/v2.6, а также предоставляет
fal-ai/ace-step/prompt-to-audio и
fal-ai/stable-audio-25/text-to-audio для запросов prompt-to-audio.
Google (Lyria 3)
Использует пакетную генерацию Lyria 3. Текущий встроенный поток поддерживает запрос, необязательный текст песни и необязательные эталонные изображения.
MiniMax
Использует пакетную конечную точку music_generation. Поддерживает запрос,
необязательный текст песни, инструментальный режим и вывод mp3 через
аутентификацию по API-ключу minimax или OAuth minimax-portal.
OpenRouter
Использует аудиовывод chat completions OpenRouter с включенной потоковой
передачей. Встроенный провайдер по умолчанию использует
google/lyria-3-pro-preview, а также предоставляет
openrouter/google/lyria-3-clip-preview.
Выбор правильного пути
- На основе общего провайдера, когда вам нужен выбор модели, переключение при сбое провайдера и встроенный асинхронный поток задач/статусов.
- Путь Plugin (ComfyUI), когда вам нужен пользовательский граф рабочего процесса или провайдер, который не является частью общей встроенной возможности генерации музыки.
Если вы отлаживаете поведение, специфичное для ComfyUI, см. ComfyUI. Если вы отлаживаете общее поведение провайдеров, начните с fal, Google (Gemini), MiniMax или OpenRouter.
Режимы возможностей провайдера
Общий контракт генерации музыки поддерживает явные объявления режимов:
generateдля генерации только по промпту.edit, когда запрос включает одно или несколько референсных изображений.
Новые реализации провайдеров должны предпочитать явные блоки режимов:
capabilities: { generate: { maxTracks: 1, supportsLyrics: true, supportsFormat: true, }, edit: { enabled: true, maxTracks: 1, maxInputImages: 1, supportsFormat: true, },}Устаревших плоских полей, таких как maxInputImages, supportsLyrics и
supportsFormat, недостаточно, чтобы заявить поддержку редактирования.
Провайдерам следует явно объявлять generate и edit, чтобы тесты с реальными
сервисами, контрактные тесты и общий инструмент music_generate могли
детерминированно проверять поддержку режимов.
Тесты с реальными сервисами
Покрытие тестами с реальными сервисами для общих встроенных провайдеров включается явно:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.tsОбертка репозитория:
pnpm test:live:media musicЭтот файл тестов с реальными сервисами по умолчанию использует уже
экспортированные env vars провайдера перед сохраненными профилями
аутентификации и запускает покрытие как для generate, так и для объявленного
edit, когда провайдер включает режим редактирования. Текущее покрытие:
google:generateплюсeditfal: толькоgenerateminimax: толькоgenerateopenrouter:generateплюсeditcomfy: отдельное покрытие тестами Comfy с реальными сервисами, не общий обход провайдеров
Покрытие тестами с реальными сервисами для встроенного музыкального пути ComfyUI включается явно:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.tsФайл тестов Comfy с реальными сервисами также покрывает рабочие процессы comfy для изображений и видео, когда эти разделы настроены.
Связанные материалы
- Фоновые задачи — отслеживание задач для отсоединенных запусков
music_generate - ComfyUI
- Справочник конфигурации — конфигурация
musicGenerationModel - Google (Gemini)
- MiniMax
- Модели — конфигурация моделей и отработка отказа
- Обзор инструментов