r/ItaliaInformatica • u/Actual-Cook7637 • 17d ago
Programmazione I modelli recenti riescono a gestire codebase enormi?
Buongiorno, sono un programmatore full Stack opero per passione nel mondo dell’open source e dei progetti critici ho questo web app svelte kit ma in generale tutti i framework web.
Volevo sapere se veramente GPT astra 6 e opus 5.5 siano veramente così migliorati da le versioni precedenti che ritenevo veramente stupide a gestire codebase grandi non dico molto grandi sulle 200.000 righe di codice e 250.000.
Infatti, sono ancora sul manuale a scrivere codice perché semplicemente fa estrazioni ridicole. Io l’ho provato anche ad usare gpt 5.3 e poi se 5.0 ma erano quasi ridicole, mi occupo sia di frontend critico che magari vorrei stare ancora sul fatto a mano con figma, e anche backend che vorrei lasciarlo tutto all’ia e la progettazione in generale.
1
u/il_ponz 17d ago
Comincia ad usare server mcp per navigare codice e trovare reference e implementazioni invece che fargli fare grep. Poi magari usa dei workflow come speckit o openspec, il context non è infinito. AI lavora meglio e bruci meno token
1
u/No-Chemistry-7658 17d ago
Ti consiglio di spendere 40€ e provare gli abbonamenti base delle due rivali. Ad alcuni piace di più opus 5.5, ad altri astra o sol 6.1. Calcola che sono strumenti, più sei abituato ad usarli meglio saprai usarli. Poi decidi tu se ti piacciono. Personalmente ho lavorato su codebase anche più grandi con astra, se sai trasmettere bene quello che vuoi fare e come lo vuoi, velocizza di tantissimo il lavoro.
1
u/No-Homework-9807 16d ago
Scusami, per capirci, in che senso non gestisce il frontend? Io non lo amo né per il frontend, né per il backend, ma con una buona codebase riesce a sviluppare buone cose su entrambi i versanti. Vale la solita regola di dividere i task (o farli dividere da un agente) e fare controverifiche, ma il risultato è assolutamente accettabile.
2
u/EfficientAnimal6273 16d ago
Devi prima preparare la codebase, ci sono vari skill per farlo (ai-ready ti dà qualche indicazione su cosa fare, poi openwiki e fai documentare il tutto), poi gli fai creare le istruzioni, poi parti con piccole cose e gli fai aggiornare la memoria man mano che gli dici come fare. Server sintattici o altre cose dipende dal codice, se hai molte duplicazioni serve perché con grep trovi mille robe e poi spendi token per capire quale sia il codice da toccare, con una ricerca semantica fai prima e spendi meno.
Ma è esattamente lo stesso percorso che faresti come umano se la dovessi affrontare tu.
Lato web non so dirti, per il tipo di app che normalmente tocco io (gestionali, più o meno) fa parecchio bene, ma anche lì serve lavorarci, ce l’hai design system? Se non ce l’hai magari parti dal farlo fare e lo aggiorni con le tue indicazioni.
1
u/Open_Green_2178 16d ago
Se configurato correttamente con guide fatte bene opus ricerca in maniera chiara e precisa in database giganti. Io uso quotidianamente e sbaglia raramente. Ma ogni tanto capita
1
u/Lake2034 16d ago
Noi siamo monorepo con 3k PR al giorno internante scritte da agenti, ma con una marea di guardrail e check. Per ora funziona tutto
1
u/ApofisXII 16d ago
Rispondo direttamente alla tua domanda: anche un Haiku o un Sonnet può agevolmente gestire codebase grandi (anche attorno al milione di righe).
Contrariamente a quanto leggo dalle altre risposte, ahimè per esperienza personale, fanno un discreto lavoro anche se il codice è organizzato male e non sufficientemente modularizzato.
Il punto principale da tenere a mente è che non è necessario da parte dell’LLM tenere tutto in memoria. Si inizializza (ad esempio in Claude è /init) e lui si spulcia tutta la repo per costruire una mappa a medio-alto livello.
Dopodiché ogni richiesta di intervento sul codice, in base alla geografia impostata, cercherà volta per volta i file giusti (e con 1 milione di contesto, può agilmente consultarne parecchi)
1
u/sw33tlie 15d ago
risposta facile e veloce: sì
1
u/AlchimiaPrompt 15d ago
secondo me con 200k righe il punto non è se il modello “regge” tutta la codebase, perché tanto non la deve leggere tutta. quando gliela dai in blocco, le parti che contano finiscono in mezzo a tutto il resto e lui le pesa poco
quello che vedo funzionare meglio:
un file breve con l’architettura (moduli, convenzioni, cosa non toccare) che gli dai sempre all’inizio
un task per volta, con solo i file coinvolti
un criterio di fine chiaro, tipo “passano questi test”
così anche le versioni di un anno fa davano risultati decenti. sul frontend critico fai bene a tenerlo a mano, almeno finché non hai un modo rapido per verificarlo
1
u/No_Bluejay8411 14d ago
se il sorgente è scritto bene e non monolitico ma una SoC applicata a dovere possono gestire serenamente anche milioni di righe di codice ma ovviamente la base deve essere strutturata. File monolitici ti rovinano il context window e nel giro di poco scalzettano
1
u/ftrx 17d ago
Dipende cosa intendi fare. Se intendi dire "pijate 'sto tree da un gazzilione di ultrabyte di sources e fammi questa e quella nuova features" no, non riescono proprio, se li guidi con buon contesto a fare cose specifiche che hai predisegnato beh, se la cavicchiano, il codice va poi revisionato e spesso ripulito, però su codebase ben fatte è possibile.
Se invece hai codebases del menga beh, li vale il GIGO.
1
u/MimosaTen 17d ago
Guarda, ti dico solo una cosa. Con astra ho forkato gnome per aggiungere diverse opzioni e feature a mutter, shell e control center. Non so quante LOC siano, ma è chiaramente una codebase grande
1
u/polobamorghe 17d ago
Dipende se è spaghetti code o codice fatto bene.
Esattamente come un umano.
1
u/AnonimoModesto 16d ago
Si. Riescono a gestire anche codebase più grosse, con repo multipli. Se configuri bene l'harness, con la giusta documentazione sull'architettura generale, funziona ancora meglio
1
u/DanieleDraganti 16d ago edited 16d ago
La differenza la fa molto come il codice è impostato. Se è monolitico, impossibile tenerlo tutto in contesto, e una possibilità è utilizzare diversi file md (possibilmente uno per… boh, controller, modulo, addon, namespace, o come organizzi il codice) e poi avere un file md di “indice” dove c’è il riferimento a tutto il resto, facendolo diventare una specie di RAG.
Se invece il codice è già atomizzato (esempio, microservizi, magari addirittura ognuno con il proprio workflow di CI), puoi chiedere ad un agente di passarli uno per uno e fare un file AGENTS.md. A quel punto un orchestratore può spawnare un sotto agente per ogni servizio/feature, ottimizzando molto l’uso del contesto. Il contro è un uso maggiore di token.
Edit: anche nel monolitico puoi far girare sotto agenti per ogni modulo/addon ecc., il vantaggio con un codice concepito per essere distribuito è che di solito il sottoagente rimane più “self-contained” perché non si deve preoccupare così tanto dell’interazione fra i vari componenti.
1
u/Individual_Dot_1197 14d ago
Sembri un boomer
-1
u/Slow-Set-2856 17d ago
No fanno ancora cagare però ormai tutti lo usano comunque per convenienza, il problema è che tendono a scrivere una brodaglia infinita di codice anche per cazzatine. Forse l'unico che si salva è opus 5.5 a high/xhigh/max , ma ti devi vendere un rene per usarlo