Zum Hauptinhalt springen

Musikgenerierung

Das Tool music_generate ermöglicht es dem Agenten, Musik oder Audio über die gemeinsam genutzte Fähigkeit zur Musikgenerierung mit konfigurierten Providern wie Google, MiniMax und workflowkonfiguriertem ComfyUI zu erstellen. Für agentengestützte Sitzungen mit gemeinsam genutzten Providern startet OpenClaw die Musikgenerierung als Hintergrundaufgabe, verfolgt sie im Aufgabenprotokoll und weckt den Agenten dann erneut, wenn der Track bereit ist, damit der Agent das fertige Audio wieder im ursprünglichen Kanal posten kann.
Das eingebaute gemeinsame Tool erscheint nur, wenn mindestens ein Provider für Musikgenerierung verfügbar ist. Wenn Sie music_generate nicht in den Tools Ihres Agenten sehen, konfigurieren Sie agents.defaults.musicGenerationModel oder richten Sie einen API-Schlüssel für einen Provider ein.

Schnellstart

Gemeinsam genutzte providergestützte Generierung

  1. Setzen Sie einen API-Schlüssel für mindestens einen Provider, zum Beispiel GEMINI_API_KEY oder MINIMAX_API_KEY.
  2. Optional können Sie Ihr bevorzugtes Modell festlegen:
{
  agents: {
    defaults: {
      musicGenerationModel: {
        primary: "google/lyria-3-clip-preview",
      },
    },
  },
}
  1. Fragen Sie den Agenten: „Erzeuge einen mitreißenden Synthpop-Track über eine nächtliche Fahrt durch eine Neonstadt.“
Der Agent ruft music_generate automatisch auf. Kein Allowlisting für Tools erforderlich. Für direkte synchrone Kontexte ohne agentengestützten Lauf mit Sitzung greift das eingebaute Tool weiterhin auf Inline-Generierung zurück und gibt den finalen Medienpfad im Tool-Ergebnis zurück. Beispiel-Prompts:
Generate a cinematic piano track with soft strings and no vocals.
Generate an energetic chiptune loop about launching a rocket at sunrise.

Workflowgesteuerte Comfy-Generierung

Das gebündelte Plugin comfy wird über die Provider-Registry für Musikgenerierung in das gemeinsame Tool music_generate eingebunden.
  1. Konfigurieren Sie models.providers.comfy.music mit einem Workflow-JSON und Prompt-/Ausgabeknoten.
  2. Wenn Sie Comfy Cloud verwenden, setzen Sie COMFY_API_KEY oder COMFY_CLOUD_API_KEY.
  3. Bitten Sie den Agenten um Musik oder rufen Sie das Tool direkt auf.
Beispiel:
/tool music_generate prompt="Warme Ambient-Synth-Schleife mit weicher Bandtextur"

Unterstützung durch gemeinsam genutzte gebündelte Provider

ProviderStandardmodellReferenzeingabenUnterstützte SteuerungenAPI-Schlüssel
ComfyUIworkflowBis zu 1 BildWorkflowdefinierte Musik oder AudioCOMFY_API_KEY, COMFY_CLOUD_API_KEY
Googlelyria-3-clip-previewBis zu 10 Bilderlyrics, instrumental, formatGEMINI_API_KEY, GOOGLE_API_KEY
MiniMaxmusic-2.5+Keinelyrics, instrumental, durationSeconds, format=mp3MINIMAX_API_KEY

Deklarierte Fähigkeitsmatrix

Dies ist der explizite Modusvertrag, der von music_generate, Vertragstests und dem gemeinsamen Live-Sweep verwendet wird.
ProvidergenerateeditEdit-LimitGemeinsame Live-Lanes
ComfyUIJaJa1 BildNicht im gemeinsamen Sweep; abgedeckt durch extensions/comfy/comfy.live.test.ts
GoogleJaJa10 Bildergenerate, edit
MiniMaxJaNeinKeinegenerate
Verwenden Sie action: "list", um verfügbare gemeinsam genutzte Provider und Modelle zur Laufzeit anzuzeigen:
/tool music_generate action=list
Verwenden Sie action: "status", um die aktive sitzungsgestützte Musikaufgabe zu prüfen:
/tool music_generate action=status
Beispiel für direkte Generierung:
/tool music_generate prompt="Verträumter Lo-fi-Hip-Hop mit Vinyltextur und sanftem Regen" instrumental=true

