
Gli attuali strumenti di comprensione del codice basati su AI che utilizzano la sommamarizzazione, la generazione aumentata dal recupero (RAG), e i grafici della conoscenza sono come usare una lente di ingrandimento per mappare un continente. Sono fragili e spesso manca l'immagine più grande - soprattutto per grandi codebases.
Ispirato da Rich Sutton'sLezione di Bitter, il Metodo di Contesto Intero prende un approccio diverso. Invece di abbattere il codebase in blocchi e costruire codebase comprensione pezzo per pezzo utilizzando divide-and-conquer e trucchi software, il nostro metodo abbraccia una soluzione olistica, apprendimento-driven. In questo breve post, esamineremo perché i metodi frammentati cadono brevi e disegnano paralleli all'evoluzione dell'IA. Riporteremo anche alcuni risultati qualitativi iniziali con il nostro metodo, con un'analisi più approfondita in un post successivo. Il futuro della comprensione del codice è qui, e non si basa sui trucchi del software e sulla euristica progettata dall'uomo.
La lezione di Bitter e perché scorciatoie Fail
Rich Sutton, uno dei fondatori dell'apprendimento di rinforzo computazionale (e anche autore del mio libro di testo preferito), ha scrittoLa lezione di Bittersul suo sito web personale. È un promemoria che "i metodi generali che sfruttano il calcolo sono alla fine i più efficaci, e da un ampio margine." I metodi generali superano costantemente le conoscenze specialistiche, umane e di dominio. La storia dell'IA supporta questo con esempi sorprendenti.
- Chess, Deep Blue e AlphaZero: Nel 1997, Deep Blue ha sconfitto il campione del mondo, Kasparov. Profondo Blue ha usato una combinazione di enormi tattiche di ricerca e scacchi umani. Nel 2017, AlphaZero di DeepMind ha masterizzato scacchi da zero attraverso il self-play. Non solo ha superato tutti gli esseri umani, ma ha anche fatto saltare Stockfish - il miglior programma di scacchi del computer nel mondo - fuori dell'acqua. Da allora, Stockfish e altri programmi di scacchi "tradizionali" hanno anche iniziato a includere reti neurali nei loro motori per rimanere competitivi.
- Visione del computer: Nei primi anni 2000 i sistemi di visione dipendevano dall'ingegneria delle caratteristiche, come SIFT o HOG. Entro il 2016, profonde reti neurali convoluzionali, come ResNet, addestrate su pixel grezzi, hanno superato questi metodi con accuratezza sovrumana.
- StarCraft e AlphaStar: Nel 2019, l'AlfaStar di DeepMind ha dominato StarCraft II di Blizzard modellando interi stati di gioco, tra cui centinaia di unità, mappe e strategie, senza contare su regole selettive, superando giocatori professionisti.
- Archeologia: Nel 2022, DeepMind di Google ha ricostruito le compresse cuneiformi antiche imparando dai modelli linguistici grezzi, non le ipotesi di esperti.
- Cartella delle proteine: Nel 2023, AlphaFold 2 risolse le sfide pieghevoli della proteina di lunga data imparando dai dati molecolari grezzi, bypassando i modelli chimici di produzione umana.
Il takeaway sembra essere che l'apprendimento olistico e generalizzato dai dati grezzi insieme a un sacco di calcolo costantemente supera le scorciatoie intelligenti. Ci aspettiamo di vedere un arco simile nella comprensione del codice AI pure.
Perché Code Comprehension Struggles per grandi codebases
All'inizio del 2025, i copiloti di codice lottano quando il contesto di cui hanno bisogno per lavorare con più di decine di migliaia di righe di codice. I generatori di documentazione codice AI producono risultati mancanti per basi di codice enormi. Questo è principalmente a causa delle finestre di contesto più piccole (~100k token) di molti LLM e dei limiti dei trucchi comuni utilizzati per superarlo. Trucchi come:
- Summarizzazione e memoria: Un approccio comune per affrontare grandi contesti è quello di assegnare una parte di esso verso un riassunto di tutto ciò che si vede finora. Questo processo, dal suo stesso design, è smarrito. Per la comprensione del codice, mentre questo approccio può catturare le dipendenze locali, spesso manca dipendenze globali cross-module attraverso la base di codice.
- Generazione aumentata (RAG): RAG si basa sull'avere un database vettoriale di pezzi della base di codice e recupera i pezzi più "rilevanti" attraverso la base di codice per una data query. RAG può essere utile per il recupero di informazioni specifiche, ma è spesso inaffidabile. Inoltre, RAG non è utile per le attività che hanno bisogno di un gran numero di pezzi.
- Grafi di conoscenza (KGs): I KG sono grandi per rispondere alle domande all'interno di un dominio specifico in cui il vocabolario degli oggetti e delle relazioni è limitato. Tuttavia, lottano per scalare per grandi e in evoluzione codebases.
Gli sviluppatori di finestre a contesto più piccolo forzano a rompere i codebase in frammenti e a lavorare con un numero limitato di frammenti alla volta. Questo approccio perde la sfumatura dal codice è un artefatto vivente con modelli che spaziano migliaia di file. Il nostro team ha generato la documentazione per PyTorch (1,5+ milioni di linee di codice) utilizzando tecniche basate su riassunti standard e ha trovato la documentazione risultante di essere di bassa qualità e mancanti dipendenze critiche. Al contrario, il nostro Whole Context Method ha prodotto una documentazione molto più chiara e precisa.
Il metodo del testo integrale
E se invece di concentrarci su un uso economico dei gettoni, ci concentrassimo sulla massimizzazione? Potremmo smettere di frammentare codebases e catturare anche le interdipendenze più complesse. L'intero metodo del Contesto lo fa esattamente. Utilizza LLM con le più grandi finestre di contesto disponibili per elaborare interi repository, tra cui ogni file, commit e commento, come un unico contesto unificato. Ecco come funziona:
- Ingestione completa: Elabora enormi codebases, come PyTorch (linee 1,2M), in un colpo solo, catturando interdipendenze che i metodi frammentati mancano.
- Apprendimento consapevole: Si perfeziona sulle storie di commit per comprendere l'intento e l'evoluzione, oltre il giusto codice statico.
- Mozzo di documentazione vivente: Crea un hub interattivo e queryable che si aggiorna automaticamente mentre il codebase evolve, servendo sviluppatori e manutentori.
Conclusione: abbracciare la lezione di Bitter
AlphaZero si è insegnato scacchi di livello mondiale basati su metodi generali di apprendimento, self-play, e la ricerca, insieme a compute massiccia. Allo stesso modo, il Metodo di Contesto Intero non dipende dalla euristica artigianale, dalle astrazioni perdute o dalle tubazioni modulari che tentano di “outsmart” il problema. Invece, abbraccia la Lezione Bitter: che la vera comprensione non deriva dalla codifica della conoscenza del dominio fragile, ma dalla leva di sistemi di apprendimento scalabili che possono scoprire i modelli che stiamo cercando di ingegnerizzare a mano.
Il codice, come le menti, è irreducibilmente complesso. Come scrive Sutton, il mondo reale è pieno di struttura arbitraria: preoccupazioni di taglio incrociato, hack legacy, interazioni dinamiche tra migliaia di moduli. Il desiderio di semplificarlo con i modelli umani-autori è una trappola. L'unico modo affidabile in avanti è quello di costruire sistemi che possono imparare a capire, non sistemi che contengono solo la nostra comprensione corrente.
In un post futuro, condivideremo più dettagliati benchmark ed esempi attraverso grandi codebases come PyTorch, Kubernetes e sistemi enterprise legacy. Ma anche ora, una cosa è chiara: La prossima generazione di strumenti di sviluppo non verrà da più intelligenti hack. Verrà dal vedere tutto.
Referenze
- Sutton, R. S. (2019). Il Bitter Lesson (Idee Incomplete).
- Silver, D., et al. (2017). Mastering scacchi e shogi da self-play con un algoritmo generale di apprendimento del rinforzo (arXiv).
- Vinyals, O., et al. (2019). Livello Grandmaster in StarCraft II utilizzando l'apprendimento multi-agente di rinforzo (Nature).
- Jumper, J., et al. (2021). Previsione della struttura proteica altamente accurata con AlphaFold (Natura).
- Assael, Y., et al. (2022). Restaurare e attribuire testi antichi utilizzando reti neurali profonde (Natura).