Chi cucina da un quaderno di ricette di famiglia conosce il metodo. La torta viene troppo asciutta, e a margine si scrive a matita «dieci minuti in meno». La volta dopo si prova. Se va meglio, l’appunto resta; se no, si cancella, ma ci si ricorda di averlo provato. Nessuno riscrive la ricetta da capo dopo ogni torta: si perderebbe quello che già funzionava, e non si saprebbe più quale correzione ha fatto la differenza.
È, quasi alla lettera, il metodo che propone SkillOpt: Executive Strategy for Self-Evolving Agent Skills, depositato su arXiv il 22 maggio 2026 da quindici ricercatori di Microsoft, Shanghai Jiao Tong, Tongji e Fudan, con Yifan Yang e Xue Yang come autori di riferimento. L’interesse è pratico: parla del file che chiunque usi un agente di programmazione ha già sul disco.
Che cosa si ottimizza
Una skill è un documento in linguaggio naturale che si mette nel contesto di un agente prima che lavori: procedure, convenzioni di dominio, regole sull’uso degli strumenti, formati di risposta, errori tipici da evitare. È il SKILL.md di Claude Code o di Codex. Il modello resta congelato; a cambiare è il testo che lo accompagna. Sui modelli chiusi adattare i pesi spesso non si può, su quelli aperti costa caro.
Oggi queste skill si scrivono in tre modi: a mano, facendole generare in un colpo solo da un modello, oppure lasciando che l’agente le riscriva da sé dopo aver visto i propri errori. Secondo gli autori nessuno dei tre si comporta come un ottimizzatore: le prime due non imparano dal feedback, la terza impara male, perché ogni riscrittura può cancellare quello che funzionava o introdurre una regola che contraddice la precedente. Che le skill scritte a mano aiutino in modo disuguale lo aveva già misurato SkillsBench, di cui abbiamo scritto; qui la domanda è un’altra: se la skill è lo strato che si adatta, come la si addestra?
Qui si dà per noto il ciclo di un agente (un modello che ragiona, chiama uno strumento, osserva il risultato e ripete) e il posto che hanno prompt e memoria in quel ciclo. Lo spiega il libro da capo.
L’analogia presa sul serio
La risposta di SkillOpt è trattare il documento come si trattano i parametri di una rete, con la stessa disciplina che rende riproducibile l’addestramento. Gli autori la dicono «operativa, non decorativa»: ogni pezzo del giro ha un corrispettivo preciso.
Il passo in avanti è un lotto di compiti (40 per passo, nella configurazione di base) eseguiti dall’agente congelato con la skill del momento; l’harness registra messaggi, chiamate agli strumenti, output dei comandi, esiti del verificatore. Il passo all’indietro lo fa un secondo modello, l’ottimizzatore, che separa successi e fallimenti e li legge a gruppi di otto. Il dettaglio conta: una traiettoria sbagliata suggerisce una toppa aneddotica, un gruppo di fallimenti mostra l’errore che si ripete, come la fonte sbagliata consultata ogni volta. Dai fallimenti nascono regole correttive, dai successi le regole da proteggere, e il risultato è una lista di modifiche puntuali: aggiungi, togli, sostituisci.
Poi viene il pezzo che distingue il metodo da una riscrittura libera. Il learning rate testuale $L_t$ è il numero massimo di modifiche applicate al passo $t$: l’ottimizzatore ordina quelle proposte per utilità attesa e tiene solo le prime $L_t$. Di default si parte da quattro e si scende a due con un decadimento a coseno. Così ogni versione resta abbastanza vicina alla precedente perché si capisca che cosa ha aiutato.
Infine il gate. I dati si dividono in addestramento, selezione e test, come in qualunque esperimento di machine learning. La candidata $s’$ si valuta sull’insieme di selezione $D_{\text{sel}}$ con lo stesso modello e lo stesso harness, e sostituisce la skill corrente $s_t$ solo se
$$\frac{1}{|D_{\text{sel}}|}\sum_{x \in D_{\text{sel}}} r_x(s’) \;>\; \frac{1}{|D_{\text{sel}}|}\sum_{x \in D_{\text{sel}}} r_x(s_t)$$
dove $r_x \in [0,1]$ è il punteggio sul compito $x$. La disuguaglianza è stretta di proposito: a parità si scarta, così la skill non deriva in silenzio. L’insieme di test resta chiuso fino alla fine.
Perché servano tre insiemi distinti, e perché scegliere sul test ciò che si misura sul test gonfia il risultato, è la lezione della validazione. Il libro la costruisce con i modelli classici, e vale identica qui.
Due accorgimenti completano il giro. Le modifiche bocciate non si buttano: finiscono in un buffer dei rifiuti, con il calo di punteggio che hanno causato, e l’ottimizzatore lo rilegge per non riproporle. E a fine epoca c’è un aggiornamento lento: si rieseguono gli stessi compiti con la skill dell’epoca prima e con quella nuova, si separano miglioramenti, regressioni, fallimenti ostinati e successi stabili, e se ne ricava un blocco di indicazioni scritto in una zona protetta del documento, che le modifiche rapide non possono sovrascrivere. Gli autori lo paragonano al momento. Al termine resta un solo file, best_skill.md, e in produzione non si aggiunge nessuna chiamata all’ottimizzatore.
I numeri
La prova copre sei benchmark (SearchQA, SpreadsheetBench, OfficeQA, DocVQA, LiveMathematicianBench, ALFWorld), sette modelli bersaglio dalla famiglia GPT-5.x fino a Qwen3.5 da 4 miliardi di parametri, e tre modi di esecuzione: chat diretta, il ciclo di Codex e quello di Claude Code. I rivali sono la skill scritta da un esperto, quella generata in un colpo solo, e quattro metodi automatici: Trace2Skill, TextGrad, GEPA, EvoSkill. Su 52 celle (modello, benchmark, harness), SkillOpt è primo o a pari merito in tutte e 52.
Con GPT-5.5 in chat diretta, la media sui sei benchmark sale di 23,5 punti, e supera di 5,4 punti un avversario immaginario che in ogni cella prendesse il migliore degli altri metodi. I salti più grandi sono sui compiti procedurali.
| Benchmark | Senza skill | Con SkillOpt |
|---|---|---|
| SpreadsheetBench | 41,8 | 80,7 |
| OfficeQA | 33,1 | 72,1 |
| LiveMathematicianBench | 37,6 | 66,9 |
| Media dei sei benchmark | 58,8 | 82,3 |
Dentro Codex il guadagno medio è di 24,8 punti, dentro Claude Code di 19,1; qui il rivale serio è EvoSkill, che già porta la media di Claude Code da 57,8 a 73,7 e resta indietro di 3,2 punti. Sui modelli piccoli l’effetto relativo è il più forte: GPT-5.4-nano passa da 34,3 a 69,4 su ALFWorld.
Il dato più curioso è quanto pochi passi servano. Gli aggiornamenti accettati, alla fine, sono fra uno e quattro per benchmark. Su OfficeQA i 39 punti vengono da uno solo, e da uno solo anche i 29 di LiveMathematicianBench; ma un aggiornamento può contenere più modifiche, e quello di OfficeQA ha portato la skill da 145 a 883 token. Le skill finali restano fra 379 e 1.995 token, leggibili in pochi minuti. E le regole apprese sono procedure, non risposte: su SpreadsheetBench, «ispeziona struttura e formule della cartella, poi scrivi valori statici calcolati su tutto l’intervallo richiesto invece di affidarti al ricalcolo di Excel».
Le skill poi viaggiano. Una skill per fogli di calcolo addestrata dentro Codex, portata in Claude Code, alza il punteggio da 22,1 a 81,8, un filo sopra quella addestrata lì; nel verso opposto rende meno (da 27,5 a 71,1), e su LiveMath il passaggio a Claude Code vale 1,6 punti. Addestrata su GPT-5.4, aiuta anche mini e nano. Una skill per OlympiadBench dà fra 1,3 e 3,7 punti su Omni-MATH, che non ha mai visto.
Che cosa non dice
Gli autori dichiarano quattro limiti: il metodo ha bisogno di un punteggio affidabile e automatico, e dove il successo è soggettivo il gate va affidato a un giudice umano o a un modello; l’addestramento costa (fra 20,8 e 213,8 milioni di token per benchmark) e si ammortizza solo se la skill si riusa; una sola skill può non bastare a domini eterogenei; e prima di trasferirla altrove va rivalutata.
Altri limiti si leggono nelle tabelle. Non ci sono ripetizioni né intervalli di confidenza, e il rumore si vede: la configurazione di base, con $L_t = 4$, dà 56,5 su LiveMath in un pannello delle ablazioni e 61,3 in quello accanto. Quasi cinque punti di scarto per quella che le didascalie presentano come la stessa configurazione, su un benchmark con 35 compiti di addestramento, pesano quando il vantaggio sul secondo classificato si misura spesso in unità. C’è poi un dettaglio che il paper non commenta: i valori di SkillOpt nella tabella principale per GPT-5.5 coincidono con varianti delle ablazioni diverse dal default. Su SearchQA e SpreadsheetBench, 87,3 e 80,7 sono i punteggi del budget costante, non del coseno dichiarato di default; su LiveMath, 66,9 è quello di $L_t = 8$. Il paper dichiara adattamenti per benchmark solo sulla dimensione dei lotti, «con lo stesso scheduler», e non dice come né su quali dati siano stati scelti gli altri valori. In ogni caso il coseno perde contro il budget costante su SpreadsheetBench (77,5 contro 80,7): conta che il passo sia limitato, non la forma della curva. E la colonna dei costi non torna: 20,8 milioni di token per i 39 punti di OfficeQA fanno 0,5 milioni a punto, il paper scrive 1,1. I confronti non sono omogenei: Trace2Skill, TextGrad e GEPA compaiono solo in chat diretta, EvoSkill solo negli harness. In Claude Code gira GPT-5.5, non un modello Claude. E l’ottimizzatore è GPT-5.5, lo stesso modello che nei risultati di punta esegue i compiti: sui modelli piccoli, un ottimizzatore della loro taglia recupera fra il 56 e il 74% del guadagno nelle quattro combinazioni provate, che è molto ma non tutto.
C’è infine una lettura meno lusinghiera per i modelli. Se un solo aggiornamento di poche centinaia di token vale 39 punti su OfficeQA, gran parte di quello che il modello sbagliava non era capacità ma disciplina: formato, unità, dove guardare. È un’informazione utile tanto sui modelli quanto sui benchmark che premiano la forma.
Perché conta adesso
Le skill sono diventate in pochi mesi l’interfaccia con cui si adatta un agente a un lavoro, e per lo più si scrivono ancora come i prompt nel 2023: a mano, a tentativi, senza misura. SkillOpt non inventa nulla di esotico. Prende gli arnesi più vecchi del machine learning (lotti, passi limitati, un insieme di validazione che decide) e li applica a un file Markdown. È la stessa lezione che RRSI applica all’intero harness: un sistema che si corregge da solo contro un punteggio va frenato e controllato da fuori, o impara il punteggio. Il risultato è un artefatto piccolo, leggibile, versionabile, che si può rivedere riga per riga prima di metterlo in produzione. Per chi lavora con gli agenti è la parte più concreta: a patto di avere un verificatore automatico e qualche decina di milioni di token da spendere, la skill smette di essere un’opinione e diventa un oggetto che si addestra, si misura e si rilegge.
Il codice è pubblico su github.com/microsoft/SkillOpt; la pagina del progetto è aka.ms/SkillOpt.

I commenti sono riservati agli iscritti.
Accedi per commentare