Parameter des eingebauten Tools

ParameterTypBeschreibung
promptstringPrompt für die Musikgenerierung (erforderlich für action: "generate")
actionstring"generate" (Standard), "status" für die aktuelle Sitzungsaufgabe oder "list" zur Provider-Inspektion
modelstringOverride für Provider/Modell, z. B. google/lyria-3-pro-preview oder comfy/workflow
lyricsstringOptionale Liedtexte, wenn der Provider explizite Texteingaben unterstützt
instrumentalbooleanNur instrumentale Ausgabe anfordern, wenn der Provider dies unterstützt
imagestringPfad oder URL zu einem einzelnen Referenzbild
imagesstring[]Mehrere Referenzbilder (bis zu 10)
durationSecondsnumberZieldauer in Sekunden, wenn der Provider Dauerhinweise unterstützt
formatstringHinweis zum Ausgabeformat (mp3 oder wav), wenn der Provider dies unterstützt
filenamestringHinweis auf den Ausgabedateinamen
Nicht alle Provider unterstützen alle Parameter. OpenClaw validiert dennoch harte Limits wie Eingabeanzahlen vor der Übermittlung. Wenn ein Provider Dauer unterstützt, aber ein kürzeres Maximum als den angeforderten Wert verwendet, begrenzt OpenClaw automatisch auf die nächstunterstützte Dauer. Wirklich nicht unterstützte optionale Hinweise werden mit einer Warnung ignoriert, wenn der ausgewählte Provider oder das Modell sie nicht berücksichtigen kann. Tool-Ergebnisse melden die angewendeten Einstellungen. Wenn OpenClaw die Dauer während eines Provider-Fallbacks begrenzt, spiegelt durationSeconds im Rückgabewert den übermittelten Wert wider und details.normalization.durationSeconds zeigt die Zuordnung von angefordert zu angewendet.

Asynchrones Verhalten für den gemeinsam genutzten providergestützten Pfad

  • Agentenläufe mit Sitzung: music_generate erstellt eine Hintergrundaufgabe, gibt sofort eine Antwort vom Typ gestartet/Aufgabe zurück und postet den fertigen Track später in einer nachfolgenden Agentennachricht.
  • Verhinderung von Duplikaten: Solange diese Hintergrundaufgabe noch queued oder running ist, geben spätere Aufrufe von music_generate in derselben Sitzung den Aufgabenstatus zurück, statt eine weitere Generierung zu starten.
  • Statusabfrage: Verwenden Sie action: "status", um die aktive sitzungsgestützte Musikaufgabe zu prüfen, ohne eine neue zu starten.
  • Aufgabenverfolgung: Verwenden Sie openclaw tasks list oder openclaw tasks show <taskId>, um den Status queued, running und Endstatus der Generierung zu prüfen.
  • Wecken bei Abschluss: OpenClaw injiziert ein internes Abschlussereignis zurück in dieselbe Sitzung, damit das Modell selbst die nutzerseitige Folgemeldung schreiben kann.
  • Prompt-Hinweis: Spätere Nutzer-/manuelle Turns in derselben Sitzung erhalten einen kleinen Laufzeithinweis, wenn bereits eine Musikaufgabe läuft, damit das Modell nicht blind erneut music_generate aufruft.
  • Fallback ohne Sitzung: Direkte/lokale Kontexte ohne echte Agentensitzung laufen weiterhin inline und geben das finale Audioergebnis im selben Turn zurück.

Aufgabenlebenszyklus

Jede Anfrage music_generate durchläuft vier Zustände:
  1. queued — Aufgabe erstellt, wartet darauf, dass der Provider sie annimmt.
  2. running — Provider verarbeitet die Aufgabe (typischerweise 30 Sekunden bis 3 Minuten, abhängig von Provider und Dauer).
  3. succeeded — Track bereit; der Agent wird geweckt und postet ihn in die Unterhaltung.
  4. failed — Providerfehler oder Timeout; der Agent wird mit Fehlerdetails geweckt.
Status über die CLI prüfen:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
Verhinderung von Duplikaten: Wenn für die aktuelle Sitzung bereits eine Musikaufgabe queued oder running ist, gibt music_generate den Status der vorhandenen Aufgabe zurück, statt eine neue zu starten. Verwenden Sie action: "status", um dies explizit zu prüfen, ohne eine neue Generierung auszulösen.

Konfiguration

Modellauswahl

