Changer le thème

Utiliser LazyCodex avec Codex : mémoire de projet, planification et validation

Easton editorial illustration: charcoal CODEX terminal with a small orange harness ring, four-stage circular workflow labeled MEMORY, PLAN, BUILD, VERIFY
4
Commandes principales
$init-deep, $ulw-plan, $start-work, $ulw-loop
5
Portes de preuve
relecture du plan, validation automatique, QA manuelle, QA contradictoire, nettoyage
500 / 100
Limite d’itérations de la boucle
500 en mode ultrawork, 100 en mode normal

"La documentation officielle de LazyCodex décrit les quatre commandes principales, le positionnement Codex Light, l’état Boulder, les cinq portes de preuve et les limites d’itération de ulw-loop."

Vous modifiez plus d’une dizaine de fichiers pour une fonctionnalité. Codex annonce que le travail est « terminé », vous lui faites confiance, puis la mise en production révèle qu’un chemin d’erreur a été oublié. Le problème est courant dans les bases de code complexes : chaque nouvelle conversation doit reconstruire le contexte du projet, et le modèle résume ce qu’il a fait sans forcément signaler les cas limites qu’il n’a pas traités.

LazyCodex rassemble dans un agent harness léger les capacités d’OmO (oh-my-openagent) adaptées à Codex. Il vise la mémoire de projet, la planification du travail et une boucle de validation fondée sur des preuves. Les sections suivantes expliquent comment $init-deep, $ulw-plan, $start-work et $ulw-loop coopèrent, comment des AGENTS.md hiérarchisés donnent des repères à un grand dépôt et quelles pratiques restent utiles sans installer l’outil.

LazyCodex : la distribution légère d’OmO pour Codex

LazyCodex joue pour Codex un rôle comparable à celui de LazyVim pour Neovim : les fonctions principales viennent de oh-my-openagent (OmO), tandis que LazyCodex distribue dans un environnement existant les composants compatibles avec le système de plugins de Codex. Le projet est publié sur GitHub sous licence MIT. En juillet 2026, la documentation officielle le présente comme l’édition Codex Light d’OmO, et non comme un portage complet d’OmO Ultimate.

Différences essentielles entre Codex seul et LazyCodex

DimensionCodex seulLazyCodex (Codex Light)
Mémoire de projetLe contexte dépend surtout des instructions du dépôt et de la session ; aucun processus prêt à l’emploi ne réalise une initialisation profonde$init-deep génère des AGENTS.md hiérarchisés et fournit des consignes locales aux répertoires complexes
Critère d’achèvementLa vérification active des cas limites dépend de la demande et des habitudes d’exécution du momentLes cinq portes de preuve de $start-work et la validation oracle de $ulw-loop rendent les critères d’achèvement explicites
Discipline du processusLa modification directe reste possible ; l’utilisateur doit lui-même imposer une planification préalable$ulw-plan ne fait que planifier, $start-work exécute le plan et $ulw-loop ferme la boucle de preuve
PersistanceLe contexte persiste au moyen des sessions Codex et des fichiers du projet.omo/boulder.json conserve l’état d’exécution du plan, et un Stop hook peut relancer le travail inachevé
Couche d’outilsUtilise les skills, MCP et fonctions parallèles actuellement disponibles dans CodexInstalle en plus les rules, hooks, skills, LSP, la recherche AST et le routage de modèles d’OmO

Ce harness ne change pas les capacités fondamentales du modèle Codex. Il normalise la manière de s’en servir : établir une mémoire de projet, planifier, exécuter, puis valider à partir de preuves. L’orchestration complète des agents spécialisés et les outils team_* d’OmO Ultimate ne font cependant pas partie de Codex Light. Les tâches parallèles de LazyCodex dépendent donc de la surface subagent ou team actuellement disponible dans Codex.

Installation : une ligne npx, sans installation globale

La voie d’installation officielle de LazyCodex utilise toujours npx ; npm i -g n’est pas nécessaire :

# Installation standard
npx lazycodex-ai install

# Commande équivalente (paquet OmO et plateforme Codex explicites)
npx --yes --package oh-my-openagent omo install --platform=codex

# Mode entièrement automatique (sans interaction, permissions autonomes explicitement activées)
npx lazycodex-ai install --no-tui --codex-autonomous

