I contenuti di questo sito sono stati tradotti mediante intelligenza artificiale (IA) o tecnologia di traduzione automatica e potrebbero contenere errori.

Skip to content

Come abbiamo raddoppiato l'accettazione del codice AI insegnando ai modelli a pensare come gli ingegneri di Roblox

Intelligenza del codice sensibile al dominio

BuilderAI Figure 2.webp

Tutti sono entusiasti del prossimo modello di IA rivoluzionario, ma il segreto per raddoppiare l'efficacia degli strumenti di IA interni a Roblox non era un nuovo modello. Era insito nella storia del nostro codice. Sfruttando anni di codice e revisioni da parte dei nostri esperti di settore, abbiamo portato i tassi di accettazione dei suggerimenti generati dall'IA per le richieste di pull (PR) da circa il 30% a oltre il 60% su un insieme di 10.000 PR e abbiamo aumentato l'accuratezza di valutazione di un progetto di pulizia del codice autonomo oltre il 90% nello stesso periodo.

Colmare il divario di qualità dell'IA

In tutto il settore, dal 50% al 60% del tempo di codifica è dedicato alla manutenzione del software.1 Roblox non fa eccezione. 

Sulla carta, le attività di manutenzione ripetitive con requisiti ben definiti e uno spazio di problema limitato sono candidate perfette per l'automazione tramite IA. In pratica, i nostri assistenti IA hanno avuto difficoltà con l'accuratezza della valutazione e l'accettazione da parte degli ingegneri.

In Roblox, il problema non è la capacità; è il contesto. Un modello generico non ha vissuto due decenni di ingegneria Roblox. Non ha visto le 700.000 richieste di pull che abbiamo unito negli ultimi tre anni, né ha imparato dai 1,7 milioni di commenti di revisione del codice in cui i nostri ingegneri più esperti definiscono e difendono i nostri standard di codifica.

Gli assistenti IA che ignorano questa storia non riescono a conquistare la fiducia di ingegneri di livello mondiale. Nonostante la metà degli ingegneri di Roblox adotti assistenti basati sull'IA, solo circa il 20% dei suggerimenti generati dall'IA viene accettato dopo la revisione umana. Il nostro sondaggio trimestrale sulla produttività ingegneristica riflette questa realtà. Gli ingegneri valutano l'impatto dell'IA sulla produttività a 4,02 su 5, ma attribuiscono alla qualità del codice generato dall'IA un punteggio di fiducia di soli 3,09 su 5. In breve, l'IA aiuta, ma la fiducia rimane limitata, in particolare nel C++ legacy e in ambiti di codice più complessi.

Per colmare questo divario di contesto, abbiamo investito in una piattaforma di intelligenza del codice agentica costruita sulla base della storia ingegneristica di Roblox, allineata a modelli di riferimento esperti e convalidata attraverso una valutazione rigorosa. Questa piattaforma di intelligenza del codice è progettata non solo per generare suggerimenti di codice, ma anche per iterare con la profondità istituzionale di un ingegnere di Roblox.

Imparare dal meglio dell'esperienza ingegneristica di Roblox

Il corpus ingegneristico di Roblox abbraccia quasi 20 anni di commit, documenti di progettazione e telemetria di produzione, un set di dati straordinariamente ricco che cattura l'evoluzione dei nostri sistemi e il modo in cui i nostri ingegneri hanno risolto problemi complessi.

La piattaforma di intelligenza del codice mira a trasformare quei dati in un grafico di conoscenza strutturato, una sfida ingegneristica significativa. In un ambiente poliglotta di grandi dimensioni, il codice non è solo file di testo. È una rete complessa di target di compilazione, istanze di template C++ e dipendenze Lua dinamiche. La semplice analisi del testo non è sufficiente; il sistema deve comprendere le profonde relazioni semantiche sepolte all'interno del codice stesso, specifiche della nostra architettura unica. 

Un'altra sfida è rappresentata dal tracciamento e dall'allineamento temporale. Per poter ragionare su sistemi interconnessi, un sistema agentico deve collegare i repository di codice statico alla telemetria di runtime rumorosa e mappare milioni di segnali di produzione alla versione esatta del codice che li ha generati, anche mentre il codice continua ad evolversi.

undefined

Per risolvere questo problema, la nostra strategia consiste nell'unificare il controllo delle versioni, i grafici di compilazione e la telemetria di runtime in una rappresentazione ibrida simbolico-vettoriale, preservando sintassi, semantica e relazioni. Ciò consente alla piattaforma di intelligenza del codice di comprendere il codice allo stesso modo degli ingegneri senior: come sistemi interconnessi plasmati da logiche di progettazione, compromessi e dati sulle prestazioni, non come file di testo isolati.

Estrazione di segnali di esperti attraverso l'allineamento di esempi