{
  agents: {
    defaults: {
      musicGenerationModel: {
        primary: "google/lyria-3-clip-preview",
        fallbacks: ["minimax/music-2.5+"],
      },
    },
  },
}

Reihenfolge der Providerauswahl

Bei der Musikgenerierung probiert OpenClaw Provider in dieser Reihenfolge aus:
  1. Parameter model aus dem Tool-Aufruf, falls der Agent einen angibt
  2. musicGenerationModel.primary aus der Konfiguration
  3. musicGenerationModel.fallbacks in Reihenfolge
  4. Automatische Erkennung nur mit auth-gestützten Provider-Standards:
    • zuerst aktueller Standardprovider
    • verbleibende registrierte Provider für Musikgenerierung in Reihenfolge der Provider-IDs
Wenn ein Provider fehlschlägt, wird automatisch der nächste Kandidat versucht. Wenn alle fehlschlagen, enthält der Fehler Details zu jedem Versuch. Setzen Sie agents.defaults.mediaGenerationAutoProviderFallback: false, wenn die Musikgenerierung nur die expliziten Einträge model, primary und fallbacks verwenden soll.

Hinweise zu Providern

  • Google verwendet die Batch-Generierung von Lyria 3. Der aktuelle gebündelte Ablauf unterstützt Prompt, optionalen Liedtext und optionale Referenzbilder.
  • MiniMax verwendet den Batch-Endpunkt music_generation. Der aktuelle gebündelte Ablauf unterstützt Prompt, optionale Liedtexte, instrumentalen Modus, Dauersteuerung und MP3-Ausgabe.
  • Die Unterstützung für ComfyUI ist workflowgesteuert und hängt vom konfigurierten Graphen sowie der Knotenzuordnung für Prompt-/Ausgabefelder ab.

Fähigkeitsmodi von Providern

Der gemeinsame Vertrag für Musikgenerierung unterstützt jetzt explizite Modusdeklarationen:
  • generate für promptbasierte Generierung
  • edit, wenn die Anfrage ein oder mehrere Referenzbilder enthält
Neue Provider-Implementierungen sollten explizite Modusblöcke bevorzugen:
capabilities: {
  generate: {
    maxTracks: 1,
    supportsLyrics: true,
    supportsFormat: true,
  },
  edit: {
    enabled: true,
    maxTracks: 1,
    maxInputImages: 1,
    supportsFormat: true,
  },
}
Veraltete flache Felder wie maxInputImages, supportsLyrics und supportsFormat reichen nicht aus, um Edit-Unterstützung anzukündigen. Provider sollten generate und edit explizit deklarieren, damit Live-Tests, Vertragstests und das gemeinsame Tool music_generate die Modusunterstützung deterministisch validieren können.

Den richtigen Pfad wählen

  • Verwenden Sie den gemeinsam genutzten providergestützten Pfad, wenn Sie Modellauswahl, Provider-Failover und den eingebauten asynchronen Aufgaben-/Status-Flow möchten.
  • Verwenden Sie einen Plugin-Pfad wie ComfyUI, wenn Sie einen benutzerdefinierten Workflow-Graphen oder einen Provider benötigen, der nicht Teil der gemeinsam genutzten gebündelten Fähigkeit zur Musikgenerierung ist.
  • Wenn Sie ComfyUI-spezifisches Verhalten debuggen, siehe ComfyUI. Wenn Sie gemeinsam genutztes Providerverhalten debuggen, beginnen Sie mit Google (Gemini) oder MiniMax.

Live-Tests

Opt-in-Live-Abdeckung für die gemeinsam genutzten gebündelten Provider:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts
Repo-Wrapper:
pnpm test:live:media music
Diese Live-Datei lädt fehlende Provider-Env-Variablen aus ~/.profile, bevorzugt standardmäßig Live-/Env-API-Schlüssel vor gespeicherten Auth-Profilen und führt sowohl generate als auch deklarierte edit-Abdeckung aus, wenn der Provider den Edit-Modus aktiviert. Derzeit bedeutet das:
  • google: generate plus edit
  • minimax: nur generate
  • comfy: separate Comfy-Live-Abdeckung, nicht der gemeinsame Provider-Sweep
Opt-in-Live-Abdeckung für den gebündelten ComfyUI-Musikpfad:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts
Die Comfy-Live-Datei deckt auch Comfy-Bild- und Video-Workflows ab, wenn diese Bereiche konfiguriert sind.

Verwandt