# Vérification après installation
npx lazycodex-ai doctor

L’installateur écrit dans le cache des plugins de Codex et dans les configurations associées. L’installation interactive standard demande s’il faut configurer les permissions autonomes. Comme --codex-autonomous modifie cette configuration, ne l’activez qu’après avoir compris les limites de sécurité de la machine. Après une installation ou une mise à niveau, vous devez également approuver les hooks OmO lors du contrôle de démarrage de Codex, puis ouvrir une nouvelle session pour charger le plugin.

Après l’installation, retenez d’abord quatre commandes :

  1. $init-deep : générer des AGENTS.md hiérarchisés
  2. $ulw-plan : transformer une demande en plan complet à approuver
  3. $start-work : exécuter le plan et enregistrer la progression persistante
  4. $ulw-loop : poursuivre l’exécution et la validation d’une tâche unique

Pour inspecter d’abord le contenu installé, exécutez npx lazycodex-ai doctor ou consultez le README officiel de LazyCodex et la documentation officielle.

Mémoire de projet : générer des AGENTS.md hiérarchisés avec $init-deep

Le problème typique d’un grand dépôt est simple : une seule conversation ne suffit pas à expliquer tout le projet. Avec des centaines de fichiers et de nombreux modules, un agent qui ouvre une nouvelle session doit soit réexplorer l’ensemble, soit risquer une modification au mauvais endroit faute de contraintes locales.

$init-deep crée des « repères » pour le dépôt. La commande :

  1. parcourt le dépôt et lit les fichiers qui définissent son fonctionnement réel
  2. génère des AGENTS.md hiérarchisés à la racine et dans les sous-répertoires complexes
  3. place les consignes locales au plus près du code concerné
  4. permet aux agents suivants de lire les règles applicables avant de modifier le code

La hiérarchie compte parce qu’une consigne locale doit rester près du code qui en dépend, au lieu d’être noyée dans un unique fichier à la racine. En entrant dans un module, l’agent voit directement les règles du répertoire et n’a pas à les extraire d’une documentation globale immense.

Cette approche diffère de l’architecture de mémoire à long terme présentée dans Concevoir un système de mémoire pour un agent : AGENTS.md correspond davantage à un contexte de projet versionné qu’à des souvenirs de conversation rappelés automatiquement. Les deux modèles partagent néanmoins la hiérarchie, le contexte local et la persistance. Le rôle ressemble aussi à celui de CLAUDE.md dans Contraindre Claude avec un fichier de configuration : faire lire les règles à l’IA avant toute action.

Les AGENTS.md générés restent de simples fichiers Markdown et doivent être relus par une personne. Après une refonte du dépôt, un changement de responsabilité d’un répertoire ou une mise à jour des commandes, relancez $init-deep ou entretenez les fichiers manuellement. Un contenu généré automatiquement ne constitue pas une source de vérité permanente.

Quatre commandes pour la mémoire, le plan, l’exécution et la validation

Le flux principal de LazyCodex comprend quatre phases : initialiser la mémoire du projet, planifier, exécuter et valider. Pour une tâche de développement concrète, les trois dernières commandes forment la boucle planification–exécution–validation.

$ulw-plan : produire uniquement un plan à approuver

$ulw-plan "what to build"

Cette commande planifie sans écrire le code du produit. Elle :

  1. clarifie les besoins par un échange au lieu de transformer directement une formulation vague en spécification
  2. explore la base de code et délègue les recherches indépendantes à des subagents parallèles
  3. analyse l’écart entre l’état actuel et l’objectif
  4. écrit le plan dans plans/<slug>.md avec les références, les critères de validation, la stratégie de QA et les limites des commits
  5. définit status: awaiting-approval et attend l’approbation

La contrainte centrale est l’absence de modification du produit pendant la planification. Le périmètre et les critères doivent être clairs avant de transmettre le plan à la phase d’exécution. Décomposer une tâche avec des Subagents décrit un principe proche, mais LazyCodex l’intègre directement au flux de planification.

$start-work : exécuter le plan avec un état persistant

$start-work [plan-name] [--worktree <absolute-path>]

