Przejdź do głównej treści
Narzędzie music_generate pozwala agentowi tworzyć muzykę lub audio za pomocą wspólnej funkcji generowania muzyki ze skonfigurowanymi dostawcami — obecnie ComfyUI, fal, Google, MiniMax i OpenRouter. W przypadku uruchomień agenta opartych na sesji OpenClaw rozpoczyna generowanie muzyki jako zadanie w tle, śledzi je w rejestrze zadań, a następnie ponownie wybudza agenta, gdy utwór jest gotowy, aby agent mógł poinformować użytkownika i załączyć gotowe audio. Agent obsługujący ukończenie działa zgodnie ze zwykłym trybem widocznej odpowiedzi sesji: automatyczne dostarczenie odpowiedzi końcowej, gdy jest skonfigurowane, albo message(action="send"), gdy sesja wymaga narzędzia wiadomości. Jeśli sesja żądającego jest nieaktywna lub jej aktywne wybudzenie się nie powiedzie, a w odpowiedzi końcowej nadal brakuje części wygenerowanego audio, OpenClaw wysyła idempotentną bezpośrednią odpowiedź awaryjną zawierającą tylko brakujące audio.
Wbudowane narzędzie współdzielone pojawia się tylko wtedy, gdy dostępny jest co najmniej jeden dostawca generowania muzyki. Jeśli nie widzisz music_generate w narzędziach agenta, skonfiguruj agents.defaults.musicGenerationModel albo ustaw klucz API dostawcy.

Szybki start

1

Skonfiguruj uwierzytelnianie

Ustaw klucz API dla co najmniej jednego dostawcy — na przykład GEMINI_API_KEY lub MINIMAX_API_KEY.
2

Wybierz domyślny model (opcjonalnie)

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

Zapytaj agenta

„Wygeneruj energiczny utwór synthpop o nocnej jeździe przez neonowe miasto.”Agent automatycznie wywołuje music_generate. Nie trzeba dodawać narzędzia do listy dozwolonych.
W bezpośrednich kontekstach synchronicznych bez uruchomienia agenta opartego na sesji wbudowane narzędzie nadal przechodzi awaryjnie do generowania inline i zwraca końcową ścieżkę multimediów w wyniku narzędzia.
Przykładowe prompty:
Generate a cinematic piano track with soft strings and no vocals.
Generate an energetic chiptune loop about launching a rocket at sunrise.

Obsługiwani dostawcy

DostawcaModel domyślnyDane referencyjneObsługiwane ustawieniaUwierzytelnianie
ComfyUIworkflowDo 1 obrazuMuzyka lub audio zdefiniowane przez przepływ pracyCOMFY_API_KEY, COMFY_CLOUD_API_KEY
falfal-ai/minimax-music/v2.6Braklyrics, instrumental, durationSeconds, formatFAL_KEY lub FAL_API_KEY
Googlelyria-3-clip-previewDo 10 obrazówlyrics, instrumental, formatGEMINI_API_KEY, GOOGLE_API_KEY
MiniMaxmusic-2.6Braklyrics, instrumental, format=mp3MINIMAX_API_KEY lub OAuth MiniMax
OpenRoutergoogle/lyria-3-pro-previewDo 1 obrazulyrics, instrumental, durationSeconds, formatOPENROUTER_API_KEY

Macierz możliwości

Jawny kontrakt trybu używany przez music_generate, testy kontraktowe i wspólny przegląd live:
DostawcagenerateeditLimit edycjiWspólne ścieżki live
ComfyUI1 obrazNie w wspólnym przeglądzie; pokryte przez extensions/comfy/comfy.live.test.ts
falBrakgenerate
Google10 obrazówgenerate, edit
MiniMaxBrakgenerate
OpenRouter1 obrazgenerate, edit
Użyj action: "list", aby sprawdzić dostępnych wspólnych dostawców i modele w czasie działania:
/tool music_generate action=list
Użyj action: "status", aby sprawdzić aktywne zadanie muzyczne oparte na sesji:
/tool music_generate action=status
Przykład bezpośredniego generowania:
/tool music_generate prompt="Dreamy lo-fi hip hop with vinyl texture and gentle rain" instrumental=true

Parametry narzędzia

