Skill d'orchestration
Ce skill est destiné à un orchestrateur (généralement un agent preset Admin) qui coordonne d'autres agents et humains tout au long du cycle de vie AI-DLC au lieu de faire tout le travail lui-même. L'orchestrateur décompose le travail, confie chaque morceau à un propriétaire choisi, lance des relecteurs indépendants comme portes de qualité, et contrôle les portes d'approbation/vérification appartenant aux humains — mais ne déploie jamais seul.
Espace de noms des outils sous OpenClaw. Les noms d'outils nus ci-dessous (par ex.
chorus_pm_assign_idea) sont la forme lisible ; le nom appelable réel est préfixé parchorus__(chorus__chorus_pm_assign_idea). Voir la remarque sur l'espace de noms dans le skillchorusprincipal.
Il complète les autres skills plutôt que de les remplacer :
/yolo— un agent pilote tout le pipeline en solo. L'orchestration est l'inverse : plusieurs agents, chacun possédant une partie, coordonnés par toi./idea,/proposal,/develop,/review,/quick-dev— une étape unique que tu exécutes toi-même. L'orchestration est la couche au-dessus : tu décides qui exécute chaque étape.
Quand utiliser ce skill
Utilise-le quand plus d'un agent (ou agent + humain) va toucher au travail et que quelqu'un doit les maintenir cohérents :
- Tu possèdes un thème / épique / idée conteneur qui se décompose en plusieurs idées enfants indépendantes, et tu veux confier chaque enfant à un travailleur spécifique (cas motivant : un propriétaire de thème donne un enfant à Codex, un autre à un agent Claude dev, un autre à un humain).
- Une proposition approuvée a un DAG de tâches et tu veux plusieurs agents développeurs travaillant les tâches non bloquées en vagues parallèles.
- Tu as besoin d'une relecture adversariale indépendante de la proposition / tâche / fonctionnalité de quelqu'un d'autre avant qu'elle progresse.
- Tu es le propriétaire responsable et tu dois maintenir un assignataire responsable par idée tandis que le travail se déploie.
Prérequis : déléguer des idées nécessite idea:admin ; déléguer des tâches nécessite proposal:write. Exécute d'abord chorus_checkin() pour confirmer ton ensemble de permissions.
Primitives de délégation
Assigner une idée — chorus_pm_assign_idea (idea:admin)
Confie une idée entière à un agent ou utilisateur choisi. Paramètres :
| Param | Signification |
|---|---|
ideaUuid |
L'idée à déléguer |
assigneeType |
"agent" ou "user" |
assigneeUuid |
L'UUID de l'agent/utilisateur choisi (résous les noms avec chorus_search_mentionables) |
instanceUuid |
(optionnel, cibles agent uniquement) épingle le travail à une AgentInstance durable — le lieu (agent, host, cwd) — afin que les réveils atterrissent là où le code vit |
Comportement que tu dois comprendre :
- L'assignataire est réveillé et progresse à partir de l'étape actuelle de l'idée — il ne re-réclame PAS. Si l'idée est
openelle devientelaborating; tout autre statut est préservé. L'assignataire reprend où l'idée est déjà (élaboration, prête-pour-proposition, etc.). - Les cibles agent doivent tenir
idea:write(via un preset commepm_agent/admin_agent, ou une permission explicite) ou l'appel est rejeté. Les cibles utilisateur doivent être dans ta société.instanceUuidest rejeté pour les cibles utilisateur. - Prise de contrôle silencieuse. Réassigner une idée déjà possédée déplace simplement la propriété au nouvel assignataire — il y a un propriétaire à la fois, pas d'invite de confirmation. Utilise ceci intentionnellement, pas par accident.
Assigner une tâche — chorus_pm_assign_task (proposal:write)
Confie une tâche unique à un agent développeur. Paramètres : taskUuid, agentUuid (doit tenir task:write), instanceUuid optionnel. La tâche doit être open ou assigned. L'assignataire est réveillé pour l'exécuter. Utilise ceci pour distribuer les tâches d'une proposition approuvée.
Dériver des idées enfants et les déployer
Le cas de décomposition de thème, de bout en bout :
- Lis l'idée conteneur/thème et son contexte (
chorus_get_idea,chorus_get_documents,chorus_get_comments). - Pour chaque tranche indépendante, crée une idée enfant avec
chorus_pm_create_idea(relie-la au parent dans le corps / viareferences[]). - Assigne chaque enfant à un propriétaire distinct avec
chorus_pm_assign_idea— par ex. un enfant à Codex, un à un agent Claude dev, un à un humain. Chaque enfant a maintenant son propre propriétaire unique et progresse indépendamment. - @mentionne chaque assignataire et le propriétaire du thème pour que la délégation soit visible.
Relecture indépendante comme porte adversariale
Chorus fournit trois skills de relecteur en lecture seule. En tant qu'orchestrateur tu les exécutes aux trois portes et agis selon le jugement — c'est ton principal levier de qualité quand tu n'écris pas toi-même le code.
| Skill de relecteur | Exécute après | Relit |
|---|---|---|
/proposal-reviewer |
une proposition est soumise | qualité du brouillon de proposition (VERDICT sur la proposition) |
/task-reviewer |
une tâche est soumise pour vérification | une tâche vs ses critères d'acceptation (VERDICT sur la tâche) |
/code-reviewer |
la dernière tâche de l'idée est vérifiée | le changement de code agrégé de l'idée — la porte finale de déploiement (VERDICT sur l'idée) |
Génère un sous-agent en lecture seule avec sessions_spawn et instruis-le (dans la tâche de spawn) pour exécuter le skill de relecteur correspondant contre l'entité (passe ideaUuid pour la relecture de code), puis interroge son VERDICT. Si la génération est désactivée par la politique, exécute la procédure du relecteur toi-même en tant que passe de lecture seule ciblée et enregistre le VERDICT via chorus_add_comment. Chacun poste exactement un commentaire VERDICT: PASS / PASS WITH NOTES / FAIL. Les verdicts sont consultatifs — ils ne valident pas automatiquement, ne vérifient pas automatiquement, ne bloquent pas en dur ; tu lis les BLOCKERs et tu décides. Un FAIL signifie router les BLOCKERs en retour pour une correction avant de progresser (pour une relecture de code FAIL, ajoute des tâches de correction à la proposition approuvée via /quick-dev et réexécute une fois qu'elles sont done). Voir /review pour le modèle complet.
Choisir un mode de collaboration
Choisis le mode le plus léger qui correspond à la forme du travail :
| Mode | Utilise quand | Comment tu l'exécutes |
|---|---|---|
| Un propriétaire pilote une idée | Le travail est une fonctionnalité cohérente | Assigne l'idée une fois (chorus_pm_assign_idea) ; ce propriétaire exécute idée → proposition → tâches ; tu contrôles les portes |
| Déployer les enfants sur N agents | Un thème se décompose en tranches indépendantes | Dérive les idées enfants, assigne chacune à un propriétaire distinct ; les enfants s'exécutent en parallèle, chacun propriétaire unique |
| Vagues de tâches parallèles | Une proposition approuvée avec un DAG de tâches | Assigne les tâches actuellement non bloquées (chorus_pm_assign_task) à plusieurs agents dev ; quand les tâches atteignent done, assigne la vague suivante |
| Relecture uniquement | Le travail est déjà produit ailleurs | Génère le relecteur pertinent, lis le VERDICT, et contrôle — pas de nouvelle délégation |
Conseils : démarre étroit. Si un propriétaire unique peut tenir toute la fonctionnalité dans sa tête, préfère propriétaire unique — le surcoût de coordination n'est pas gratuit. Atteins le déploiement seulement quand les tranches sont véritablement indépendantes (portée séparée, élaboration séparable). Utilise les vagues de tâches parallèles seulement après qu'une proposition soit approuvée et son DAG réel ; respecte les dépendances — to_verify ne débloque pas en aval, seul done le fait.
Propriétaire unique & discipline de concurrence
- Un assignataire responsable par idée à la fois. Cela reflète la sémantique du propriétaire unique du daemon : l'idée est la racine d'épingle faisant autorité, et les propositions/tâches/réveils de son propriétaire héritent cette identité. Ne laisse pas une idée ambiguïment « possédée par l'équipe ».
- Ne fais pas de course sur les sessions en double sur le même travail. Deux sessions daemon (ou deux agents) pilotant la même idée/tâche vont entrer en collision sur les transitions d'état et produire des réveils conflictuels. Assigne, puis laisse un propriétaire s'exécuter.
- Épingle avec
instanceUuidquand le travail est attaché à un lieu. Si le code d'une idée enfant vit sur un host/cwd spécifique, épingle l'assignation à cette AgentInstance pour que chaque réveil en aval atterrisse là au lieu d'un daemon aléatoire.
Portes de conversation inversée (tu ne déploies jamais en auto)
Chorus est l'IA propose, les humains vérifient. En tant qu'orchestrateur tu appliques cela, tu ne le contournes pas :
- Porte de proposition. Quand un propriétaire délégué soumet une proposition, ARRÊTE. Exécute le relecteur de proposition, puis remets la décision d'approuver/rejeter au propriétaire humain. Ne t'auto-approuve pas juste parce que tu peux (
proposal:admin). - Porte de vérification. Quand une tâche atteint
to_verify, ARRÊTE. Exécute le relecteur de tâche, puis laisse l'humain vérifier. La permission de vérifier n'est pas l'autorisation de valider en caoutchouc ton propre travail coordonné. - Ne fusionne ou ne pousse jamais. L'orchestrateur pilote le travail jusqu'à « PR prête » et la remet à l'humain — il ne fusionne pas, ne pousse pas, ou ne déploie pas d'une autre manière de façon autonome.
@mentionne le propriétaire à chaque porte pour que la passation soit explicite et vérifiable.
Dériver une idée enfant vs ajouter une tâche vs assigner directement
| Fais ceci | Quand |
|---|---|
Dérive une nouvelle idée enfant (chorus_pm_create_idea + assign) |
La tranche est une portée véritablement séparée qui mérite sa propre élaboration, proposition, et propriétaire — une décomposition de thème, ou une sous-fonctionnalité parallélisable. |
Ajoute une tâche à une proposition approuvée (chorus_create_tasks avec proposalUuid) |
Le travail est une unité discrète de la même fonctionnalité qui a déjà une proposition — par ex. tâches de correction de relecture de code, ou une étape de suivi dans un DAG existant. |
Assigne l'idée/tâche existante directement (chorus_pm_assign_idea / chorus_pm_assign_task) |
Le travail est déjà scindé et a juste besoin d'un (différent) propriétaire ou exécuteur — réassignation, reprise d'une idée bloquée, ou distribution de tâches existantes. |
Règle empirique : nouvelle portée → idée enfant ; unité de même proposition → tâche ; seul le propriétaire change → assigne.