Cette commande exécute un plan approuvé jusqu’à ce que toutes les cases de premier niveau soient terminées. Ses fonctions principales :

  1. État Boulder persistant : .omo/boulder.json conserve la progression entre les tours et les sessions
  2. Stop hook : si le plan n’est pas terminé, la prochaine étape de travail est réinjectée
  3. Subagents parallèles : les sous-tâches indépendantes peuvent être distribuées ; le parallélisme exact dépend de la surface Codex disponible
  4. TDD strict et cinq portes de preuve : relecture du plan, validation automatique, QA manuelle, QA contradictoire et nettoyage
  5. Registre de progression : enregistre l’exécution et l’état des cases à cocher

À la fin, la commande affiche ORCHESTRATION COMPLETE. Ce signal indique que le flux déclare toutes les cases et portes de preuve terminées. Il reste nécessaire de consulter les tests réels, la QA manuelle et les preuves de modification, plutôt que de croire une seule ligne d’état.

$ulw-loop : valider en continu une tâche unique

$ulw-loop "task" [--completion-promise=TEXT] [--strategy=reset|continue]

Cette commande convient à une tâche unique dont le périmètre est clair, mais qui doit continuer jusqu’à ce que les preuves soient validées. Elle ne remplace pas une planification complète ; pour une tâche floue, exécutez d’abord $ulw-plan.

  • Limite d’itérations : 500 au maximum en mode ultrawork, 100 en mode normal
  • Stratégie : reset réinitialise le contexte de la boucle à chaque itération, continue conserve l’état courant
  • Completion promise : précise les preuves à recueillir, les validations obligatoires et le traitement des informations manquantes
  • Condition d’arrêt : l’oracle détermine à partir des preuves si la promesse d’achèvement est satisfaite

Le nombre d’itérations ne garantit pas la qualité. Si les critères d’achèvement restent vagues, la boucle ne fait que répéter plus vite une évaluation vague. Il faut inscrire dans la completion promise les tests, les conditions limites, la QA manuelle et le traitement des échecs.

Pourquoi la validation compte dans une base de code complexe

Dans une base de code complexe, une modification peut toucher plus d’une dizaine de fichiers. Le chemin principal fonctionne, mais un cas d’erreur, un appelant, une configuration ou une documentation n’a pas été mis à jour. Le problème ne vient pas uniquement des capacités du modèle : le critère d’achèvement manque souvent de preuves explicites.

Situations dans lesquelles un modèle oublie facilement les bords :

Type de modificationÉléments souvent oubliés
Flux principal modifiéChemins d’erreur : panne réseau, validation des paramètres ou autorisation insuffisante
Nouvelle interfaceAppelants et doubles de test qui utilisent encore l’ancienne signature
Module refactoriséTests, configuration, documentation et artefacts générés
Fonction suppriméePoints d’entrée dépendants, analytics, journaux et couche de compatibilité de migration

L’apport de LazyCodex n’est pas de garantir qu’aucun oubli ne surviendra, mais d’inscrire les contrôles dans le flux de travail. Les cinq portes de preuve imposent une relecture du plan, une validation automatique, une QA manuelle, un contrôle contradictoire et un nettoyage. $ulw-loop fait continuer une tâche jusqu’à satisfaction des preuves convenues. On passe ainsi de « le modèle affirme avoir fini » à « les preuves définies à l’avance déterminent l’achèvement ».

Ces portes ont encore besoin des sources de vérité du projet et de critères de validation de qualité. Un changement de signature exige de rechercher tous les appelants ; une suppression de fonction, tous les points d’entrée dépendants ; une modification d’interface, une interaction réelle plutôt que de simples tests unitaires. Le harness apporte une contrainte de processus, mais ne connaît pas automatiquement les risques métier.

Agents spécialisés d’OmO et couche de skills de LazyCodex

LazyCodex vient d’OmO, mais leurs périmètres doivent rester distincts. OmO Ultimate fournit l’orchestration complète des agents spécialisés ; Codex Light n’emporte que les composants compatibles avec le système de plugins de Codex et utilise la surface d’agents propre à Codex.

Agents spécialisés : orchestration complète réservée à OmO Ultimate

