Tenet - un harness de code IA longue durée avec entretien, exécution de DAG, triple critic et messages de steering
(github.com/JeiKeiLim)Bonjour.
Je développe Tenet, un harness d’agent de coding IA capable d’une exécution autonome sur la durée, et je voulais le partager.
Quand on utilise des agents de code IA, ils gèrent plutôt bien les tâches courtes, mais dès qu’on passe à des implémentations qui durent plusieurs heures, cela devient vite incertain.
Les spécifications deviennent floues, les tests tournent mais on ne sait pas s’ils sont suffisants, il est difficile de changer de direction en cours de route, et si la session se coupe, le contexte disparaît avec.
Tenet est un harness conçu pour réduire ce problème.
Plutôt qu’un simple « agent qui tourne longtemps », il se rapproche davantage d’une structure pensée pour conserver la direction et la qualité même sur de longues exécutions.
Il fonctionne globalement selon ce flux.
-
Interview
- D’abord, les exigences sont précisées via un entretien.
- Si nécessaire, une recherche technique est aussi effectuée.
-
Visuals / Architecture
- Il crée des diagrammes d’architecture ou des maquettes UI.
- Pour les travaux UI, il génère plusieurs variations afin de pouvoir choisir d’abord la direction à suivre.
-
Spec / Harness / Scenarios
- Il consigne sous forme de documents la spec d’implémentation, le harness de test/validation et les scénarios.
- Il fixe non seulement « ce qu’il faut construire », mais aussi « selon quels critères cela sera considéré comme validé ».
-
DAG decomposition
- Il découpe le travail en graphe de dépendances.
- Les jobs indépendants peuvent être exécutés en parallèle.
-
Autonomous execution loop
- Chaque job est exécuté, puis évalué une fois terminé.
- Cette boucle a été conçue pour pouvoir tourner longtemps.
Méthode d’évaluation
Chaque job ne passe pas immédiatement au suivant une fois terminé : il doit d’abord franchir 3 critics.
- code critic : l’implémentation correspond-elle à l’intention de la spec ?
- test critic : les tests actuels sont-ils vraiment suffisants pour valider ce job ?
- Playwright e2e eval : cela fonctionne-t-il du point de vue d’un utilisateur réel ?
Un point important était que ces critics examinent les résultats dans un fresh context autant que possible séparé du contexte de l’auteur.
Je voulais réduire le cas où l’agent qui écrit le code valide trop facilement son propre résultat.
Comme je l’ai aussi noté dans le README, surtout côté tests, j’ai considéré que la question importante n’était pas simplement s’il y a des tests, mais si les tests vérifient réellement correctement.
Steering en cours de route
Sur de longues exécutions, il arrive qu’un humain veuille légèrement changer la direction en cours de route.
Dans Tenet, au lieu de réexpliquer toute l’exécution depuis le début,
il suffit d’envoyer un steer message ; il est alors enregistré puis pris en compte dans les jobs concernés par la suite.
Autrement dit,
- il n’est pas nécessaire d’interrompre immédiatement toute la boucle
- et le système reprend au bon moment dans les étapes pertinentes
J’ai accordé beaucoup d’importance à la documentation et aux traces laissées
En construisant cela, ce qui m’importait particulièrement,
c’était non seulement de conserver le résultat, mais aussi de garder la trace des décisions et du travail effectué.
Sous .tenet/, on retrouve ce type d’éléments.
- interview
- spec
- harness
- visuals
- knowledge
- journal
- steer
- status
- SQLite state
L’objectif n’est donc pas tant un agent orienté session qui exécute une fois puis s’arrête,
mais plutôt une structure qui accumule en continu des traces de développement réutilisables pour les tâches suivantes.
Dans l’esprit,
cela se rapproche davantage d’une tentative d’apporter au monde des agents IA
la structure de documentation, de validation et de handoff nécessaire lorsqu’on confie un travail à un freelance ou à un prestataire.
État actuel
Le projet en est encore à ses débuts.
Cela dit, le flux de base est déjà implémenté, et il inclut actuellement notamment les éléments suivants.
- adaptateurs Claude Code / OpenCode / Codex
- serveur MCP + CLI
- orchestration de jobs basée sur DAG
- état persistant basé sur SQLite + WAL
- récupération des orphan jobs
- pipeline d’évaluation à 3 critics
- gestion des steer messages
- structure documentaire
.tenet/
Je l’ai réellement utilisé sur des exécutions assez longues,
et j’ai vérifié qu’il pouvait produire un résultat immédiatement exploitable après *plus de 6 heures d’exécution sans intervention humaine.
L’un des outils que j’utilise tous les jours aujourd’hui est d’ailleurs issu d’un résultat obtenu avec tenet.
Comme il s’agit d’un projet encore très précoce, il reste de nombreuses parties brutes.
Je serais reconnaissant pour tout retour, quel qu’il soit.
Aucun commentaire pour le moment.