Erste Schritte
Wenn du zum ersten Mal einen Agenten einrichtest, installiere zuerst die Youka CLI und danach die Youka-Karaoke-Skill:Deinen Agenten prompten
Nach der Installation von CLI und Skill kannst du deinem Agenten eine direkte Aufgabe wie diese geben:Betriebsregeln
Immer --json verwenden
In der CLI immer
--json übergeben. In der API immer Accept: application/json setzen. Niemals menschenlesbare Ausgabe parsen.Immer einen Idempotency-Key senden
Jeder Schreibvorgang sollte einen stabilen Idempotency-Key tragen, damit Wiederholungen nach einem Timeout das ursprüngliche Ergebnis zurückgeben, statt Arbeit zu duplizieren.
Dauerhaften Zustand erneut lesen
Vertraue keinen veralteten Mutationsantworten. Nach einer terminalen Aufgabe das Projekt oder den Export erneut lesen, um den finalen Zustand zu erhalten.
Mit Backoff pollen
Mit einem Intervall von 2–3 Sekunden starten. Für lange Jobs exponentiell erhöhen. 429-Antworten beachten.
Output-Vertrag
Jeder CLI-Befehl im Modus--json schreibt genau einen Umschlag nach stdout.
Erfolg:
| Code | Bedeutung | Retry? |
|---|---|---|
0 | Erfolg. | N/A |
1 | Laufzeitfehler (Netzwerk, API, Rendering). | error.retryable prüfen. |
2 | Ungültige Eingabe (schlechte Flags, unlesbarer Payload). | Nein — Eingabe korrigieren. |
End-to-end-Workflow
Der kanonische Agent-Workflow ist: Projekt erstellen, warten, exportieren, Ergebnis herunterladen. Hier ist das vollständige Muster mit CLI- und SDK-Implementierungen.Polling-Empfehlungen
Die meisten Schreibvorgänge geben im SDK Operation-Handles zurück. Bevorzugeclient.projects.wait(...) und client.exports.wait(...) und gehe nur dann auf client.tasks.* herunter, wenn du ausdrücklich Low-Level-Task-Zugriff brauchst.
| Job-Typ | Empfohlenes Anfangsintervall | Max. Wartezeit |
|---|---|---|
| Project create (stems + lyrics sync) | 3 s | 15 min |
| Stem separation only | 3 s | 10 min |
| Lyrics sync only | 2 s | 5 min |
| Export render | 3 s | 30 min |
--wait das Polling für dich. Im SDK verwenden die Wait-Helper standardmäßig ein Intervall von 2 s und akzeptieren pollIntervalMs.
Idempotency-Keys
Jede Create- und Update-Operation unterstützt einen Idempotency-Key. Regeln:- Verwende pro logischer Mutation einen stabilen, eindeutigen, deterministischen Key. Gut:
create-song-${sourceHash}. Schlecht: eine neue UUID pro Retry. - Verwende bei Retries denselben Key erneut. Der Server erkennt das Replay und gibt das ursprüngliche Ergebnis zurück.
- Keys sind pro Account scoped und laufen nach 24 Stunden ab.
- Wenn der Server
IDEMPOTENT_REPLAY_IN_PROGRESS(HTTP 202) zurückgibt, läuft die ursprüngliche Anfrage noch. Warten und mit demselben Key erneut versuchen.
Fehlerbehebung
Verzweige nacherror.code und error.retryable. Die häufigsten Fälle:
| Code | Ursache | Aktion |
|---|---|---|
INVALID_REQUEST | Request-Body hat die Schema-Validierung nicht bestanden. | Payload korrigieren. Kein Retry. |
UNAUTHORIZED | Fehlender oder ungültiger API-Key. | An den Aufrufer weitergeben. Kein Retry. |
NOT_FOUND | Ressource existiert nicht oder du hast keinen Zugriff. | Kein Retry. |
CONFLICT (409) | Versionskonflikt oder Idempotency-Kollision. | Mit demselben Idempotency-Key erneut versuchen. |
TOO_MANY_REQUESTS (429) | Rate-Limit. | Um Retry-After oder 30 s zurückoffen. |
INTERNAL_SERVER_ERROR (500) | Transienter Serverfehler. | Bis zu 3-mal mit Backoff retryen. |
IDEMPOTENT_REPLAY_IN_PROGRESS (202) | Vorherige Anfrage läuft noch. | Warten und mit demselben Key erneut versuchen. |
TASK_FAILED | Die asynchrone Aufgabe endete mit einem Fehler. | error.task.error an den Aufrufer weitergeben. Kein Retry. |
TASK_TIMED_OUT | Die asynchrone Aufgabe hat ihr Zeitbudget überschritten. | Einmalig erneut versuchen ist sicher. |
Mutierbare Felder ermitteln
Bevor du Presets mutierst, rufe das Preset-Schema ab, damit das Modell die gültigen Felder und Werttypen kennt:youka project settings <id> --body ... zu senden.
Einmal pro Agent-Session abrufen und das Ergebnis cachen.
Parallele Agenten
Wenn mehrere Agenten gleichzeitig gegen denselben Account laufen:- Scope Idempotency-Keys sowohl auf die Agent-Identität als auch auf die logische Mutation:
agent-${agentId}-create-${sourceHash}. Das verhindert, dass der Retry eines Agenten mit einer neuen Anfrage eines anderen kollidiert. - Reads unbeschränkt lassen —
GET-Requests sind günstig und haben keine Nebenwirkungen. - Verwende pro Projekt eine einzelne Queue für
POST /projects/{projectId}/exports, wenn du eine geordnete Export-Historie brauchst. Andernfalls können Exports in falscher Reihenfolge ankommen.
Wie geht’s weiter
- CLI global options — alle Flags, die Agenten zur Verfügung stehen
- SDK errors — vollständige Referenz der Error-Klassen
- API async jobs — der Polling-Vertrag
- API idempotency — der Idempotency-Vertrag