AgentRôleLimite de LazyCodex Light
SisyphusOrchestre l’exécution et la validationLa configuration du rôle peut être visible, mais Light ne fournit pas toute l’orchestration d’agents d’OmO Ultimate
HephaestusExécute le travail et modifie les fichiersLes tâches indépendantes reposent sur les capacités de subagent actuellement disponibles dans Codex
OracleDétermine l’achèvement à partir des preuves$ulw-loop conserve l’habitude de validation par les preuves, sans fournir tous les outils d’orchestration d’Ultimate
LibrarianEnregistre et retrouve le contexteLa mémoire de projet repose surtout sur $init-deep et les AGENTS.md hiérarchisés

Il ne faut donc pas compter Team Mode, l’équipe complète d’agents spécialisés ni les outils team_* d’OmO Ultimate parmi les fonctions intégrées de LazyCodex Light. La possibilité de créer plusieurs membres d’équipe en parallèle dépend aussi des capacités de l’application ou de la CLI Codex utilisée.

Couche de skills : transférer les décisions spécialisées dans des flux réutilisables

LazyCodex installe un ensemble de skills et de composants. La documentation officielle actuelle cite notamment :

Skill ou composantUsage
review-workExaminer l’implémentation par plusieurs canaux
remove-ai-slopsÉliminer les traces d’IA stéréotypées sans modifier le comportement
frontendEncadrer la conception frontend et l’implémentation de l’interface
LSPDiagnostics, définitions, références et opérations sur les symboles
AST-grepRechercher et réécrire le code selon sa structure syntaxique
rules / comment-checkerCharger les règles du projet et contrôler la qualité des commentaires
git-bashFournir des outils compatibles dans les environnements qui exigent une sémantique Bash

L’idée rejoint celle de La fonction Skill de Claude : les commandes pilotent le processus, les skills portent les décisions propres au domaine. La liste exacte peut évoluer. Après l’installation, vérifiez l’état actuel dans le menu $ de Codex ou dans la sortie de doctor.

Routage des modèles : adapter les ressources de raisonnement au risque

LazyCodex configure le routage des modèles afin d’affecter à chaque rôle ou tâche un modèle et un niveau de raisonnement adaptés. L’objectif n’est pas de garantir une économie de tokens. La documentation officielle précise au contraire que LazyCodex consacre suffisamment de modèle et de contexte à la planification, à l’exécution et à la validation.

Des principes plus sûrs :

  • Utiliser un niveau de raisonnement moyen pour les tâches courantes
  • Augmenter ce niveau lorsque le coût d’un échec est élevé ou qu’une relecture est nécessaire
  • Réserver le niveau maximal aux tâches réellement lourdes
  • Délimiter et découper les longues tâches pour qu’un thread ne sature pas sous trop de contexte

Les noms de modèles et les matrices de routage évoluent. La configuration courante au moment de l’installation fait foi. N’inscrivez pas dans un processus durable un nom de modèle lu dans un README daté, et n’assimilez pas automatiquement le routage multi-modèle à une économie de quota.

Quatre idées d’ingénierie réutilisables sans installer LazyCodex

Même sans LazyCodex, quatre principes peuvent migrer vers d’autres flux d’agents.

Idée 1 : écrire des fichiers de contexte hiérarchisés pour les grands dépôts

Les AGENTS.md générés par $init-deep constituent essentiellement un contexte de dépôt versionné et hiérarchisé. Le principe se reprend directement :

  • Écrire des consignes locales pour les répertoires complexes au lieu d’empiler toutes les règles à la racine
  • Faire en sorte que l’agent voie les règles applicables dès son entrée dans un répertoire
  • Mettre les consignes à jour lorsque la structure ou le processus change
  • Relire le contenu généré afin qu’une description obsolète ne devienne pas une nouvelle source d’erreurs

La forme minimale est un AGENTS.md à la racine et quelques AGENTS.md dans les sous-répertoires importants. Contraindre Claude avec un fichier de configuration propose une approche similaire.

Idée 2 : séparer planification et exécution

