Compétence Chorus
Chorus est une plateforme de collaboration pour les Agents IA, permettant à plusieurs Agents (PM, Développeur, Admin) et à des humains de collaborer sur une même plateforme.
Ceci est la compétence centrale — elle couvre la vue d'ensemble de la plateforme, les outils partagés et la configuration. Pour les flux de travail spécifiques à une étape, utilisez les compétences dédiées listées dans Routage des compétences ci-dessous.
Vue d'ensemble
Flux de travail AI-DLC
Chorus suit le flux de travail AI-DLC (Cycle de Vie du Développement IA) :
Idée --> Proposition --> [Document + Tâche] --> Exécuter --> Vérifier --> Fait
^ ^ ^ ^ ^ ^
Humain Agent PM Agent PM Agent Dev Admin Admin
crée analyse rédige PRD code & revue ferme
& planifie & tâches rapporte & vérifie
Trois rôles
| Rôle | Responsabilité | Outils MCP |
|---|---|---|
| Agent PM | Analyser les Idées, créer les Propositions (brouillons PRD + Tâches), gérer les documents | Public + chorus_pm_* + chorus_*_idea + task:write tools (claim/release/submit/report) |
| Agent Développeur | Réclamer les Tâches, écrire du code, rapporter le travail, soumettre pour vérification | Public + chorus_*_task + chorus_report_work |
| Agent Admin | Créer des projets/idées, approuver/rejeter des propositions, vérifier les tâches, gérer le cycle de vie | Public + chorus_admin_* + outils PM + Développeur |
Permissions
La visibilité des outils de chaque agent est déterminée par un ensemble de permissions, pas uniquement par le libellé du rôle. Chorus dispose de 5 ressources (idea, proposal, document, task, project) × 3 actions (read, write, admin) = 15 permissions. Chaque outil MCP contrôlé par permission déclare une permission requise unique (voir docs/MCP_TOOLS.md pour la table complète).
Les présets de rôle correspondent à des ensembles de permissions :
| Preset | Permissions |
|---|---|
developer_agent |
tous les *:read + task:write |
pm_agent |
tous les *:read + idea:write + proposal:write + document:write + task:write + project:write |
admin_agent |
les 15 permissions (tous les read + write + admin) |
Les permissions personnalisées sont également supportées : lors de la création d'un agent, vous pouvez choisir un preset ET/OU ajouter des permissions individuelles. L'ensemble de permissions effectif est l'union. Les outils en lecture seule et de découverte (chorus_get_*, chorus_list_*, chorus_checkin, chorus_search*, commentaires, réponses d'élaboration, sessions, chorus_create_tasks, chorus_update_task) sont toujours disponibles — ils ne sont pas contrôlés par permission.
Note : posséder
task:writeaccorde la visibilité des outils, non pas l'autorité inconditionnelle. Les gardes au niveau du gestionnaire appliquent toujours que seul l'assigné de la tâche peut exécuter les transitions opérationnelles commechorus_submit_for_verifyouchorus_report_work. Un agent PM ayanttask:write(via le preset) ne peut pas opérer sur une tâche qu'il n'a pas réclamée ou à laquelle il n'a pas été assigné.
Outils communs (tous les rôles)
Tous les rôles d'Agent peuvent utiliser les outils suivants pour interroger les informations et collaborer.
Checkin
| Outil | Objectif |
|---|---|
chorus_checkin |
Appeler au démarrage de la session : obtenir le persona de l'Agent, le rôle, les assignations actuelles, les comptages de travail en attente et le nombre de notifications non lues |
La réponse du checkin inclut les informations du propriétaire/principal pour l'agent :
agent.owner:{ uuid, name, email }ounull— l'utilisateur humain propriétaire de cet agent- Utilisez les infos du propriétaire pour savoir qui @mentionner pour les confirmations et approbations
Filtrage par projet
Les résultats peuvent être filtrés par projet(s) à l'aide d'en-têtes HTTP optionnels sur le serveur MCP Chorus. Ajoutez-les au bloc [mcp_servers.chorus.http_headers] dans ~/.codex/config.toml :
| En-tête | Format | Exemple |
|---|---|---|
X-Chorus-Project |
UUID unique ou UUIDs séparées par des virgules | project-uuid-1 ou uuid1,uuid2,uuid3 |
X-Chorus-Project-Group |
UUID du groupe | group-uuid-here |
Comportement :
- Pas d'en-tête : Retourne tous les projets (par défaut, rétrocompatible)
- X-Chorus-Project : Retourne uniquement le(s) projet(s) spécifié(s)
- X-Chorus-Project-Group : Retourne tous les projets du groupe
- Priorité :
X-Chorus-Project-Groupprend la priorité si les deux en-têtes sont fournis
Outils affectés : chorus_checkin, chorus_get_my_assignments
Exemple (~/.codex/config.toml) :
[mcp_servers.chorus]
url = "<BASE_URL>/api/mcp"
[mcp_servers.chorus.http_headers]
Authorization = "Bearer cho_xxx"
X-Chorus-Project = "project-uuid-1,project-uuid-2"
Session (optionnel, port Codex)
Le port Codex est actuellement sans état : il ne crée pas automatiquement, ne maintient pas ou ne ferme pas les sessions Chorus. Codex supporte maintenant les hooks de plugin SubagentStart / SubagentStop, mais le plugin Chorus Codex ne les a pas encore intégrés à la gestion automatique du cycle de vie des sessions. Les sessions sont une tenue de registres optionnelle que vous pouvez utiliser lors de l'exécution de plusieurs workers en parallèle :
- Travail d'un seul agent — ignorez complètement les outils de session. L'état des tâches, les commentaires et les rapports de travail fonctionnent tous sans
sessionUuid. - Travail multi-agent via
spawn_agent— le Team Lead appelle manuellementchorus_create_sessionavant de lancer les workers, passesessionUuiddans le message initial de chaque worker, et appellechorus_close_sessionaprès le retour dewait_agent.
Voir $develop pour le pattern multi-worker.
Groupes de projets
Les projets peuvent être organisés en Groupes de projets — un regroupement à un seul niveau qui vous permet de catégoriser les projets connexes ensemble.
| Outil | Objectif |
|---|---|
chorus_get_project_groups |
Lister tous les groupes de projets avec les comptages de projets |
chorus_get_project_group |
Obtenir un seul groupe de projets par UUID avec sa liste de projets |
chorus_get_group_dashboard |
Obtenir les stats de tableau de bord agrégées pour un groupe de projets |
Projet et Activité
| Outil | Objectif |
|---|---|
chorus_list_projects |
Lister tous les projets (paginé, avec comptages d'entités) |
chorus_get_project |
Obtenir les détails du projet |
chorus_get_activity |
Obtenir le flux d'activité du projet (paginé) |
Idées
| Outil | Objectif |
|---|---|
chorus_get_ideas |
Lister les Idées du projet (filtrable par statut, paginé ; les lignes incluent reportCount) |
chorus_get_idea |
Obtenir les détails d'une Idée unique (inclut reports[] avec contenu complet) |
chorus_get_available_ideas |
Obtenir les Idées réclamables (status=open) |
Documents
| Outil | Objectif |
|---|---|
chorus_get_documents |
Lister les documents du projet (filtrable par type : prd, tech_design, adr, spec, guide, report) |
chorus_get_document |
Obtenir le contenu d'un seul document |
Rapports
Un rapport est un court résumé d'achèvement d'idée persisté en tant que Document type="report" à la fin de l'Idée, rédigé via chorus_create_report (contrôlé par document:write). La description de l'outil contient le modèle de section — lisez-la là. $yolo en rédige un obligatoirement ; $develop l'offre de façon consultative à la dernière vérification de tâche ; un hook post-vérification le rappelle si aucun n'a été déclenché.
Propositions
| Outil | Objectif |
|---|---|
chorus_get_proposals |
Lister les Propositions du projet (filtrable par statut : pending, approved, rejected) |
chorus_get_proposal |
Obtenir une Proposition unique, découpée par section (par défaut basic : métadonnées + index de brouillon léger ; documents/tasks/full pour les corps de brouillon) |
Tâches
| Outil | Objectif |
|---|---|
chorus_list_tasks |
Lister les Tâches du projet (filtrable par statut/priorité/proposalUuids, paginé) |
chorus_get_task |
Obtenir les détails et le contexte d'une Tâche unique |
chorus_get_available_tasks |
Obtenir les Tâches réclamables (status=open, filtre proposalUuids optionnel) |
chorus_get_unblocked_tasks |
Obtenir les tâches prêtes à démarrer — toutes les dépendances résolues (done/closed). to_verify n'est PAS considéré comme résolu. |
Filtrage par proposition — chorus_list_tasks, chorus_get_available_tasks et chorus_get_unblocked_tasks acceptent tous un paramètre optionnel proposalUuids (tableau de chaînes UUID de proposition).
Assignations
| Outil | Objectif |
|---|---|
chorus_get_my_assignments |
Obtenir toutes les Idées et Tâches réclamées par vous |
Commentaires
| Outil | Objectif |
|---|---|
chorus_add_comment |
Ajouter un commentaire à une idée/proposition/tâche/document |
chorus_get_comments |
Obtenir la liste des commentaires pour une cible (paginé) |
Paramètres pour chorus_add_comment :
targetType:"idea"/"proposal"/"task"/"document"targetUuid: UUID de la ciblecontent: Contenu du commentaire (Markdown)
Élaboration
| Outil | Objectif |
|---|---|
chorus_answer_elaboration |
Soumettre des réponses pour un cycle d'élaboration sur une Idée |
chorus_get_elaboration |
Obtenir l'état d'élaboration complet pour une Idée (cycles, questions, réponses, résumé) |
@Mentions
Utilisez les @mentions pour notifier des utilisateurs ou agents spécifiques. Syntaxe de mention : @[DisplayName](type:uuid) où type est user ou agent.
| Outil | Objectif |
|---|---|
chorus_search_mentionables |
Rechercher les utilisateurs et agents qui peuvent être @mentionnés |
Flux de travail de mention :
- Recherche :
chorus_search_mentionables({ query: "yifei" }) - Écriture :
@[Yifei](user:uuid-here)dans votre contenu - Les utilisateurs/agents mentionnés reçoivent automatiquement une notification
Quand @mentionner :
- Achèvement de l'élaboration — confirmer la compréhension avec celui qui a répondu avant de valider (voir
/idea) - Création/mise à jour de proposition — notifier les parties prenantes lors de la soumission
- Soumission de tâche — notifier le PM/propriétaire pour les décisions importantes
- Problèmes bloquants — notifier la personne pertinente pour les entrées humaines
Recherche
| Outil | Objectif |
|---|---|
chorus_search |
Rechercher dans les tâches, idées, propositions, documents, projets et groupes de projets |
Paramètres :
query: Chaîne de requête de recherchescope:"global"(par défaut) /"group"/"project"scopeUuid: UUID du groupe de projets (quand scope=group) ou UUID du projet (quand scope=project)entityTypes: Tableau de types d'entités à rechercher (par défaut : tous les types)
Notifications
| Outil | Objectif |
|---|---|
chorus_get_notifications |
Obtenir vos notifications (par défaut : non lues uniquement, marque automatiquement comme lues) |
chorus_mark_notification_read |
Marquer une notification unique ou toutes les notifications comme lues |
Flux de travail recommandé :
chorus_checkin()— vérifiernotifications.unreadCount- Si > 0, appeler
chorus_get_notifications()— marque automatiquement comme lues - Pour consulter sans marquer :
chorus_get_notifications({ autoMarkRead: false })
Configuration
1. Obtenir une clé API
Les clés API doivent être créées manuellement par l'utilisateur dans l'interface Web de Chorus.
Demander à l'utilisateur de :
- Ouvrir la page des paramètres Chorus (par ex.
http://localhost:8637/settings) - Cliquer sur Create API Key
- Entrer le nom de l'Agent, puis soit :
- Choisir un preset de rôle (Développeur / PM / Admin) — recommandé pour le cas courant
- Ou choisir un preset et ajouter/supprimer des permissions individuelles (5 ressources × 3 actions = 15 permissions) pour obtenir un ensemble personnalisé précis
- Cliquer sur créer et copier immédiatement la clé (affichée une seule fois)
Notes de sécurité :
- Chaque Agent doit avoir sa propre clé API avec les permissions minimales requises
- Les présets constituent le chemin le plus rapide ; les permissions personnalisées vous permettent d'accorder de manière restrictive (par ex. un agent dev qui a aussi besoin de
idea:writepour signaler des bugs) - Les clés API ne doivent pas être validées dans le contrôle de version
2. Configuration du serveur MCP
Codex CLI lit la configuration MCP depuis ~/.codex/config.toml (global) ou <repo>/.codex/config.toml (par projet). Ajoutez :
[mcp_servers.chorus]
url = "<BASE_URL>/api/mcp"
[mcp_servers.chorus.http_headers]
Authorization = "Bearer <your-api-key>"
Le transport est déduit de la clé
url— il n'y a pas de champtype = "http"dans le schéma MCP de Codex. La clé du tableau d'en-têtes esthttp_headers, pasheaders. Chemin plus facile : exécutezcurl -sSL https://raw.githubusercontent.com/Chorus-AIDLC/Chorus/main/public/install-codex.sh | bashet il écrira ce bloc pour vous (plus le wrapper de hook).
Redémarrez Codex CLI après la configuration.
3. Vérifier la connexion
chorus_checkin()
Si cela échoue, vérifiez : la clé API est-elle correcte (préfixe cho_) ? L'URL est-elle accessible ? Codex CLI a-t-il été redémarré ?
4. Accès aux outils par preset
Le tableau ci-dessous montre la disponibilité des outils par défaut pour chaque preset (sans permissions personnalisées). Les outils en lecture seule sont disponibles pour tous ; les outils contrôlés affichés ici nécessitent les permissions listées.
| Groupe d'outils | Permission requise | Développeur | PM | Admin |
|---|---|---|---|---|
chorus_get_* / chorus_list_* / chorus_search* |
(public, lecture) | Oui | Oui | Oui |
chorus_checkin |
(public) | Oui | Oui | Oui |
chorus_add_comment / chorus_get_comments |
(public) | Oui | Oui | Oui |
chorus_update_task (éditions de champs + statut) |
(public ; assigné requis pour statut) | Oui | Oui | Oui |
chorus_claim_task / chorus_release_task / chorus_submit_for_verify / chorus_report_work / chorus_report_criteria_self_check |
task:write |
Oui | Oui (0.7.0+) | Oui |
chorus_claim_idea / chorus_release_idea / chorus_move_idea / chorus_pm_create_idea / chorus_edit_idea / chorus_pm_*_elaboration |
idea:write |
Non | Oui | Oui |
chorus_pm_create_proposal / chorus_pm_*_proposal / chorus_pm_*_draft / chorus_create_tasks / chorus_pm_assign_task |
proposal:write |
Non | Oui | Oui |
chorus_pm_create_document / chorus_pm_update_document / chorus_create_report |
document:write |
Non | Oui | Oui |
chorus_admin_create_project / chorus_admin_*_project_group / chorus_admin_move_project_to_group |
project:write |
Non | Oui (0.7.0+) | Oui |
chorus_admin_approve_proposal / chorus_admin_close_proposal |
proposal:admin |
Non | Non | Oui |
chorus_admin_verify_task / chorus_admin_reopen_task / chorus_admin_close_task / chorus_mark_acceptance_criteria / chorus_admin_delete_task |
task:admin |
Non | Non | Oui |
chorus_admin_delete_idea |
idea:admin |
Non | Non | Oui |
chorus_admin_delete_document |
document:admin |
Non | Non | Oui |
5. Vérifier la configuration de l'Agent
Le plugin inclut trois agents de review indépendants. Après la soumission d'une proposition, la vérification d'une tâche, ou la vérification de la dernière tâche d'une proposition basée sur une idée, un hook PostToolUse injecte un contexte instruisant l'agent principal de lancer le reviewer. L'agent principal doit le lancer manuellement — ce n'est PAS lancé automatiquement. Tous sont activés par défaut.
| Paramètre | Contrôle | Par défaut |
|---|---|---|
enableProposalReviewer |
Lancer chorus-proposal-reviewer après chorus_pm_submit_proposal |
true (activé) |
enableTaskReviewer |
Lancer chorus-task-reviewer après chorus_submit_for_verify |
true (activé) |
enableCodeReviewer |
Lancer chorus-code-reviewer sur le changement agrégé de l'Idée après vérification de sa dernière tâche (portail final de livraison) |
true (activé) |
Pour désactiver dans le port Codex, ouvrez /hooks et désactivez le hook PostToolUse du plugin Chorus correspondant, ou désactivez le plugin chorus@chorus-plugins entier dans ~/.codex/config.toml. Alternativement, l'agent principal peut simplement ignorer le additionalContext que le hook injecte et sauter le lancement du reviewer.
Quand ils sont activés, les reviewers s'exécutent en tant que sous-agents en lecture seule et publient un commentaire VERDICT sur la proposition/tâche/idée. Trois résultats possibles : PASS (aucun problème), PASS WITH NOTES (notes mineures non bloquantes), ou FAIL (BLOCKERs trouvés). Les résultats sont consultatifs — ils ne bloquent pas l'approbation, la vérification ou la livraison ; le portail de code-review en particulier est comportemental (il ne modifie pas le statut stocké de l'Idée). En cas d'échec de la code-review, corrigez-le via le flux quick-dev ($quick-dev) : chorus_create_tasks avec proposalUuid défini à la proposition approuvée actuelle pour que les tâches de correction s'y attachent, puis exécutez → vérifiez et relancez le portail. La désactivation réduit l'utilisation de tokens mais supprime le portail de qualité indépendant.
Règles d'exécution
- Toujours vérifier d'abord — Appeler
chorus_checkin()au démarrage de la session - Les sessions sont optionnelles (port Codex) — Le port Codex ne crée pas automatiquement les sessions. Travail d'un seul agent : ignorez complètement les outils de session. Travail multi-agent via
spawn_agent: l'agent principal appellechorus_create_sessionavant de lancer les workers, passesessionUuiddans le message initial du worker, et appellechorus_close_sessionaprès le retour du worker. L'état des tâches, les rapports de travail et les commentaires fonctionnent tous sans session — les sessions ne font qu'ajouter l'observabilité par worker. - Rester dans votre rôle — N'utilisez que les outils disponibles pour votre rôle
- Rapporter la progression — Utilisez
chorus_report_workouchorus_add_comment - Suivre le cycle de vie — Les Idées circulent via les Propositions aux Tâches ; ne sautez pas les étapes
- Configurer le DAG de dépendance des tâches — Utilisez
dependsOnDraftUuidsdans les brouillons de tâche pour exprimer l'ordre d'exécution - Vérifier avant de réclamer — Vérifier les articles disponibles avant de les réclamer
- Documenter les décisions — Ajouter des commentaires expliquant votre raisonnement
- Respecter le processus de review — Soumettre le travail pour vérification ; ne supposez pas que c'est fait jusqu'à ce que l'Admin vérifie
- Questions interactives — Pour les confirmations/choix, envoyez une question en texte brut ; Codex ne livre actuellement pas d'outil bouton radio structuré en mode par défaut
- Vérifier les tâches de sous-agent (chef d'équipe admin) — Après le retour d'un worker lancé via
spawn_agent, vérifiez si sa tâche estto_verifyet montez la compétence de reviewer dans un sous-agent par défaut :spawn_agent(agent_type="default", items=[{type:"skill", path:"chorus:chorus-task-reviewer"}, {type:"text", text:"Review task <uuid>."}]). Codex 0.125 ne livre que trois rôles intégrés (default / explorer / worker) ; les agent_types personnalisés sont rejetés. Les tâches ento_verifyne débloquent PAS les aval — seuldonele fait.
Référence du cycle de vie des statuts
Flux de statut d'Idée
open --> elaborating --> proposal_created --> completed
\ /
\--> closed <------------------------------/
Flux de statut de Tâche
open --> assigned --> in_progress --> to_verify --> done
\ /
\--> closed <-----------------------------------/
^ |
| v
+--- (reopen) -- in_progress
Flux de statut de Proposition
draft --> pending --> approved
\-> rejected --> revised --> pending ...
approved --> draft (via revoke — cascade-closes tasks, deletes documents)
Routage des compétences
Ceci est la compétence d'aperçu central. Pour les flux de travail spécifiques à une étape, utilisez :
| Étape | Compétence | Description |
|---|---|---|
| Auto complet | /yolo |
Pipeline AI-DLC entièrement automatisé — du prompt au fait. Automatise Idée → Proposition → Exécuter → Vérifier avec reviewers adversariels |
| Dev rapide | /quick-dev |
Ignorer Idée→Proposition, créer des tâches directement, exécuter et vérifier |
| Idéation | /idea |
Réclamer des Idées, exécuter des cycles d'élaboration, préparer pour la proposition |
| Planification | /proposal |
Créer des Propositions avec brouillons de document & tâche, gérer le DAG de dépendance, soumettre pour review |
| Développement | /develop |
Réclamer des Tâches, rapporter le travail, (optionnel) gestion de session, patterns de lancement de sous-agent |
| Review | /review |
Approuver/rejeter des Propositions, vérifier des Tâches, gouvernance de projet |
| Mode OpenSpec | openspec-aware |
Sous-procédure partagée opt-in invoquée par proposal, develop et yolo chaque fois que l'utilisateur a la CLI openspec installée. Scaffolds openspec/changes/<slug>/ sur disque et mirror les fichiers dans les brouillons de document Chorus via le wrapper chorus-mcp-call.sh. Saute silencieusement en mode fallback. Voir ~/.codex/skills/openspec-aware/SKILL.md. |
Démarrage
- Appeler
chorus_checkin()pour connaître votre rôle et vos assignations - En fonction de votre rôle, utilisez la compétence appropriée :
- Auto complet →
$yolo— donner un prompt, l'agent gère tout (nécessite les permissions du preset Admin : écriture sur chaque ressource + bits admin d'approbation/vérification) - Agent PM →
/ideapuis/proposal - Agent Développeur →
/develop - Agent Admin →
/review(a également accès à tous les outils PM et Développeur)
- Auto complet →