prompt
string
wymagane
Prompt generowania muzyki. Wymagany dla action: "generate".
action
"generate" | "status" | "list"
domyślnie:"generate"
"status" zwraca bieżące zadanie sesji; "list" sprawdza dostawców.
model
string
Nadpisanie dostawcy/modelu (np. google/lyria-3-pro-preview, comfy/workflow).
lyrics
string
Opcjonalny tekst piosenki, gdy dostawca obsługuje jawne wejście tekstu.
instrumental
boolean
Zażądaj wyjścia wyłącznie instrumentalnego, gdy dostawca je obsługuje.
image
string
Pojedyncza ścieżka lub URL obrazu referencyjnego.
images
string[]
Wiele obrazów referencyjnych (do 10 u obsługujących dostawców).
durationSeconds
number
Docelowy czas trwania w sekundach, gdy dostawca obsługuje wskazówki czasu trwania.
format
"mp3" | "wav"
Wskazówka formatu wyjściowego, gdy dostawca ją obsługuje.
filename
string
Wskazówka nazwy pliku wyjściowego.
Nie wszyscy dostawcy obsługują wszystkie parametry. OpenClaw nadal weryfikuje twarde limity, takie jak liczby wejść, przed wysłaniem żądania. Gdy dostawca obsługuje czas trwania, ale używa krótszego maksimum niż żądana wartość, OpenClaw ogranicza ją do najbliższego obsługiwanego czasu trwania. Naprawdę nieobsługiwane opcjonalne wskazówki są ignorowane z ostrzeżeniem, gdy wybrany dostawca lub model nie może ich honorować. Wyniki narzędzia raportują zastosowane ustawienia; details.normalization zapisuje każde mapowanie z wartości żądanej na zastosowaną.
Limity czasu żądań dostawcy są wyłącznie konfiguracją operatora. OpenClaw używa agents.defaults.musicGenerationModel.timeoutMs, gdy jest skonfigurowane, podnosi wartości poniżej 120000ms do 120000ms, a w przeciwnym razie domyślnie ustawia żądania dostawcy na 300000ms.

Zachowanie asynchroniczne

Generowanie muzyki oparte na sesji działa jako zadanie w tle:
  • Zadanie w tle: music_generate tworzy zadanie w tle, natychmiast zwraca odpowiedź rozpoczęcia/zadania, a później publikuje gotowy utwór w kolejnej wiadomości agenta.
  • Zapobieganie duplikatom: gdy zadanie ma stan queued lub running, późniejsze wywołania music_generate w tej samej sesji zwracają status zadania zamiast rozpoczynać kolejne generowanie. Użyj action: "status", aby sprawdzić to jawnie.
  • Odczyt statusu: openclaw tasks list lub openclaw tasks show <taskId> sprawdza statusy oczekujące, działające i końcowe.
  • Wybudzenie po ukończeniu: OpenClaw wstrzykuje wewnętrzne zdarzenie ukończenia z powrotem do tej samej sesji, aby model mógł samodzielnie napisać widoczną dla użytkownika odpowiedź następczą.
  • Wskazówka promptu: późniejsze tury użytkownika/ręczne w tej samej sesji otrzymują małą wskazówkę czasu działania, gdy zadanie muzyczne jest już w toku, aby model nie wywoływał bezrefleksyjnie music_generate ponownie.
  • Fallback bez sesji: bezpośrednie/lokalne konteksty bez rzeczywistej sesji agenta działają inline i zwracają końcowy wynik audio w tej samej turze.

Cykl życia zadania

StanZnaczenie
queuedZadanie utworzone, czeka na przyjęcie przez dostawcę.
runningDostawca przetwarza (zwykle od 30 sekund do 3 minut zależnie od dostawcy i czasu trwania).
succeededUtwór gotowy; agent wybudza się i publikuje go w rozmowie.
failedBłąd dostawcy lub limit czasu; agent wybudza się ze szczegółami błędu.
Sprawdź status z CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>

Konfiguracja

Wybór modelu

{
  agents: {
    defaults: {
      musicGenerationModel: {
        primary: "google/lyria-3-clip-preview",
        fallbacks: ["fal/fal-ai/minimax-music/v2.6", "minimax/music-2.6"],
      },
    },
  },
}

Kolejność wyboru dostawcy

OpenClaw próbuje dostawców w tej kolejności:
  1. Parametr model z wywołania narzędzia (jeśli agent go określi).
  2. musicGenerationModel.primary z konfiguracji.
  3. musicGenerationModel.fallbacks w kolejności.
  4. Automatyczne wykrywanie tylko z użyciem domyślnych dostawców opartych na uwierzytelnianiu:
    • najpierw bieżący dostawca domyślny;
    • pozostali zarejestrowani dostawcy generowania muzyki w kolejności identyfikatorów dostawców.