Demandez d’abord à l’agent d’écrire un plan complet du point de vue des décisions, avec périmètre, dépendances, critères de validation, QA et limites des commits, puis n’exécutez qu’après approbation. Le point essentiel n’est pas le format plans/*.md, mais l’interdiction de commencer discrètement les modifications du produit pendant la planification.

Idée 3 : lier l’achèvement à des preuves

Établissez une liste de contrôles pour les modifications multifichiers : rechercher les appelants après une modification d’interface, les points d’entrée lors d’une suppression, tester une interface par interaction réelle et vérifier le retour arrière d’une migration de données. L’état « terminé » doit dépendre de tests précis, d’une QA manuelle et de preuves sur les cas limites, pas d’un résumé.

Idée 4 : affecter modèle et contexte selon le risque de la tâche

Une requête simple n’exige pas le niveau de raisonnement maximal. Les changements d’architecture, migrations et portes de mise en production demandent davantage de raisonnement et de relecture. Les tâches longues doivent aussi être activement découpées : augmenter seulement le budget de tokens ne suffit pas.

Forme minimale à reproduire

Si vous ne voulez pas installer tout le harness, conservez au moins deux types de fichiers versionnés :

  1. une liste de planification avec les décisions, les étapes, les critères de validation et les points ouverts
  2. des AGENTS.md hiérarchisés avec les règles du dépôt et des répertoires

Ajoutez les commandes de vérification et la liste de QA manuelle correspondant à chaque catégorie de changement. Vous couvrez déjà les idées essentielles de LazyCodex les plus faciles à transférer.

À qui LazyCodex convient-il, et à qui ne convient-il pas ?

LazyCodex ajoute des hooks, des fichiers d’état, des skills et des contraintes de processus. Tous les projets n’en ont pas besoin. Le tableau suivant aide à décider.

Scénarios adaptés

DimensionLazyCodex est adaptéCodex seul est plus simple
Taille du dépôtGrand dépôt, nombreuses règles de répertoire et changements souvent multifichiersPetit dépôt ou projet limité à un fichier
Complexité de la tâcheTâche longue qui exige planification, exécution et validationPetite modification ponctuelle ou script simple
Problème de contexteChaque nouvelle session doit souvent réexplorer les répertoires et leurs règlesUne session suffit et un AGENTS.md clair existe déjà
Besoin de validationLes cas d’erreur sont faciles à oublier ; des portes de preuve et une QA manuelle sont nécessairesLes conditions d’achèvement sont simples et peu coûteuses à contrôler
Besoin de processusLe plan doit être approuvé d’abord et l’état d’exécution doit persisterLa modification directe est préférée et aucune couche d’état supplémentaire n’est requise
Acceptation des permissionsL’équipe peut examiner les hooks, MCP et les réglages de permissions autonomesAucun plugin supplémentaire ni changement de configuration Codex n’est souhaité

Évaluer le bénéfice

Plus le dépôt est grand, la tâche longue et la validation complexe, plus les contraintes de LazyCodex peuvent être utiles. Les cas typiques sont les refactorisations multifichiers, les travaux sur plusieurs sessions et les changements risqués qui nécessitent tests automatiques et QA manuelle.

Le coût est tout aussi clair : il faut entretenir le contexte hiérarchisé, comprendre les hooks et les permissions, accepter des fichiers d’état comme .omo/boulder.json et relire les plans ainsi que les résultats de validation produits par le harness. L’installation n’élimine pas automatiquement les oublis.

Scénarios peu adaptés

  • Petite modification ponctuelle : changer une fonction, un champ ou un texte
  • Script simple : travail concentré dans un ou deux fichiers avec une condition d’achèvement claire
  • Processus existant mature : AGENTS.md fiable, modèles de plan, CI et portes de validation humaine déjà en place
  • Refus d’une configuration supplémentaire : ne pas laisser plugins, hooks, MCP ou permissions autonomes modifier l’environnement Codex actuel

En cas de doute, commencez sans installer l’ensemble : ajoutez manuellement un AGENTS.md hiérarchisé et une liste de preuves. Si le projet souffre réellement de pertes de contexte entre sessions, d’une séparation insuffisante entre plan et exécution ou de validations faibles, évaluez ensuite LazyCodex.

Conclusion

Dans une base de code complexe, la difficulté avec Codex n’est souvent pas de générer du code, mais de permettre à une nouvelle session de comprendre rapidement les règles locales et de prouver qu’une modification multifichier n’a oublié aucune limite importante. LazyCodex associe $init-deep, l’approbation des plans, l’état Boulder et les portes de preuve dans un flux Codex Light.

L’intérêt ne réside pas d’abord dans les noms Sisyphus ou Boulder, mais dans trois apports vérifiables : le contexte est écrit dans des fichiers hiérarchisés, le plan et l’exécution sont clairement séparés, et l’achèvement dépend de tests et d’une QA manuelle. Il faut parallèlement garder en tête que LazyCodex n’est pas OmO Ultimate : l’orchestration complète des agents et Team Mode ne font pas automatiquement partie de Light.

Pour continuer, exécutez npx lazycodex-ai doctor, utilisez $init-deep sur un vrai grand dépôt, puis choisissez une tâche multifichier bien délimitée et parcourez un cycle complet avec $ulw-plan, $start-work et $ulw-loop. Comparez les oublis, la relecture du contexte et le coût de validation avec une utilisation directe de Codex : c’est la seule façon de savoir si ce harness convient au projet.

Exécuter avec LazyCodex un cycle de planification, d’exécution et de validation

Commencez par l’installation et la mémoire de projet, approuvez le plan, puis terminez l’exécution uniquement après validation des preuves.

  1. 1

    Step 1: Installer et exécuter doctor

    Installez l’édition Codex Light avec npx lazycodex-ai install, puis lancez npx lazycodex-ai doctor pour vérifier les plugins, les hooks, MCP et la configuration.
  2. 2

    Step 2: Initialiser la mémoire de projet

    Dans le dépôt, exécutez $init-deep. Relisez les AGENTS.md générés à la racine et dans les répertoires, puis supprimez les indications obsolètes ou inexactes.
  3. 3

    Step 3: Générer et approuver le plan

    Pour une tâche aux limites incertaines, exécutez $ulw-plan afin d’explorer le code et d’écrire un plan complet du point de vue des décisions. Approuvez-le après avoir confirmé le périmètre, les critères de validation et les limites des commits.
  4. 4

    Step 4: Exécuter le plan

    Utilisez $start-work pour exécuter le plan approuvé, suivez la progression persistante dans .omo/boulder.json et terminez chaque case à cocher de premier niveau.
  5. 5

    Step 5: Valider avec des preuves

    Utilisez $ulw-loop lorsqu’une boucle continue est nécessaire et inscrivez les tests, la QA manuelle et les contrôles de limites dans la completion promise. Ne considérez la tâche terminée qu’après réussite des preuves.

FAQ

Qu’est-ce que LazyCodex et quelle différence avec Codex seul ?
LazyCodex est la distribution légère d’OmO pour Codex. Il ne remplace pas le modèle Codex, mais ajoute à son environnement une mémoire de projet hiérarchisée, des commandes de planification et d’exécution, des hooks, des skills, le routage de modèles et une validation fondée sur des preuves.
Comment installer et vérifier LazyCodex ?
La commande principale est npx lazycodex-ai install. Le mode autonome non interactif utilise --no-tui --codex-autonomous. Exécutez ensuite npx lazycodex-ai doctor, puis vérifiez le menu $ et l’approbation des hooks dans une nouvelle session Codex.
Quand utiliser $init-deep, $ulw-plan, $start-work et $ulw-loop ?
$init-deep génère des AGENTS.md hiérarchisés. Si la demande reste floue, $ulw-plan produit un plan à approuver. Après approbation, $start-work l’exécute. $ulw-loop convient à une tâche unique qui doit continuer jusqu’à validation des preuves.
À quoi servent les AGENTS.md créés par $init-deep ?
Ils répartissent les règles du dépôt et les consignes locales des répertoires complexes en plusieurs niveaux de contexte. Une session Codex ultérieure lit ainsi les repères pertinents avant toute modification. Le contenu généré doit être relu et mis à jour lorsque la structure ou les règles changent.
À quels projets LazyCodex convient-il ?
Il convient surtout aux grands dépôts, aux longues tâches multifichiers, à l’approbation préalable des plans et aux validations strictes. Pour une petite modification dans un fichier, un script ponctuel ou une tâche sans état persistant, Codex seul est généralement plus simple.

16 min de lecture · Publié le: 28 juil. 2026 · Mis à jour le: 30 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog