Coordonner le travail entre agents de codage
Vous êtes le coordinateur : vous possédez la définition de la tâche, examinez chaque livrable et décidez de la suite. Chaque autre agent est un travailleur : il reçoit un cahier des charges, produit un artefact et s'arrête. Il n'existe pas de bus de messages inter-fournisseurs, donc la coordination se fait au tour par tour et par l'intermédiaire de fichiers :
vous écrivez task.md -> le travailleur s'exécute sans interaction -> le travailleur écrit result.md ->
vous lisez, vérifiez, décidez du prochain tour
Si agent-sync est installé, exécutez agent sync avant de déléguer afin que chaque travailleur commence avec la même mémoire synthétisée que vous.
1. Écrire le répertoire de la tâche
task/
task.md # le cahier des charges (voir le contrat ci-dessous)
...entrées... # tout ce dont le travailleur a besoin ; les travailleurs n'ont aucun autre contexte
result.md # le travailleur écrit ce fichier ; son existence signale la fin
task.md est un brief pour sous-traitant et doit contenir :
- l'objectif, en un paragraphe ;
- le livrable exact (un fichier nommé) ;
- une définition vérifiable de ce qui est terminé ;
- l'instruction de s'arrêter après avoir écrit le livrable ;
- les règles de verrou ou de worktree de la section 2 lorsque le travailleur modifie un arbre partagé.
2. Choisir le mode de partage AVANT d'invoquer quiconque
Règle zéro : deux agents ne doivent jamais modifier le même arbre de travail en même temps.
| Situation | Mode |
|---|---|
| Le travailleur lit seulement (révision, analyse, second avis) | Même répertoire, pas de verrou |
| Éditions alternées sur un même arbre | Même répertoire + verrou mkdir |
| Tentatives parallèles ou sous-tâches parallèles touchant des fichiers | Un git worktree par travailleur |
| Deux agents modifiant un arbre simultanément | Jamais ; restructurer |
Verrou dans le même répertoire (mkdir est atomique ; mettez ces instructions dans task.md aussi) :
until mkdir .agent-lock 2>/dev/null; do sleep 1; done # acquérir
echo "$(whoami):$$" > .agent-lock/owner
# ... travail ...
rm -rf .agent-lock # libérer
Ne jamais faire expirer automatiquement un verrou par âge : un travailleur lent est identique à un travailleur mort. Vérifiez que le processus du travailleur est mort avant de supprimer un verrou périmé.
Mode Worktree : git worktree add ../task-<worker> -b agent/<worker> par travailleur, les travailleurs ne poussent jamais et ne touchent jamais aux arbres des autres, le checkout principal reste en lecture seule, et vous (le coordinateur) effectuez toutes les fusions comme étape sérialisée unique.
3. Invoquer le travailleur sans interaction
| Travailleur | Commande |
|---|---|
| Claude Code | claude -p "Lisez task.md dans ce répertoire et terminez-le." |
| Codex CLI | codex exec --skip-git-repo-check --sandbox workspace-write "Lisez task.md dans ce répertoire et terminez-le." </dev/null |
| Gemini CLI | gemini -p "Lisez task.md dans ce répertoire et terminez-le." |
Règles apprises à la dure :
- Exécutez le travailleur depuis l'intérieur du répertoire de la tâche et limitez son accès en écriture à celui-ci.
- Fermez stdin (
</dev/null) pour tout travailleur en arrière-plan, sinon il peut rester bloqué en attendant une entrée. - Codex refuse les répertoires non suivis par Git sans
--skip-git-repo-check.
4. Vérifier, puis décider
- La parole du travailleur n'est pas le livrable. Lisez
result.mdet vérifiez-le par rapport à la définition de ce qui est terminé ; pour le code, exécutez vous-même les tests. - Un livrable manquant ou incorrect donne lieu à un nouveau tour avec un cahier des charges plus précis, pas à une réexécution du même.
- Vous restez responsable de tout ce que vous acceptez : examinez le diff d'un travailleur comme vous le feriez pour la PR d'un sous-traitant humain.
Limites
- Ne donnez jamais à un travailleur des identifiants, des droits de déploiement ou un accès à des publics réels ; les travailleurs produisent des artefacts, le coordinateur (avec l'utilisateur) les livre.
- N'exécutez jamais ce protocole pour paralléliser des modifications dans un seul arbre sans verrous ou worktrees, même pour des tâches "rapides".
- L'utilisateur décide quel agent joue le rôle de coordinateur ; ne déléguez pas la coordination à un travailleur.