Files
rpa_vision_v3/docs/coordination/README.md
Dom 4cb173a8ec
Some checks failed
tests / Lint (ruff + black) (push) Failing after 1m49s
tests / Tests unitaires (sans GPU) (push) Failing after 1m53s
tests / Tests sécurité (critique) (push) Has been skipped
chore(coordination+docs): watcher mandat AGENTS.md, recadrage POC CLAUDE.md, dette enrichie, loop script robustifié
2026-07-02 13:07:34 +02:00

4.5 KiB

Coordination multi-agents

But: échanger par fichiers courts, ciblés et auditables entre Codex, Claude, Gemini et Dom, tout en capitalisant les décisions, erreurs, corrections et résultats de tests.

Arborescence

  • inbox_codex/ Messages que Codex doit lire et arbitrer.
  • inbox_claude/ Messages que Claude doit lire.
  • inbox_gemini/ Messages que Gemini doit lire quand le canal est utilisé.
  • outbox_gemini/ Messages déposés pour Gemini quand son inbox directe n'est pas le canal actif.
  • active/ Etat courant, files ouvertes, risques et prochaine action.
  • syntheses/ Synthèses datées, lisibles par un humain qui reprend le projet.
  • registre/ Registre des décisions, validations, échecs utiles et reports.
  • index/ Index manuel ou généré des messages importants.
  • archive/YYYY-MM-DD/ Messages traités et sortis du flux actif. Ne pas archiver une conversation en cours sans confirmation Codex.
  • templates/ et TEMPLATE_MESSAGE.md Modèles de message.

Convention

  1. Une question = un fichier.
  2. L'émetteur écrit dans l'inbox du destinataire.
  3. Le destinataire répond dans l'inbox de l'émetteur.
  4. Le nom de fichier suit: YYYY-MM-DD_HHMM_sender-to-recipient_slug.md
  5. Chaque message contient au minimum: Contexte, Constat, Question précise, Contraintes, Attendu, Statut.
  6. Statut usuels: open, ACK, NACK, patched, validated, blocked, archived.
  7. Une réponse doit citer le fichier source dans Répond à.
  8. Quand la boucle est terminée, déplacer les fichiers dans archive/YYYY-MM-DD/. Tant qu'un agent peut encore répondre, laisser le fil dans les inbox.

Style attendu

  • court et factuel
  • références de fichiers/fonctions explicites
  • pas de prose longue
  • pas de code dans les messages de coordination sauf extrait très court si indispensable

Workflow actif

  1. Codex pose une mission dans l'inbox du collègue.
  2. Le collègue répond dans inbox_codex/ avec ACK/NACK.
  3. Codex lit, vérifie, teste, arbitre.
  4. Codex répond dans l'inbox du collègue.
  5. Une synthèse ou une décision durable est recopiée dans syntheses/ ou registre/ avant archivage.

Même règle en sens inverse si Claude initie la demande.

Surveillance automatique

coordination_loop.sh surveille les inbox et cree un declencheur persistant a chaque nouveau message detecte.

Cette surveillance est obligatoire au debut de chaque session pour Codex, Claude et Qwen. Aucun handoff ne doit omettre ce pre-check.

Pre-check debut de session :

  1. docs/coordination/coordination_loop.sh ensure
  2. Lire les messages pertinents pour l'agent courant.
  3. Apres traitement : docs/coordination/coordination_loop.sh ack

Si le watcher ne peut pas etre lance ou verifie, c'est un blocage de reprise a signaler explicitement.

Commandes utiles :

  • docs/coordination/coordination_loop.sh ensure : lance si besoin, scanne, affiche pending.
  • docs/coordination/coordination_loop.sh start 15 : demarre la surveillance.
  • docs/coordination/coordination_loop.sh service-install : installe/met a jour et redemarre le watcher systemd utilisateur persistant.
  • docs/coordination/coordination_loop.sh service-stop : arrete et desactive le watcher systemd utilisateur.
  • docs/coordination/coordination_loop.sh status : etat, compteurs et file unread.
  • docs/coordination/coordination_loop.sh pending : messages detectes non ACK localement.
  • docs/coordination/coordination_loop.sh ack : vide la file unread locale.
  • docs/coordination/coordination_loop.sh events : derniers evenements detectes.

Artefacts crees :

  • .loop_state/unread_messages.tsv : file des messages a traiter.
  • .loop_state/unread_digest.md : digest lisible au debut de session.
  • .loop_state/latest_message.trigger : dernier declencheur.
  • .loop_state/message_events.tsv : journal evenements machine-readable.
  • .loop_state/triggers/*.trigger : un fichier declencheur par message.

Un hook externe peut etre branche avec COORD_LOOP_TRIGGER_CMD. Le hook recoit COORD_MESSAGE_DIR, COORD_MESSAGE_FILE, COORD_MESSAGE_PATH, COORD_MESSAGE_STATUS et COORD_TRIGGER_FILE.

Règle de capitalisation

Un message de coordination est un flux. Une synthèse ou un registre est une mémoire.

Chaque avancée importante doit être convertie en au moins un des artefacts :

  • décision durable dans registre/ ;
  • synthèse de reprise dans syntheses/ ;
  • état courant dans active/ ;
  • entrée d'index dans index/.

Ne pas supprimer les messages bruts : ils servent d'audit trail.