La vera competenza si nasconde nei modelli, nei commenti di revisione, nelle cronologie dei commit e nei sottili idiomi del codice. L'intelligenza del codice fa emergere questa saggezza implicita tramite un motore di allineamento degli esempi, che consente agli ingegneri di curare esempi "d'oro" di implementazioni ideali o di logiche di revisione.

In precedenza, un ingegnere esperto poteva passare ore ogni settimana a revisionare le PR, segnalando ripetutamente l'uso di una chiamata FetchData bloccante all'interno di loop ad alta frequenza, un modello che sembra semanticamente corretto ma causa una grave latenza alla scala di Roblox. Se l'esperto è fuori città o non rileva un errore, la sua conoscenza potrebbe non essere applicata e un anti-modello potrebbe insinuarsi nella produzione e causare un'interruzione per la nostra comunità.

Utilizzando il motore di allineamento, quell'ingegnere può codificare il proprio giudizio in un esempio in linguaggio naturale. Si tratta di una definizione strutturata che combina il modello di codice (il "cosa") con il ragionamento (il "perché"). Ora, il sistema rileva automaticamente la chiamata bloccante, la segnala, spiega il rischio di latenza e rimanda direttamente alla documentazione interna sulle best practice asincrone:

Il blocco all'interno di un ciclo ad alta frequenza porta ad un aumento della latenza e all'esaurimento dei thread. Quando viene effettuata una chiamata `FetchData` in un'attività asincrona, avvisare l'autore riguardo alla latenza e all'esaurimento dei thread. `FetchData` va bene purché l'attività sia già stata messa in attesa. Fornire un collegamento diretto alle best practice asincrone all'indirizzo: internal_guidance/async.

Questo codifica efficacemente le conoscenze acquisite a fatica da un ingegnere in anni di esperienza. Il sistema trasforma un commento di revisione una tantum in una protezione permanente e automatizzata.

“Ciò che rende potente il motore di allineamento non è solo il fatto che migliora la qualità del codice, ma che potenzia il tutoraggio. Codifichiamo la competenza e l’intuizione dei nostri esperti più esperti nella piattaforma stessa. È come avere un esperto senior di Roblox che fa pair programming con te tutto il giorno, ogni giorno.” —Tom Knych, Direttore tecnico senior

Ma anche i nostri esperti hanno molto da fare, e chiedere loro di ricordare e mettere per iscritto tutte le loro intuizioni chiave è, nel migliore dei casi, un processo che richiede tempo e comporta perdite. Quindi, come possiamo aiutarli a catturare i loro migliori consigli durante la loro permanenza in Roblox?

Sono già lì, scritti nei loro meticolosi commenti di revisione del codice e immortalati in ogni singolo PR che arriva in produzione:

BuilderAI Figure 2.webp

Indirizziamo i commenti storici delle PR attraverso una pipeline che pulisce ed estrae i temi di maggior valore dall'esperienza Roblox. Inizialmente, i dati rumorosi sono pieni di commenti non utilizzabili come elogi o correzioni di errori di battitura, mentre i feedback di valore sono spesso scritti in forma abbreviata che si basa fortemente sul contesto. Ad esempio, una nota come "usa il nuovo modello qui" è priva di significato senza una comprensione del file specifico e del diff. Il sistema deve tradurre queste interazioni specifiche in regole riutilizzabili e generalizzabili.

Per risolvere questo problema, utilizziamo un algoritmo multistadio che rileva temi ricorrenti in migliaia di PR senza intervento umano. Il sistema incorpora i commenti storici nello spazio vettoriale, utilizza il clustering avido per trovare gruppi di feedback correlati e applica un affinamento guidato da LLM per fonderli in modelli di alto valore.

Il risultato è un elenco classificato di esempi candidati (o insegnamenti), ordinati in base alla frequenza con cui compaiono e all’ampiezza con cui vengono citati da diversi revisori, completo di riferimenti ai commenti originali. I nostri esperti di settore esaminano quindi i candidati, apportano modifiche se necessario e decidono quali promuovere nella base di conoscenza come best practice fondamentali. Dopo le prime anteprime di questa pipeline, i responsabili dei repository erano entusiasti di vedere i loro argomenti preferiti emergere come linee guida chiave e hanno voluto immediatamente iscrivere i loro repository all'analisi.   

undefined

Il passo finale è l'agente di allineamento, che assiste sia gli ingegneri umani che gli agenti di codifica AI verificando tutte le modifiche rispetto alla base di conoscenza di riferimento. Questa valutazione flessibile può essere applicata durante tutto il ciclo di vita dello sviluppo del software: in fase di codifica, in fase di unione e persino con un agente di miglioramento continuo che cura autonomamente il codice base di Roblox man mano che la base di conoscenza cresce.  

