EnvHarness: l’ambiente di addestramento si adatta all’agente, senza riscriverlo

Gli agenti imparano da ambienti costruiti a mano e sempre uguali, che non sanno nulla dei loro punti deboli. Un gruppo di Google Cloud AI Research propone di non costruirne di nuovi ma di avvolgere quelli esistenti in uno strato di componenti che cambiano il punto di partenza, le regole e la lunghezza del compito, lasciando intatto il verificatore. Guadagni su cinque benchmark, da uno a nove punti, e un costo dichiarato.

Un istruttore di scuola guida non costruisce una città nuova per ogni allievo. Usa le stesse strade, ma sceglie come usarle: a chi frena male fa partire la lezione in salita, a chi si affida troppo al navigatore lo spegne, a chi guida bene ma si distrae alla fine aggiunge un parcheggio in retromarcia dopo l’ultimo incrocio. Le strade restano quelle, e l’esame finale anche. Cambia il modo in cui l’allievo le incontra, e lo decide l’istruttore guardando come guida.

È l’idea di un paper depositato su arXiv il 20 agosto 2026, EnvHarness: Awakening Static Worlds for Agent Learning. Lo firmano diciassette autori, con Chengsong Huang (Washington University in St. Louis, allora in stage da Google) come primo nome e, insieme a Zifeng Wang e Chen-Yu Lee, come autore di riferimento; quasi tutti gli altri sono di Google Cloud AI Research, e il codice è su GitHub (google-research/envharness). Molte delle stesse firme compaiono un mese dopo su RRSI, il paper sul freno da mettere agli agenti che si riscrivono l’harness. Lì si lavorava sul lato dell’agente; qui sull’altro lato, il mondo in cui l’agente impara.

Il problema: ambienti ciechi e fermi

Un agente basato su un modello linguistico impara interagendo con un ambiente: una casa simulata in cui spostare oggetti, un sito web da navigare, un repository con una issue da risolvere. L’ambiente propone il compito, tiene lo stato, risponde alle azioni e alla fine dice, con un verificatore, se il compito è riuscito. Costruirne uno è lavoro manuale costoso: la logica dell’interazione e il verificatore vanno scritti a mano. E il risultato è statico: si comporta allo stesso modo con qualunque agente e a qualunque stadio del suo apprendimento. Gli autori ne ricavano due limiti. Un ambiente fermo non sa colpire i punti deboli di un agente preciso; e quando l’agente ha imparato a risolverne i compiti, non ha più niente da insegnare.

Qui si dà per noto che cosa sia un agente (un modello che ragiona, chiama strumenti, osserva il risultato e ripete) e che cosa sia l’harness che lo circonda. Il ciclo, i tool e la memoria sono costruiti da capo nel libro.

Leggi «Agenti» nel libro →

La risposta recente è generare ambienti nuovi con un modello linguistico. Funziona, ma con due costi che il paper mette in fila. Le pipeline di generazione sono specifiche di un dominio: quella fatta per il web non serve al codice. E i verificatori generati da un modello possono essere sbagliati, per cui si genera in eccesso e si filtra, senza mai la certezza di aver tolto tutti gli errori.

Un harness, ma dall’altra parte

La proposta rovescia un’idea già familiare. L’harness di un agente è lo strato software (ciclo di esecuzione, strumenti, memoria, gestione del contesto) che trasforma un modello congelato in un agente senza toccarne i pesi. EnvHarness applica lo stesso principio all’ambiente: uno strato di componenti che avvolge un ambiente congelato e ne cambia il comportamento passando solo dall’interfaccia standard, i metodi reset e step, senza toccare il simulatore né il codice interno.

Formalmente l’ambiente è una tupla $E = (\mathcal{S}, \mathcal{A}, \mathcal{O}, T, R, s_0)$ (stati, azioni, osservazioni, transizione, ricompensa data dal verificatore, stato iniziale), e un componente è una trasformazione $E’ = w(E)$ che agisce solo dall’esterno. Il punto che conta è il verificatore: siccome i compiti di base non cambiano, ogni ambiente rimodellato eredita quello originale, scritto e controllato da persone. Nessun verificatore generato, nessun filtro a valle.

Stati, azioni, transizioni e ricompensa sono il vocabolario del reinforcement learning, e il paper lo usa senza spiegarlo. Il capitolo del libro lo costruisce da zero.

