Ce billet fige le plan d'implémentation pour l'observabilité des agents VFG : architecture retenue, contrats d'événements, hooks multi-clients, Chronowflow, proxy Ollama, scripts Windows, tutoriel opérateur, handoffs et validation finale. Objectif : voir qui travaille où, sans bloquer le prompt et sans exposer de secrets.
Architecture retenue
Chaîne unique
Hooks agents → VFGate :5191 → FG_Chronos :4340 → Chronowflow :4477
Enrichissement optionnel
Ollama :11434 → ai-usage-hub :11435 → VFGate
Décisions (ADR)
- Les hooks natifs déclenchent la télémétrie : un skill ou un appel MCP dépendrait du comportement du modèle.
- VFGate reçoit et route les événements.
- FG_Chronos constitue le ledger temporel durable.
- Chronowflow devient la vue principale détaillée.
- Cockpit reste la synthèse globale, mais son adaptation est différée tant que son WIP actuel est exclu.
- Les pannes de télémétrie sont non bloquantes.
- Les collisions de répertoire produisent une alerte rouge sans refuser le prompt.
- Aucun prompt complet n'est conservé : aperçu masqué de 120 caractères maximum.
Préparation, Git et protection du travail existant
- Ne modifier ni committer aucun fichier de FG_Pulse ou VFG_Cockpit.
- Ne pas inclure les autres dossiers non suivis du méta-dépôt VFG-Workspace.
- Auditer et tester FG_Chronos, puis créer un commit de référence limité exclusivement à
FG_Chronos/. - Vérifier Chronowflow propre et synchronisé avant modification.
- Vérifier VFGate en lecture seule ; utiliser son API existante sans modifier le dépôt si possible.
- Cloner
FGDidou/ai-usage-hubdansD:\VFG_PT__\_dev\ai-usage-hub.
Avant chaque tâche
- relever le commit de départ et l'état Git ;
- refuser de commencer si un changement extérieur apparaît dans les fichiers attribués ;
- enregistrer le périmètre dans le handoff.
Après chaque tâche
- tests ciblés ;
- mise à jour du handoff local ;
- commit atomique ;
- enregistrement du hash, des tests et des fichiers touchés dans le handoff global.
Séquence de commits prévue
chore(chronos): track temporal ledger baselinefeat(chronos): add agent turn event contractfeat(chronos): relay agent presence from vfgatefeat(presence): add cross-client hook emitter and installerfeat(chronowflow): display live agent sessionsfeat(ai-usage): publish ollama request telemetryfeat(runtime): autostart local observability stackdocs: add setup tutorial and recovery handoff
Aucun push distant automatique : les commits restent locaux jusqu'à validation globale.
Contrats et comportement
Topic VFGate
Publier sous routing.topic = "agent.presence" :
agent.turn.startedagent.turn.progressagent.turn.completedagent.turn.interruptedagent.turn.failedagent.subagent.startedagent.subagent.completed
Payload normalisé
client,provider,modelsession_id,turn_id,parent_agent_idcwd,repo_root,git_branchtask_previewtool_count,occurred_at
Résoudre le dépôt avec git rev-parse --show-toplevel ; utiliser cwd en secours.
FG_Chronos
- Ajouter
agent.turnaux types FG_Chronos. - Transformer chaque VME en événement Chronos déterministe
CHR-VME-{vme_id}afin que les reprises ne créent aucun doublon. - Ajouter
GET /v1/query/agents/active, qui retourne :- tours et sous-agents actifs ;
- durée et dernière activité ;
- progression par nombre d'outils ;
- répertoires normalisés ;
- groupes de collisions.
Relais et résilience
- Le relais VFGate → Chronos interroge le journal toutes les 500 ms et conserve un checkpoint local.
- Si VFGate est indisponible, l'émetteur écrit dans une file JSONL locale protégée contre les écritures concurrentes, puis quitte avec succès en moins de 500 ms.
- L'aperçu de tâche est nettoyé des retours ligne et motifs de secrets avant troncature. Le prompt brut ne quitte jamais le processus du hook.
Hooks, règle et skill obligatoires
Créer un seul émetteur Node et un skill canonique vfg-agent-presence.
Configuration fusionnée automatiquement, sans écraser les entrées existantes :
| Client | Événements |
|---|---|
| Codex | UserPromptSubmit, PostToolUse, PostToolUseFailure, Stop, Interrupt, SubagentStart/Stop |
| Claude Code | événements correspondants |
| Cursor | beforeSubmitPrompt, postToolUse, postToolUseFailure, stop, sessionEnd, subagentStart/Stop |
| Kimi CLI | UserPromptSubmit, PostToolUse, Stop, Interrupt, SessionHeartbeat, SubagentStart/Stop |
Le skill / rule impose
- un agent = une tâche = un répertoire ou worktree exclusif ;
- interdiction de neutraliser le hook ;
- vérification du répertoire avant travail ;
- absence de secrets dans le titre de tâche ;
- signalement de toute collision ;
- télémétrie non bloquante ;
- mise à jour du handoff avant arrêt ou transfert.
Adaptateurs
- Codex : skill utilisateur et instruction globale.
- Claude Code : skill utilisateur et instruction globale.
- Cursor : règle
alwaysApply. - Kimi : plugin activé avec chargement automatique du skill.
Le hook reste la garantie technique même si le modèle n'invoque pas le skill.
Chronowflow et ai-usage-hub
Chronowflow
- Remplacer le flux simulé par les événements FG_Chronos.
- Conserver les captures manuelles dans une couche distincte.
- Ajouter une grille de carrés au-dessus du chronarbre :
- vert pulsé : travail actif ;
- ambre : activité devenue ancienne ;
- gris : terminé, puis masqué après 60 secondes ;
- rouge : interruption ou échec ;
- contour rouge : plusieurs sessions actives dans le même dépôt.
- Afficher client, modèle, dépôt, branche, aperçu, durée, outils et dernière activité.
- Un clic sélectionne la session et son fil chronologique.
- Reconstruire entièrement l'état après rechargement depuis Chronos, sans dépendre de
localStorage.
ai-usage-hub
- Faire transiter Ollama par
:11435, avec l'instance réelle sur:11434. - Publier début, fin, modèle, durée et tokens vers VFGate.
- Corréler la requête au tour actif lorsqu'une correspondance unique existe.
- Une requête Ollama directe sans hook reste visible comme « répertoire inconnu ».
- Ne pas forcer Codex, Claude ou Kimi cloud à utiliser le proxy : leurs hooks restent la source de présence.
Configuration automatique Windows
Fournir quatre commandes idempotentes.
install-agent-presence.ps1
- sauvegarde horodatée des configurations ;
- fusion des hooks JSON/TOML ;
- installation du skill et des règles ;
- configuration des URL locales ;
- installation de la tâche planifiée.
start-agent-presence.ps1
- vérifie les ports ;
- démarre les processus manquants en fenêtres masquées ;
- attend les healthchecks ;
- ouvre Chronowflow.
doctor-agent-presence.ps1
- vérifie versions, hooks, tokens, ports, processus, relais et fraîcheur des événements ;
- n'affiche jamais les secrets.
uninstall-agent-presence.ps1
- retire seulement les blocs identifiés comme gérés ;
- restaure les sauvegardes si demandé ;
- retire la tâche planifiée sans supprimer les données Chronos.
Tâche planifiée VFG-Agent-Presence
Démarre à l'ouverture de session utilisateur et lance :
- VFGate
:5191 - FG_Chronos
:4340 - Chronowflow
:4477 - ai-usage-hub
:11435 - Ollama
:11434si nécessaire
Elle utilise les droits utilisateur courants et ne publie aucun service hors de 127.0.0.1.
Tutoriel livré
Créer un tutoriel opérateur expliquant :
- L'architecture et le rôle de chaque service.
- L'installation automatique en une commande.
- La vérification avec
doctor. - Le premier prompt Codex dans VS Code.
- Les essais Claude Code, Cursor et Kimi.
- L'utilisation d'Ollama par le proxy.
- La signification des couleurs.
- La création d'un worktree par tâche.
- Le diagnostic d'un carré absent ou bloqué.
- La consultation des événements VFGate et Chronos.
- Le redémarrage manuel de la pile.
- La désinstallation et la restauration des configurations.
- La future activation du résumé Cockpit lorsque son WIP sera libéré.
- La future bascule VPS/Tailscale sans changer le format d'événement.
Handoff et résistance à la surcharge de contexte
Maintenir un handoff global unique avec :
- objectif et architecture ;
- décisions et raisons ;
- ports et endpoints ;
- contrat d'événement ;
- état de chaque tâche ;
- propriétaire et répertoire exclusif ;
- commits réalisés par dépôt ;
- tests passés et échecs connus ;
- configurations installées et sauvegardes ;
- prochaine action exacte ;
- procédure de reprise après compaction ou changement d'agent.
Chaque dépôt modifié conserve aussi un handoff court lié au handoff global.
Après une compaction de contexte, l'agent doit reprendre exclusivement depuis :
- le handoff global ;
- le handoff du dépôt ;
git status;- les derniers commits ;
- les résultats de tests consignés.
Aucune décision importante ne doit exister uniquement dans la conversation.
Organisation en sous-agents
Utiliser des sous-agents légers uniquement pour des tâches bornées, avec un seul propriétaire par dépôt :
- Agent Chronos : contrat, stockage, relais et requête active.
- Agent Chronowflow : API de lecture et interface.
- Agent ai-usage-hub : proxy Ollama et enrichissement.
- Agent principal : architecture, configuration globale, validation croisée, handoffs et commits du méta-dépôt.
Règles de coordination
- jamais deux agents dans le même dépôt ou git worktree ;
- chaque agent reçoit fichiers autorisés, critères d'acceptation et commande de test ;
- aucun agent ne pousse au distant ;
- un agent ne termine pas sans commit atomique et compte rendu ;
- le principal vérifie le commit et actualise le handoff avant la vague suivante ;
- les tâches dépendantes attendent le commit du contrat Chronos ;
- maximum trois sous-agents simultanés, le quatrième emplacement restant au coordinateur.
Validation finale
- Carré visible moins de deux secondes après un prompt.
- Codex, Claude Code, Cursor et Kimi identifiés correctement.
- Sous-agents visibles séparément.
- Collision du même dépôt visible dans Chronowflow sans blocage.
- Progression actualisée après les outils.
- Stop, interruption et erreur représentés correctement.
- Requête Ollama enregistrée avec modèle, durée et tokens.
- Rechargement de Chronowflow reconstruit les sessions.
- Panne VFGate/Chronos sans blocage du prompt, puis replay sans doublon.
- Aucun prompt complet ou secret présent dans VFGate, Chronos, logs ou handoffs.
- Installation et désinstallation rejouables deux fois sans doublon.
- Redémarrage Windows validé avec lancement automatique.
- Tous les tests des dépôts modifiés passent.
- FG_Pulse et VFG_Cockpit restent bit-à-bit inchangés.