Jeśli dostawca zawiedzie, automatycznie próbowany jest następny kandydat. Jeśli wszyscy zawiodą, błąd zawiera szczegóły każdej próby. Ustaw agents.defaults.mediaGenerationAutoProviderFallback: false, aby używać tylko jawnych wpisów model, primary i fallbacks.

Uwagi o dostawcach

Oparte na przepływie pracy i zależne od skonfigurowanego grafu oraz mapowania węzłów dla pól promptu/wyjścia. Dołączony Plugin comfy podłącza się do wspólnego narzędzia music_generate przez rejestr dostawców generowania muzyki.
Używa punktów końcowych modeli fal przez wspólną ścieżkę uwierzytelniania dostawcy. Dołączony dostawca domyślnie używa fal-ai/minimax-music/v2.6 i udostępnia też fal-ai/ace-step/prompt-to-audio oraz fal-ai/stable-audio-25/text-to-audio dla żądań prompt-to-audio.
Używa generowania wsadowego Lyria 3. Bieżący dołączony przepływ obsługuje prompt, opcjonalny tekst piosenki i opcjonalne obrazy referencyjne.
Używa wsadowego punktu końcowego music_generation. Obsługuje prompt, opcjonalny tekst piosenki, tryb instrumentalny i wyjście mp3 przez uwierzytelnianie kluczem API minimax albo OAuth minimax-portal.
Używa wyjścia audio z uzupełnień czatu OpenRouter z włączonym strumieniowaniem. Dołączony dostawca domyślnie używa google/lyria-3-pro-preview i udostępnia też openrouter/google/lyria-3-clip-preview.

Wybór właściwej ścieżki

  • Wspólne, oparte na dostawcy, gdy potrzebujesz wyboru modelu, przełączania awaryjnego dostawcy oraz wbudowanego asynchronicznego przepływu zadań/statusu.
  • Ścieżka Plugin (ComfyUI), gdy potrzebujesz własnego grafu przepływu pracy albo dostawcy, który nie jest częścią wspólnej dołączonej funkcji muzycznej.
Jeśli debugujesz zachowanie specyficzne dla ComfyUI, zobacz ComfyUI. Jeśli debugujesz wspólne zachowanie dostawców, zacznij od fal, Google (Gemini), MiniMax lub OpenRouter.

Tryby możliwości dostawcy

Wspólny kontrakt generowania muzyki obsługuje jawne deklaracje trybów:
  • generate do generowania wyłącznie na podstawie promptu.
  • edit, gdy żądanie zawiera jeden lub więcej obrazów referencyjnych.
Nowe implementacje dostawców powinny preferować jawne bloki trybów:
capabilities: {
  generate: {
    maxTracks: 1,
    supportsLyrics: true,
    supportsFormat: true,
  },
  edit: {
    enabled: true,
    maxTracks: 1,
    maxInputImages: 1,
    supportsFormat: true,
  },
}
Starsze płaskie pola, takie jak maxInputImages, supportsLyrics i supportsFormat, nie wystarczają do deklarowania obsługi edycji. Dostawcy powinni jawnie deklarować generate i edit, aby testy live, testy kontraktu i współdzielone narzędzie music_generate mogły deterministycznie weryfikować obsługę trybów.

Testy live

Opcjonalne pokrycie live dla wspólnych wbudowanych dostawców:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts
Wrapper repozytorium:
pnpm test:live:media music
Ten plik live domyślnie używa już eksportowanych zmiennych środowiskowych dostawców przed zapisanymi profilami uwierzytelniania i uruchamia pokrycie zarówno generate, jak i zadeklarowanego edit, gdy dostawca włącza tryb edycji. Obecne pokrycie:
  • google: generate oraz edit
  • fal: tylko generate
  • minimax: tylko generate
  • openrouter: generate oraz edit
  • comfy: osobne pokrycie live Comfy, nie wspólny przegląd dostawców
Opcjonalne pokrycie live dla wbudowanej ścieżki muzycznej ComfyUI:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts
Plik live Comfy obejmuje także przepływy pracy obrazów i wideo comfy, gdy te sekcje są skonfigurowane.

Powiązane