Leggi «Reinforcement Learning» nel libro →

I componenti proposti sono tre, illustrati tutti su un compito di ALFWorld, «metti una tazza pulita sulla scrivania», in cui la tazza è in bella vista.

Lo Stage cambia il punto di partenza. È una sequenza di azioni applicate allo stato restituito da reset:

$$s_0′ = T(\cdots T(T(s_0, a_1), a_2) \cdots, a_k)$$

Uno Stage può prendere la tazza, chiuderla in un cassetto e costringere l’agente a cercarla; un altro può pulirla in anticipo e lasciare solo l’ultimo passo. Nel primo caso il compito si fa più duro, nel secondo più corto.

Il Contract riscrive le regole dell’interazione, con tre mappe che trasformano azioni, transizioni e osservazioni. Può troncare la descrizione della stanza alle prime due frasi, bloccare l’azione «pulisci la tazza» se l’agente non la sta tenendo, togliere i comandi di teletrasporto e obbligare a muoversi passo per passo.

La Chain allunga il compito: attacca un secondo ambiente al primo (nell’esempio, «scalda una patata e mettila sul piano», nella stessa casa) e considera riuscito l’episodio solo se lo dicono entrambi i verificatori. I componenti si compongono, $E’ = w_{\text{chain}}(w_{\text{contract}}(w_{\text{stage}}(E)))$, e l’ordine conta: la composizione non è commutativa.

Avvolgere l’ambiente invece di riscriverlo Chain · allunga il compito Contract · step() azioni, transizioni, osservazioni Stage · reset() nuovo stato di partenza Ambiente congelato, non si tocca verificatore originale 2° ambiente verificatore riesce se riescono entrambi l’agente parla solo con lo strato esterno: stessa interfaccia, mondo diverso EnvRigger stesso modello della politica Osserva · 5 esecuzioni Diagnostica il difetto Scrivi i componenti Valida · 5 esecuzioni nuove rivedi (max 5) accetta scarta ciò che è irrisolvibile o troppo facile

Chi decide come rimodellare

I componenti sono generici; la scelta di quali usare, e con che parametri, dipende dal compito e dall’agente. La fa EnvRigger, un secondo agente che tratta la politica da allenare come una scatola nera. Osserva cinque esecuzioni sul compito originale, quelle riuscite e quelle fallite; diagnostica le cause (cicli di azioni ripetute, osservazioni lunghe lette male, vincoli degli strumenti fraintesi); scrive i componenti in codice; li valida con cinque esecuzioni nuove nell’ambiente rimodellato. Un candidato irrisolvibile o troppo facile viene scartato, uno mal calibrato torna alla scrittura, al massimo cinque volte. Se la politica risolve già tutto, la diagnosi cambia verso: l’ambiente va reso più difficile.

Due scelte di metodo pesano sulla lettura dei risultati. EnvRigger usa lo stesso modello della politica (Gemini-3.1-Flash-Lite su ALFWorld e WebArena, Gemini-3.5-Flash altrove), così, osservano gli autori, i guadagni non possono venire dal travaso di un modello più forte. E nell’impostazione principale i pesi non si toccano: dagli episodi negli ambienti rimodellati si estraggono delle skill, istruzioni riusabili nello stile di ReasoningBank, e si misura l’agente che le usa sui compiti di test, rimasti originali e disgiunti da quelli di addestramento. La Chain, per ora, resta fuori dal ciclo automatico: EnvRigger fatica a leggere lo stato interno di due ambienti uniti.

I numeri

Cinque benchmark in quattro domini, medie su tre esecuzioni, e un confronto che isola l’effetto del rimodellamento: stesse istanze di partenza, stesso numero di ambienti, stessa estrazione di skill, cambia solo da dove vengono gli episodi.

Su tutti e cinque i benchmark le skill ricavate dagli ambienti rimodellati superano quelle ricavate dagli originali, e dove esiste un generatore di ambienti da confrontare superano anche quello.

Skill da ambienti rimodellati medie su tre esecuzioni · più alto è meglio
Benchmark Ambienti originali EnvHarness Generatore
ALFWorld, media 62,4 68,3 62,6 GenEnv
WebArena 38,5 41,6 39,6 VeriEnv
SWE-bench Verified, risolti 49,88 52,58 50,12 SWE-smith
OfficeQA, exact match 54,4 56,2 non esiste
SpreadsheetBench 45,88 49,15 non esiste