Utilizzando questo apprendimento contestuale per ancorare il comportamento dell'IA agli standard di Roblox, abbiamo visto il tasso di superamento di un agente di codifica IA sul suo dataset di valutazione di riferimento passare dall'84% al 100%. Non stiamo solo insegnando all'IA di Roblox come codificare; stiamo insegnando alla nostra IA come pensano gli ingegneri di Roblox.

Imparare dai segnali negativi

Sebbene l'allineamento esemplare abbia aumentato significativamente la nostra linea di base per la qualità del codice, il nostro obiettivo finale è raggiungere il punto in cui il primo passaggio del codice suggerito dall'IA sia affidabile quanto il lavoro dei nostri ingegneri più esperti. Ecco perché utilizziamo ogni suggerimento dell'IA rifiutato, ogni rifattorizzazione fallita o ogni unione che induce regressione come un segnale di alto valore che possiamo reimmettere nel sistema. Questo crea una pipeline che permette agli agenti di migliorare continuamente e imparare dai propri errori.

I risultati negativi possono essere filtrati ed etichettati da esperti del settore con un ragionamento dettagliato, una catena di pensiero e qualsiasi contesto aggiuntivo relativo al fallimento. Questi dati vengono quindi incorporati semanticamente e indicizzati per il recupero. Quando la nostra piattaforma di intelligenza del codice propone un nuovo output, esegue una ricerca semantica attraverso questi dati, richiamando gli errori passati e il feedback dei revisori per evitare di ripeterli.

Questo ciclo di feedback chiuso trasforma ogni revisione del codice in dati di apprendimento strutturati, perfezionando continuamente il comportamento futuro degli agenti attraverso un addestramento basato sull'avversario e sulla critica.

Costruire un solido quadro di valutazione

La fiducia si costruisce attraverso un comportamento affidabile e prevedibile che inizia con la misurazione. Abbiamo progettato un sistema di valutazione dedicato per monitorare le prestazioni dei nostri agenti nel tempo.

undefined

Il framework include:

  • Benchmark a livello di attività: precisione e richiamo su migliaia di attività di ingegneria di Roblox, come refactoring, test e correzione di bug.
  • Strumenti di simulazione: PR sintetiche con risultati deterministici per un punteggio riproducibile.
  • Panel "human-in-the-loop": confronto da parte di esperti tra i risultati dell'IA e le implementazioni di riferimento.
  • Framework di esecuzione: quando si uniscono i miglioramenti degli agenti, le valutazioni rilevanti vengono parallelizzate ed eseguite come parte della suite di integrazione continua (CI) pre-merge, dando agli ingegneri un'elevata fiducia nelle loro modifiche. 
  • Metriche longitudinali: regressioni post-merge, frequenza di rollback e variazioni di latenza monitorate tra le varie versioni.
  • Osservabilità pervasiva: tracciamento automatico e visualizzazione dell'attività degli agenti per metterli in relazione con il resto di Roblox e per integrarli senza intoppi nella valutazione online e offline.

Questo sistema produce un punteggio di qualità degli agenti che tiene traccia con precisione dei cambiamenti di prestazioni nel tempo, consentendo confronti standardizzati tra le revisioni degli agenti e le versioni dei modelli. Da quando abbiamo introdotto l'allineamento degli esempi e una suite di valutazione completa, il tasso di accettazione dei suggerimenti PR di un agente di intelligenza del codice di Roblox è migliorato da circa il 30% a oltre il 60% su un set di 10.000 PR, un primo indicatore di prestazioni affidabili e allineate al dominio. Attraverso lo stesso processo, il nostro agente di pulizia dei flag delle funzionalità ha aumentato la sua precisione complessiva dal 46% a oltre il 90%.

La strada da percorrere: integrare il giudizio degli esperti in ogni strumento 

Stiamo migliorando l'utilità dei nostri sistemi interni consolidati creando un livello di MCP e wrapper di strumenti ed evolvendo la piattaforma di intelligenza del codice da attività mirate a un sistema che mantiene sano il codice di Roblox. 

Immaginiamo un futuro ingegneristico in cui conoscenze storicamente difficili da scalare, come il contesto di runtime e il giudizio degli esperti, siano integrate in ogni strumento e flusso di lavoro. Quando l'intelligenza del codice, l'allineamento degli esempi e l'osservabilità si uniscono, otteniamo un vantaggio duraturo: migliore qualità, consegna più rapida e un codice più sano e in continua evoluzione. L'obiettivo a lungo termine è dare a ogni ingegnere il potere della memoria istituzionale, a ogni team la fiducia necessaria per distribuire rapidamente e a ogni ingegnere la libertà di concentrarsi sull'innovazione, non sulla manutenzione. 

1 Sulla base dei dati di settore tratti dall'analisi della spesa IT 2024 di Deloitte.