Перейти к основному содержанию
Инструмент music_generate позволяет агенту создавать музыку или аудио через общую возможность генерации музыки с настроенными провайдерами — сейчас это ComfyUI, fal, Google, MiniMax и OpenRouter. Для запусков агента с поддержкой сессии OpenClaw запускает генерацию музыки как фоновую задачу, отслеживает ее в журнале задач, а затем снова пробуждает агента, когда трек готов, чтобы агент мог сообщить пользователю и прикрепить готовое аудио. Агент завершения следует обычному режиму видимых ответов сессии: автоматическая доставка финального ответа, если она настроена, или message(action="send"), если сессия требует инструмент сообщений. Если сессия запрашивающего неактивна или ее активное пробуждение завершается неудачно, а часть сгенерированного аудио все еще отсутствует в ответе завершения, OpenClaw отправляет идемпотентный прямой резервный ответ только с недостающим аудио.
Встроенный общий инструмент появляется только тогда, когда доступен хотя бы один провайдер генерации музыки. Если вы не видите music_generate среди инструментов вашего агента, настройте agents.defaults.musicGenerationModel или добавьте API-ключ провайдера.

Быстрый старт

1

Настройте аутентификацию

Задайте API-ключ хотя бы для одного провайдера — например GEMINI_API_KEY или MINIMAX_API_KEY.
2

Выберите модель по умолчанию (необязательно)

{
  agents: {
    defaults: {
      musicGenerationModel: {
        primary: "google/lyria-3-clip-preview",
      },
    },
  },
}
3

Попросите агента

“Generate an upbeat synthpop track about a night drive through a neon city.”Агент автоматически вызывает music_generate. Список разрешенных инструментов не требуется.
Для прямых синхронных контекстов без запуска агента с поддержкой сессии встроенный инструмент все равно возвращается к встроенной генерации и возвращает итоговый путь к медиафайлу в результате инструмента.
Примеры запросов:
Generate a cinematic piano track with soft strings and no vocals.
Generate an energetic chiptune loop about launching a rocket at sunrise.

Поддерживаемые провайдеры

ПровайдерМодель по умолчаниюЭталонные входные данныеПоддерживаемые элементы управленияАутентификация
ComfyUIworkflowДо 1 изображенияМузыка или аудио, определенные рабочим процессомCOMFY_API_KEY, COMFY_CLOUD_API_KEY
falfal-ai/minimax-music/v2.6Нетlyrics, instrumental, durationSeconds, formatFAL_KEY или FAL_API_KEY
Googlelyria-3-clip-previewДо 10 изображенийlyrics, instrumental, formatGEMINI_API_KEY, GOOGLE_API_KEY
MiniMaxmusic-2.6Нетlyrics, instrumental, format=mp3MINIMAX_API_KEY или MiniMax OAuth
OpenRoutergoogle/lyria-3-pro-previewДо 1 изображенияlyrics, instrumental, durationSeconds, formatOPENROUTER_API_KEY

Матрица возможностей

Явный контракт режимов, используемый music_generate, контрактными тестами и общим live sweep:
ПровайдерgenerateeditОграничение редактированияОбщие live-линии
ComfyUI1 изображениеНе входит в общий sweep; покрывается extensions/comfy/comfy.live.test.ts
falНетgenerate
Google10 изображенийgenerate, edit
MiniMaxНетgenerate
OpenRouter1 изображение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

Параметры инструмента

prompt
string
обязательно
Запрос для генерации музыки. Требуется для action: "generate".
action
"generate" | "status" | "list"
по умолчанию:"generate"
"status" возвращает текущую задачу сессии; "list" проверяет провайдеров.
model
string
Переопределение провайдера/модели (например, google/lyria-3-pro-preview, comfy/workflow).
lyrics
string
Необязательный текст песни, когда провайдер поддерживает явный ввод текста.
instrumental
boolean
Запрашивает вывод только инструментальной версии, когда провайдер это поддерживает.
image
string
Путь или URL одного эталонного изображения.
images
string[]
Несколько эталонных изображений (до 10 у поддерживающих провайдеров).
durationSeconds
number
Целевая длительность в секундах, когда провайдер поддерживает подсказки длительности.
format
"mp3" | "wav"
Подсказка формата вывода, когда провайдер это поддерживает.
filename
string
Подсказка имени выходного файла.
Не все провайдеры поддерживают все параметры. OpenClaw все равно проверяет жесткие ограничения, такие как количество входных данных, перед отправкой. Когда провайдер поддерживает длительность, но использует более короткий максимум, чем запрошенное значение, OpenClaw ограничивает ее ближайшей поддерживаемой длительностью. Действительно неподдерживаемые необязательные подсказки игнорируются с предупреждением, когда выбранный провайдер или модель не может их выполнить. Результаты инструмента сообщают примененные настройки; details.normalization фиксирует любое сопоставление запрошенного с примененным.
Тайм-ауты запросов к провайдеру являются только операторской конфигурацией. 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 list
openclaw 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 пробует провайдеров в следующем порядке:
  1. Параметр model из вызова инструмента (если агент его указывает).
  2. musicGenerationModel.primary из конфигурации.
  3. musicGenerationModel.fallbacks по порядку.
  4. Автообнаружение только с использованием значений провайдеров по умолчанию, подкрепленных аутентификацией:
    • текущий провайдер по умолчанию первым;
    • остальные зарегистрированные провайдеры генерации музыки в порядке id провайдера.
Если провайдер завершается ошибкой, следующий кандидат пробуется автоматически. Если завершаются ошибкой все, ошибка включает подробности каждой попытки. Задайте agents.defaults.mediaGenerationAutoProviderFallback: false, чтобы использовать только явные записи model, primary и fallbacks.

Примечания о провайдерах

Управляется рабочим процессом и зависит от настроенного графа, а также сопоставления узлов для полей prompt/output. Встроенный Plugin comfy подключается к общему инструменту music_generate через реестр провайдеров генерации музыки.
Использует конечные точки моделей 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.
Использует пакетную генерацию Lyria 3. Текущий встроенный поток поддерживает запрос, необязательный текст песни и необязательные эталонные изображения.
Использует пакетную конечную точку music_generation. Поддерживает запрос, необязательный текст песни, инструментальный режим и вывод mp3 через аутентификацию по API-ключу minimax или OAuth minimax-portal.
Использует аудиовывод 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 плюс edit
  • fal: только generate
  • minimax: только generate
  • openrouter: generate плюс edit
  • comfy: отдельное покрытие тестами Comfy с реальными сервисами, не общий обход провайдеров
Покрытие тестами с реальными сервисами для встроенного музыкального пути ComfyUI включается явно:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts
Файл тестов Comfy с реальными сервисами также покрывает рабочие процессы comfy для изображений и видео, когда эти разделы настроены.

Связанные материалы