Come usare LazyCodex con Codex: memoria di progetto, pianificazione e verifica

"La documentazione ufficiale di LazyCodex descrive i quattro comandi principali, il posizionamento Codex Light, lo stato Boulder, i cinque gate basati su prove e i limiti di iterazione di ulw-loop."
Modifichi una funzionalità che attraversa più di dieci file. Codex dichiara di avere “finito”, ti fidi e, dopo il rilascio, scopri che manca la gestione di un percorso di errore. È un problema comune nelle codebase complesse: ogni nuova conversazione deve ricostruire il contesto del progetto e il modello riferisce ciò che ha cambiato senza indicare necessariamente la logica periferica che potrebbe aver trascurato.
LazyCodex raccoglie in un agent harness leggero le capacità di OmO (oh-my-openagent) adatte a Codex. Si concentra su memoria di progetto, pianificazione del lavoro e un ciclo chiuso di accettazione basato su prove. Vedremo come $init-deep, $ulw-plan, $start-work e $ulw-loop collaborano, come gli AGENTS.md gerarchici danno contesto a un repository grande e quali pratiche di ingegneria restano utili anche senza installare lo strumento.
Che cos’è LazyCodex: la distribuzione leggera di OmO per Codex
LazyCodex si può paragonare al rapporto tra LazyVim e Neovim: le capacità principali provengono da oh-my-openagent (OmO), mentre LazyCodex distribuisce in un ambiente esistente le parti compatibili con il sistema di plugin di Codex. Il progetto è open source su GitHub con licenza MIT. A luglio 2026, la documentazione ufficiale lo definisce l’edizione Codex Light di OmO, non un port completo di OmO Ultimate.
Differenze principali tra Codex da solo e LazyCodex
| Dimensione | Codex da solo | LazyCodex (Codex Light) |
|---|---|---|
| Memoria di progetto | Il contesto dipende soprattutto dalle istruzioni correnti del repository e dalla sessione; manca un flusso pronto per l’inizializzazione profonda | $init-deep genera AGENTS.md gerarchici e fornisce indicazioni locali alle directory complesse |
| Criterio di completamento | La verifica attiva dei casi limite dipende dalla descrizione del compito e dalle abitudini di esecuzione del momento | I cinque gate basati su prove di $start-work e la verifica oracle di $ulw-loop rendono espliciti i criteri |
| Disciplina del processo | Si può modificare direttamente; l’utente deve imporre da sé la pianificazione prima dell’esecuzione | $ulw-plan pianifica soltanto, $start-work esegue il piano e $ulw-loop chiude il ciclo delle prove |
| Persistenza | Conserva il contesto mediante le sessioni Codex e i file del progetto | .omo/boulder.json salva lo stato di esecuzione del piano e uno Stop hook può far proseguire il lavoro incompleto |
| Livello degli strumenti | Usa skills, MCP e capacità parallele attualmente disponibili in Codex | Installa anche rules, hooks, skills, LSP, ricerca AST e configurazione del routing dei modelli di OmO |
Questo harness non modifica le capacità fondamentali del modello Codex. Standardizza il modo di usarlo: prima crea memoria di progetto, poi pianifica ed esegue, infine accetta il risultato in base alle prove. Tuttavia, l’orchestrazione completa degli agent specializzati e gli strumenti team_* di OmO Ultimate non fanno parte di Codex Light. I compiti paralleli di LazyCodex dipendono dalla superficie subagent o team disponibile nella versione corrente di Codex.
Installazione: una riga npx, senza installazione globale
Il percorso ufficiale principale di LazyCodex usa sempre npx; non serve npm i -g:
# Installazione standard
npx lazycodex-ai install
# Comando equivalente (pacchetto OmO e piattaforma Codex specificati)
npx --yes --package oh-my-openagent omo install --platform=codex
# Modalità completamente automatica (non interattiva, con permessi autonomi espliciti)
npx lazycodex-ai install --no-tui --codex-autonomous
# Controllo dopo l’installazione
npx lazycodex-ai doctor
L’installer scrive nella cache dei plugin di Codex e nelle configurazioni collegate. L’installazione interattiva standard chiede se configurare i permessi autonomi. Poiché --codex-autonomous modifica tale configurazione, abilitalo soltanto dopo aver compreso i confini di sicurezza del computer. Dopo l’installazione o un aggiornamento, devi inoltre approvare gli hook di OmO nella revisione di avvio di Codex e aprire una nuova sessione per caricare il plugin.
Dopo l’installazione, ricorda innanzitutto quattro comandi:
$init-deep: generare AGENTS.md gerarchici$ulw-plan: trasformare i requisiti in un piano completo nelle decisioni e in attesa di approvazione$start-work: eseguire il piano e salvare il progresso persistente$ulw-loop: continuare a eseguire e verificare un singolo compito
Per controllare prima il contenuto installato, esegui npx lazycodex-ai doctor oppure consulta il README ufficiale di LazyCodex e la documentazione ufficiale.
Memoria di progetto: creare AGENTS.md gerarchici con $init-deep
Il problema tipico di un repository grande è che una singola conversazione non basta a spiegare tutto il progetto. Con centinaia di file e molti moduli, un agent che apre una nuova sessione deve esplorare di nuovo l’insieme oppure rischia di modificare il punto sbagliato senza vincoli locali.
$init-deep crea dei “punti di riferimento” per il repository. Il comando:
- attraversa il repository e legge i file che determinano il suo reale modo di funzionare
- genera AGENTS.md gerarchici nella root e nelle sottodirectory complesse
- colloca le istruzioni locali il più vicino possibile al codice interessato
- permette agli agent successivi di leggere le regole applicabili prima di modificare i file
La gerarchia è importante perché le indicazioni locali devono stare accanto al codice che ne ha bisogno, non tutte dentro un enorme file nella root. Quando entra in un modulo, l’agent vede direttamente le regole della directory e non deve estrarle da una documentazione generale gigantesca.
L’approccio non coincide con l’architettura di memoria a lungo termine illustrata in Progettare un sistema di memoria per agent: AGENTS.md assomiglia più a un contesto di progetto versionato che a ricordi di conversazione recuperati automaticamente. Entrambi, però, valorizzano gerarchia, contesto locale e persistenza. Il ruolo è simile anche a CLAUDE.md in Controllare Claude con un file di configurazione: far leggere le regole all’IA prima di intervenire.
Gli AGENTS.md generati sono normali file Markdown e richiedono una revisione umana. Dopo una ristrutturazione della codebase, un cambio di responsabilità di una directory o un aggiornamento dei comandi, esegui di nuovo $init-deep oppure mantieni i file manualmente. Il contenuto generato non è una fonte di verità corretta per sempre.
Quattro comandi per memoria, pianificazione, esecuzione e verifica
Il flusso principale di LazyCodex si divide in quattro fasi: inizializzare la memoria di progetto, pianificare, eseguire e verificare. Per un compito di sviluppo reale, gli ultimi tre comandi formano il ciclo pianificazione–esecuzione–verifica.
$ulw-plan: produrre soltanto un piano da approvare
$ulw-plan "what to build"
Questo comando pianifica, ma non scrive codice del prodotto. Il processo:
- chiarisce i requisiti tramite un colloquio, senza trasformare direttamente una frase vaga in una specifica di implementazione
- esplora la codebase e distribuisce le ricerche indipendenti tra subagent paralleli
- analizza la distanza tra lo stato attuale e l’obiettivo
- scrive il piano in
plans/<slug>.md, includendo riferimenti, criteri di accettazione, strategia di QA e confini dei commit - imposta
status: awaiting-approvale attende l’approvazione
Il vincolo principale è non modificare il prodotto durante la pianificazione. Prima si chiariscono ambito e criteri di accettazione, poi il piano passa alla fase di esecuzione. Suddividere il lavoro con i Subagent presenta un’idea simile, ma LazyCodex la incorpora nel flusso del piano.
$start-work: eseguire il piano con stato persistente
$start-work [plan-name] [--worktree <absolute-path>]
Questo comando esegue un piano approvato finché tutte le checkbox di primo livello non sono completate. Le funzioni principali includono:
- Stato Boulder persistente:
.omo/boulder.jsonconserva il progresso tra turn e session - Stop hook: se il piano è incompleto, reinietta il round di lavoro successivo
- Subagent paralleli: le attività indipendenti possono essere distribuite; il parallelismo effettivo dipende dalla superficie Codex corrente
- TDD rigoroso e cinque gate basati su prove: rilettura del piano, verifica automatica, QA manuale, QA avversaria e pulizia
- Registro di progresso: salva l’esecuzione e lo stato delle checkbox
Al completamento viene stampato ORCHESTRATION COMPLETE. Questo segnale indica che il flusso dichiara completate tutte le checkbox e i gate basati su prove. Bisogna comunque esaminare i test reali, la QA manuale e le prove delle modifiche invece di fidarsi di una sola riga di stato.
$ulw-loop: verificare continuamente un singolo compito
$ulw-loop "task" [--completion-promise=TEXT] [--strategy=reset|continue]
Questo comando è adatto a un singolo compito dall’ambito già chiaro, ma che deve proseguire fino alla verifica delle prove. Non sostituisce una pianificazione completa; per un’attività vaga, esegui prima $ulw-plan.
- Limite di iterazioni: al massimo 500 in modalità ultrawork e 100 in modalità normale
- Strategia:
resetreimposta ogni volta il contesto del ciclo, mentrecontinueprosegue dallo stato esistente - Completion promise: specifica le prove da raccogliere, le verifiche obbligatorie e la gestione delle informazioni mancanti
- Condizione di arresto: oracle decide, in base alle prove, se la promessa di completamento è soddisfatta
Il numero di iterazioni non garantisce la qualità. Se il criterio di completamento è vago, il ciclo ripete più rapidamente un giudizio vago. Occorre inserire nella completion promise test, condizioni limite, QA manuale e gestione dei fallimenti.
Perché l’accettazione conta in una codebase complessa
Il rischio tipico di una codebase complessa è che una modifica attraversi più di dieci file, funzioni nel percorso principale, ma lasci senza aggiornamento un ramo di errore, un chiamante, la configurazione o la documentazione. Non è soltanto un limite del modello: nella definizione di completamento mancano prove esplicite.
Situazioni in cui il modello tende a trascurare i bordi:
| Tipo di modifica | Punti facili da trascurare |
|---|---|
| Flusso principale modificato | Rami di errore come guasto di rete, validazione dei parametri o permessi insufficienti |
| Nuova interfaccia | Chiamanti e test double che usano ancora la vecchia firma |
| Modulo rifattorizzato | Test, configurazione, documentazione e artefatti generati |
| Funzionalità rimossa | Punti di ingresso dipendenti, analytics, log e livello di compatibilità della migrazione |
Il valore aggiunto di LazyCodex non consiste nel garantire che “nulla venga mai dimenticato”, ma nel fissare le verifiche nel flusso di lavoro. I cinque gate basati su prove richiedono di rileggere il piano, eseguire verifiche automatiche, svolgere QA manuale, cercare errori in modo avversario e ripulire i residui. $ulw-loop mantiene attivo un singolo compito finché le prove concordate non sono soddisfatte. “Il modello dice di aver finito” diventa “le prove definite prima stabiliscono il completamento”.
I gate richiedono ancora le fonti di verità del progetto e buoni criteri di accettazione. Un cambio di firma impone di cercare tutti i chiamanti; la rimozione di una funzione richiede di trovare i punti di ingresso dipendenti; una modifica della UI richiede interazione reale, non soltanto unit test. Il harness fornisce disciplina di processo, ma non conosce automaticamente i rischi aziendali.
Agent specializzati di OmO e livello skills di LazyCodex
LazyCodex deriva da OmO, ma gli ambiti devono restare distinti. OmO Ultimate offre l’orchestrazione completa degli agent specializzati; Codex Light contiene solo i componenti adattabili al sistema di plugin di Codex e usa la superficie agent propria di Codex.
Agent specializzati: orchestrazione completa in OmO Ultimate
| Nome dell’agent | Responsabilità | Limite di LazyCodex Light |
|---|---|---|
| Sisyphus | Orchestra esecuzione e verifica | La configurazione del ruolo può essere visibile, ma Light non fornisce l’orchestrazione completa degli agent di OmO Ultimate |
| Hephaestus | Esegue compiti e modifica file | I compiti indipendenti sono gestiti dalle capacità subagent disponibili nel Codex corrente |
| Oracle | Stabilisce il completamento in base alle prove | $ulw-loop conserva l’abitudine della verifica basata su prove, ma non include tutti gli strumenti di orchestrazione di Ultimate |
| Librarian | Registra e recupera il contesto | La memoria di progetto viene realizzata soprattutto tramite $init-deep e AGENTS.md gerarchici |
Team Mode, il team completo di agent specializzati e gli strumenti team_* di OmO Ultimate non possono quindi essere conteggiati tra le capacità integrate di LazyCodex Light. La possibilità reale di creare membri del team in parallelo dipende anche dalle funzioni offerte dalla Codex App o CLI corrente.
Livello skills: spostare le decisioni specialistiche in flussi riutilizzabili
LazyCodex installa una serie di skills e componenti. La documentazione ufficiale attuale elenca, tra gli esempi:
| Skill o componente | Uso |
|---|---|
| review-work | Riesaminare l’implementazione tramite più canali |
| remove-ai-slops | Eliminare tracce stereotipate di IA senza cambiare il comportamento |
| frontend | Vincoli per design frontend e implementazione della UI |
| LSP | Diagnostica, definizioni, riferimenti e operazioni sui simboli |
| AST-grep | Cercare e riscrivere codice in base alla struttura sintattica |
| rules / comment-checker | Caricare regole del progetto e verificare la qualità dei commenti |
| git-bash | Fornire strumenti compatibili agli ambienti che richiedono semantica Bash |
L’idea ricorda La funzione Skill di Claude: i comandi governano il processo, mentre le skills contengono le decisioni di dominio. L’elenco esatto può variare tra le versioni; dopo l’installazione, controlla lo stato corrente nel menu $ di Codex o nell’output di doctor.
Routing dei modelli: assegnare risorse di ragionamento in base al rischio
LazyCodex configura il routing dei modelli affinché ruoli o compiti diversi usino un modello e un livello di reasoning adeguati. Lo scopo non è garantire un risparmio di token. La documentazione ufficiale segnala invece che LazyCodex dedica risorse di modello e contesto sufficienti a pianificazione, esecuzione e verifica.
Principi d’uso più robusti:
- Usare un’intensità di ragionamento media per le attività quotidiane
- Aumentarla quando il costo di un errore è alto o serve una revisione
- Riservare il livello massimo ai compiti davvero pesanti
- Delimitare e dividere i compiti lunghi per evitare che un thread sia schiacciato da troppo contesto
I nomi concreti dei modelli e le matrici di routing cambiano. Fa fede la configurazione corrente durante l’installazione. Non inserire in un processo duraturo un modello citato in un README di un momento specifico e non equiparare il routing multi-modello a un risparmio garantito di quota.
Quattro idee di ingegneria riutilizzabili senza installare LazyCodex
Anche senza LazyCodex, quattro idee possono essere trasferite ad altri flussi con agent.
Idea 1: scrivere file di contesto gerarchici per repository grandi
Gli AGENTS.md generati da $init-deep sono, in sostanza, contesto versionato e gerarchico per un repository grande. Puoi applicare direttamente il principio:
- Scrivere istruzioni locali per le directory complesse invece di accumulare tutte le regole nella root
- Fare in modo che l’agent veda le regole applicabili quando entra in una directory
- Aggiornare le istruzioni quando struttura o processo cambiano
- Rivedere il contenuto generato perché una descrizione obsoleta non diventi una nuova fonte di errore
La forma minima è un AGENTS.md nella root e pochi AGENTS.md nelle sottodirectory importanti. Controllare Claude con un file di configurazione mostra una pratica simile.
Idea 2: separare pianificazione ed esecuzione
Chiedi prima all’agent un piano completo nelle decisioni con ambito, dipendenze, criteri di accettazione, QA e confini dei commit; eseguilo solo dopo l’approvazione. Non è indispensabile usare plans/*.md: il punto è impedire che la pianificazione inizi di nascosto a modificare il prodotto.
Idea 3: legare il completamento alle prove
Prepara una checklist per le modifiche su più file: cercare i chiamanti quando cambia un’interfaccia, i punti di ingresso quando si rimuove una funzione, interagire realmente con la UI e controllare il rollback delle migrazioni dati. “Completato” deve dipendere da test specifici, QA manuale e prove sui casi limite, non da un riepilogo.
Idea 4: assegnare modello e contesto in base al rischio
Una semplice richiesta non richiede il livello massimo di ragionamento. Modifiche architetturali, migrazioni e gate di pubblicazione richiedono ragionamento più forte e revisione. Inoltre, i compiti lunghi vanno suddivisi attivamente: aumentare soltanto il token budget non basta.
Forma minima da adottare
Se non vuoi installare l’intero harness, conserva almeno due tipi di file versionabili:
- una checklist di pianificazione con decisioni, passaggi, criteri di accettazione e punti aperti
- AGENTS.md gerarchici con regole del repository e delle directory
Aggiungi i comandi di verifica e una lista di QA manuale adatti a ogni tipo di modifica. In questo modo copri già le idee centrali di LazyCodex più facili da trasferire.
Per chi è adatto LazyCodex e per chi non lo è
LazyCodex aggiunge hooks, file di stato, skills e vincoli di flusso. Non tutti i progetti hanno bisogno di questo livello. La tabella aiuta a decidere.
Valutazione degli scenari
| Dimensione | LazyCodex è adatto | Codex da solo è più semplice |
|---|---|---|
| Dimensione del repository | Repository grande, molte regole di directory e frequenti cambi su più file | Repository piccolo o progetto con un solo file |
| Complessità del compito | Compito lungo che richiede pianificazione, esecuzione e verifica | Piccola modifica occasionale o script semplice |
| Problema di contesto | Le nuove sessioni devono spesso riesplorare directory e regole | Una sessione è sufficiente ed esiste già un AGENTS.md chiaro |
| Esigenza di accettazione | È facile trascurare rami di errore; servono gate basati su prove e QA manuale | Le condizioni di completamento sono semplici ed economiche da verificare |
| Esigenza di processo | Il piano deve essere approvato prima e lo stato di esecuzione deve persistere | Si preferisce modificare subito, senza uno strato di stato aggiuntivo |
| Accettazione dei permessi | È possibile esaminare hooks, MCP e impostazioni dei permessi autonomi | Non si vogliono plugin aggiuntivi né modifiche alla configurazione di Codex |
Valutare il beneficio
Più il repository è grande, il compito lungo e l’accettazione complessa, più è probabile che i vincoli di LazyCodex offrano valore. I casi tipici includono refactoring su più file, lavori che attraversano diverse session e modifiche ad alto rischio che richiedono test automatici e QA manuale.
Il costo è altrettanto esplicito: bisogna mantenere il contesto gerarchico, capire hooks e permessi, accettare file di stato come .omo/boulder.json e rivedere i piani e i risultati di verifica prodotti dal harness. Non è un’assicurazione automatica contro le omissioni.
Scenari poco adatti
- Piccola modifica occasionale: cambiare una funzione, un campo o un testo
- Script semplice: lavoro concentrato in uno o due file con una condizione di completamento chiara
- Processo esistente maturo: il repository dispone già di AGENTS.md affidabili, modelli di piano, CI e gate di accettazione manuale
- Rifiuto di configurazioni aggiuntive: non si desidera che plugin, hooks, MCP o permessi autonomi cambino l’ambiente Codex corrente
In caso di dubbio, non installare subito l’intero insieme. Aggiungi manualmente un AGENTS.md gerarchico e una checklist delle prove. Dopo aver confermato che il progetto soffre davvero per perdita di contesto tra sessioni, scarsa separazione tra piano ed esecuzione o accettazione debole, valuta LazyCodex.
Conclusione
In una codebase complessa, la difficoltà nell’uso di Codex spesso non è generare codice, ma consentire a una nuova sessione di capire rapidamente le regole locali e dimostrare che una modifica su più file non ha trascurato confini importanti. LazyCodex combina $init-deep, approvazione dei piani, stato Boulder e gate basati su prove in un flusso Codex Light.
Il valore non sta soprattutto nei nomi Sisyphus o Boulder, ma in tre miglioramenti di ingegneria verificabili: il contesto viene scritto in file gerarchici, pianificazione ed esecuzione hanno un confine chiaro e il completamento dipende da test e QA manuale. Allo stesso tempo, LazyCodex non equivale a OmO Ultimate; orchestrazione completa degli agent e Team Mode non possono essere attribuiti direttamente a Light.
Come passo successivo, esegui npx lazycodex-ai doctor, usa $init-deep per creare contesto in un vero repository grande e scegli un compito ben delimitato su più file. Completa il ciclo con $ulw-plan, $start-work e $ulw-loop. Confronta omissioni, rilettura del contesto e costo di accettazione con l’uso diretto di Codex: così saprai se il harness è adatto al progetto.
Completare con LazyCodex un ciclo di pianificazione, esecuzione e verifica
Parti dall’installazione e dalla memoria di progetto, approva il piano e termina l’esecuzione solo dopo che le prove hanno superato la verifica.
- 1
Step 1: Installare ed eseguire doctor
Installa l’edizione Codex Light con npx lazycodex-ai install, quindi esegui npx lazycodex-ai doctor per controllare plugin, hooks, MCP e configurazione. - 2
Step 2: Inizializzare la memoria di progetto
Esegui $init-deep nel repository, rivedi gli AGENTS.md generati nella root e nelle directory ed elimina le istruzioni obsolete o inesatte. - 3
Step 3: Generare e approvare il piano
Per un lavoro dai confini incerti, esegui $ulw-plan per esplorare il codice e scrivere un piano completo nelle decisioni. Approvalo solo dopo aver verificato ambito, criteri di accettazione e confini dei commit. - 4
Step 4: Eseguire il piano
Usa $start-work per eseguire il piano approvato, segui il progresso persistente in .omo/boulder.json e completa ogni checkbox di primo livello. - 5
Step 5: Verificare con le prove
Usa $ulw-loop quando serve un ciclo continuo e inserisci test, QA manuale e controlli dei confini nella completion promise. Considera il lavoro finito soltanto quando le prove sono state approvate.
FAQ
Che cos’è LazyCodex e in cosa differisce dall’uso diretto di Codex?
Come si installa e si controlla LazyCodex?
Quando si usano $init-deep, $ulw-plan, $start-work e $ulw-loop?
A cosa servono gli AGENTS.md creati da $init-deep?
Per quali progetti è adatto LazyCodex?
16 min di lettura · Pubblicato il: 28 lug 2026 · Aggiornato il: 30 lug 2026
Toolbox AI Agent
Se arrivi dalla ricerca, il modo più veloce per orientarti è passare all’articolo precedente o successivo della stessa serie.
Precedente
Continuum: cosa controllare quando scegli un agent runtime compatibile con OpenAI
Usa ShyftLabs Continuum come guida per scegliere un agent runtime: orchestrazione, routing dei modelli, memoria, strumenti MCP, esecuzione duratura, osservabilità e governance del deployment.
Parte 1 di 5
Successivo
guizang-social-card-skill: generare social card con Claude Code
Guida pratica a guizang-social-card-skill in Claude Code o Codex: installazione, dimensioni canvas, rendering, validazione, licenze degli asset e rischi AGPL-3.0.
Parte 3 di 5



Commenti
Accedi con GitHub per lasciare un commento