Su ALFWorld la parte fuori distribuzione guadagna +9,0 punti (da 61,4 a 70,4). Su WebArena VeriEnv vince però sul sottodominio GitLab. Su SWE-bench Verified i passi medi per episodio scendono da 55,0 a 49,6: le skill dagli ambienti originali li avevano allungati rispetto al 53,6 di partenza. Sugli strumenti da ufficio c’è un dettaglio istruttivo: lì le skill dagli ambienti originali fanno peggio di nessuna skill (46,44).

Con il reinforcement learning, su Qwen3-8B base addestrato con GRPO, ALFWorld sale da 81,4 a 87,9 in distribuzione e scende di poco fuori (da 89,6 a 88,8); su WebShop il punteggio va da 75,6 a 79,2 e il successo da 66,0 a 67,4. La Chain, provata a parte su SWE-bench, porta i passi medi a 41,96, contro i 53,6 dell’agente senza skill, con un successo appena sotto quello degli ambienti originali (49,63 contro 49,88); unita alle altre skill dà 54,30 con 43,12 passi. E al crescere degli ambienti, a pari budget di 300, EnvHarness arriva a 54,79 continuando a salire, mentre gli ambienti originali si fermano a 52,13 e quelli generati a 50,37. Sui quattro modelli provati come politica su SWE-bench Verified, da Gemini 3.1 Flash-Lite a Claude Sonnet 4.6, il vantaggio sugli ambienti originali resta fra 2,7 e 3,7 punti.

Che cosa non dice

Molti margini stanno dentro il rumore. Su SWE-bench Verified la deviazione standard delle tre esecuzioni è di 2,72 punti per EnvHarness e 2,59 per gli ambienti originali, contro una differenza di 2,70. I guadagni su WebArena e OfficeQA sono dello stesso ordine. Il quadro è coerente (nelle tabelle principali EnvHarness non perde mai contro gli ambienti originali), ma i singoli numeri, presi uno per uno, non sono conclusivi. Nella prova di generalizzazione su ALFWorld, che toglie un tipo di compito e misura su quello, la media sale di 3,1 punti ma il tipo «scalda» perde 8,7.

Il costo è più alto, e il paper lo scrive. Secondo le stime in appendice, su ALFWorld il progetto dei componenti consuma 1,46 milioni di token contro 38 mila di GenEnv, e il totale è 228 milioni contro 64: 3,5 volte tanto. Gli autori osservano che GenEnv simula gli episodi con un modello invece di eseguirli, e che contro VeriEnv, che li esegue davvero, il conto è pari (137,3 contro 137,8 milioni). È un argomento ragionevole; resta che la qualità si paga in esecuzioni reali.

Il perimetro è stretto. Serve un ambiente con interfaccia reset/step su azioni e osservazioni testuali, e soprattutto con un reset deterministico: lo Stage deve poter rimettere l’ambiente in uno stato scelto. Restano fuori, per ammissione degli autori, gli agenti che agiscono su servizi reali (un’email spedita non si ritira), i robot fisici e, per ora, gli ambienti visivi. E la Chain, per ereditare verificatori affidabili, deve limitarsi a concatenare: con rami o compiti intrecciati non ci sono due verdetti da combinare, e in ogni caso non ha modo di sapere se i compiti che unisce abbiano senso insieme.

Perché conta adesso

Il dibattito sugli agenti si è spostato negli ultimi mesi dai pesi all’impalcatura: harness che si riscrivono, skill che si accumulano, memorie che si potano. EnvHarness porta lo stesso ragionamento dall’altra parte del tavolo, e la mossa ha un’utilità pratica prima che teorica. Chi ha un benchmark costoso, con verificatori scritti a mano e controllati, può ricavarne ambienti nuovi senza scriverne altri e senza fidarsi di un verificatore generato. Gli autori la riassumono così: costruire ambienti diventa un problema di avvolgimento, non di scrittura. I margini misurati sono piccoli e il costo è reale. Ma se l’istruttore conta più delle strade, la scarsità di ambienti da cui il paper parte si può allentare senza costruirne di nuovi: gli autori parlano di una strada praticabile, non di un problema risolto.

I commenti sono riservati agli iscritti.

Accedi per commentare