Bien démarrer
Si vous configurez un agent pour la première fois, installez d’abord la CLI Youka, puis installez la skill karaoke Youka :Donnez une consigne à votre agent
Après avoir installé la CLI et la skill, vous pouvez donner à votre agent une tâche directe comme celle-ci :Règles d’exploitation
Toujours utiliser --json
Dans la CLI, passez toujours
--json. Dans l’API, définissez toujours Accept: application/json. Ne parsez jamais la sortie destinée aux humains.Toujours envoyer une clé d’idempotence
Chaque écriture doit inclure une clé d’idempotence stable, afin que les relances après un timeout renvoient le résultat d’origine au lieu de dupliquer le travail.
Relire l’état durable
Ne faites pas confiance à des réponses de mutation potentiellement obsolètes. Après une tâche terminale, relisez le projet ou l’export pour obtenir l’état final.
Sonder avec backoff
Commencez avec un intervalle de 2–3 secondes. Appliquez un backoff exponentiel pour les traitements longs.
Respectez les réponses 429.
Contrat de sortie
Chaque commande de la CLI en mode--json écrit exactement une enveloppe sur stdout.
Succès :
| Code | Signification | Relancer ? |
|---|---|---|
0 | Succès. | N/A |
1 | Erreur d’exécution (réseau, API, rendu). | Vérifiez error.retryable. |
2 | Entrée invalide (mauvais flags, payload illisible). | Non — corrigez l’entrée. |
Workflow de bout en bout
Le workflow canonique d’un agent est : créer un projet, attendre, exporter, télécharger le résultat. Voici le pattern complet avec des implémentations CLI et SDK.Conseils de polling
La plupart des écritures renvoient des handles d’opération dans le SDK. Préférezclient.projects.wait(...) et client.exports.wait(...), et ne descendez vers client.tasks.* que lorsque vous avez explicitement besoin d’un accès bas niveau aux tâches.
| Type de job | Intervalle initial recommandé | Attente max |
|---|---|---|
| Création de projet (stems + sync paroles) | 3 s | 15 min |
| Séparation des stems uniquement | 3 s | 10 min |
| Sync des paroles uniquement | 2 s | 5 min |
| Rendu d’export | 3 s | 30 min |
--wait gère le polling pour vous. Dans le SDK, les helpers d’attente utilisent un intervalle de 2 s par défaut et acceptent pollIntervalMs.
Clés d’idempotence
Chaque opération de création et de mise à jour prend en charge une clé d’idempotence. Règles :- Utilisez une clé stable, unique, déterministe par mutation logique. Bien :
create-song-${sourceHash}. Mauvais : un nouvel UUID à chaque relance. - Réutilisez la même clé lors des relances. Le serveur reconnaît la relecture et renvoie le résultat d’origine.
- Les clés sont limitées au compte et expirent après 24 heures.
- Si le serveur renvoie
IDEMPOTENT_REPLAY_IN_PROGRESS(HTTP 202), la requête d’origine est encore en cours. Attendez et relancez avec la même clé.
Récupération d’erreurs
Branchez en fonction deerror.code et error.retryable. Les cas courants :
| Code | Cause | Action |
|---|---|---|
INVALID_REQUEST | Le body de requête a échoué la validation de schéma. | Corrigez le payload. Pas de relance. |
UNAUTHORIZED | Clé API manquante ou invalide. | Remontez au demandeur. Pas de relance. |
NOT_FOUND | La ressource n’existe pas ou vous n’y avez pas accès. | Pas de relance. |
CONFLICT (409) | Conflit de version ou collision d’idempotence. | Relancez avec la même clé d’idempotence. |
TOO_MANY_REQUESTS (429) | Rate limit. | Backoff selon Retry-After ou 30 s. |
INTERNAL_SERVER_ERROR (500) | Panne serveur transitoire. | Relancez jusqu’à 3 fois avec backoff. |
IDEMPOTENT_REPLAY_IN_PROGRESS (202) | Requête précédente encore en cours. | Attendez et relancez avec la même clé. |
TASK_FAILED | La tâche async s’est terminée en échec. | Remontez error.task.error au demandeur. Pas de relance. |
TASK_TIMED_OUT | La tâche async a dépassé son budget. | Relance possible une fois en toute sécurité. |
Découvrir les champs modifiables
Avant de modifier des presets, récupérez le schéma de preset afin que le modèle connaisse les champs valides et les types de valeurs :youka project settings <id> --body ....
Récupérez-le une fois par session d’agent et mettez le résultat en cache.
Agents en parallèle
Lorsque plusieurs agents s’exécutent en concurrence sur le même compte :- Scopez les clés d’idempotence à la fois à l’identité de l’agent et à la mutation logique :
agent-${agentId}-create-${sourceHash}. Cela évite qu’une relance d’un agent entre en collision avec une nouvelle requête d’un autre agent. - Gardez les lectures sans limite — les requêtes
GETsont peu coûteuses et sans effets de bord. - Utilisez une seule file pour
POST /projects/{projectId}/exportspar projet si vous avez besoin d’un historique d’exports ordonné. Sinon, les exports peuvent arriver dans le désordre.
Et ensuite
- CLI global options — tous les flags disponibles pour les agents
- SDK errors — référence complète des classes d’erreurs
- API async jobs — le contrat de polling
- API idempotency — le contrat d’idempotence
