Sulla teoria ormai sono tutti d’accordo. OpenAI l’ha pubblicata. Martin Fowler le ha dato un nome. Anthropic l’ha validata con 16 agenti in parallelo che costruivano un compilatore C.
La teoria dell’harness engineering sta convergendo in fretta. La pratica è un’altra storia.
Ho passato gli ultimi due anni a costruire harness per agenti AI su codebase enterprise. Prima per noi (FairMind è costruita dai suoi stessi agenti), poi per clienti con milioni di righe di codice legacy, requisiti di compliance e team da 50 a 200 sviluppatori. Quello che ho imparato è che la distanza tra “abbiamo capito l’harness engineering” e “i nostri agenti sono produttivi in produzione” è enorme, e quasi del tutto non documentata.
Questo è il mio tentativo di documentarla.
Prima lezione: i vostri agenti falliranno in modi imprevedibili
Quando abbiamo iniziato a costruire FairMind con gli agenti al centro del flusso di sviluppo, i fallimenti non sono stati quelli che ci aspettavamo. Ci aspettavamo codice sbagliato. Abbiamo ottenuto qualcosa di peggio: codice plausibile che violava regole invisibili.
Un agente che importa una libreria deprecata non è rotto. Sta facendo esattamente ciò per cui è progettato: colmare i vuoti con inferenze plausibili. La libreria esiste, funziona, compare in tutta la codebase. L’agente non ha modo di sapere che è stata deprecata otto mesi fa, perché nessuno ha scritto quella decisione in un formato che l’agente potesse leggere.
È il primo schema in cui inciampa ogni organizzazione. Non fallimenti del modello. Fallimenti di contesto. E l’istinto è sempre quello sbagliato: i team danno la colpa al modello e iniziano a valutare alternative, quando dovrebbero guardare cosa manca nell’ambiente.
Abbiamo imparato a trattare ogni errore dell’agente come un segnale diagnostico. La domanda non è mai stata “perché l’agente ha fatto questo?” ma “quale vincolo manca nell’ambiente, tanto da aver permesso che accadesse?”
Seconda lezione: la velocità del feedback cambia tutto
Quasi tutte le pipeline CI/CD sono state progettate per sviluppatori umani che pubblicano codice qualche volta al giorno. Gli agenti lo fanno di continuo. Una pipeline da 15 minuti, che sembrava veloce per un flusso umano, diventa una zona morta per un agente: quando il feedback arriva, l’agente ha già perso il contesto di quello che stava facendo.
Abbiamo ricostruito i nostri feedback loop attorno a un principio semplice: qualsiasi segnale che impiega più della memoria di lavoro dell’agente è inutile. Lint sotto i 5 secondi. Controlli architetturali sotto i 30. La suite di CI completa sotto i 5 minuti per i controlli che riguardano l’agente.
Stripe è arrivata alla stessa conclusione in modo indipendente: lint sotto i 5 secondi con correzione automatica, eseguito prima che un essere umano veda l’output. L’intuizione è strutturale. Il feedback rapido non è un optional. È infrastruttura. Senza, state chiedendo agli agenti di scrivere codice bendati.
È qui che si blocca la maggior parte delle aziende. La loro CI è stata costruita per un’altra epoca. Adattarla alla velocità di feedback che serve agli agenti è lavoro di ingegneria vero, non configurazione.
Terza lezione: agli agenti servono guardrail, non linee guida
È stato il cambiamento più controintuitivo per il nostro team. Gli ingegneri apprezzano la flessibilità. Negli ambienti agent-first, la flessibilità è il nemico.
Quando abbiamo lasciato gli agenti senza vincoli, hanno prodotto codice che superava i controlli di base ma violava regole architetturali che esistevano solo nella testa delle persone. La soluzione non erano prompt migliori. Erano vincoli strutturali: linter custom che impongono i confini tra servizi, gestione delle dipendenze che blocca le librerie non approvate, controlli architetturali che partono automaticamente prima di qualsiasi review umana.
Il principio è semplice ma difficile da interiorizzare: dagli agenti ottenete più capacità restringendo il loro ambiente, non allargandolo. Ogni vincolo strutturale che abbiamo aggiunto ha aumentato la produttività degli agenti, non l’ha ridotta.
Lo abbiamo integrato in FairMind sotto forma di agenti e skill specializzati che operano dentro gli strumenti di sviluppo: un agente di cybersecurity, un agente di code review e una serie di hook che impongono la conformità di processo prima ancora che il codice venga committato. Non sono linee guida facoltative. Sono vincoli strutturali che rendono le violazioni impossibili, non semplicemente rilevabili.
Quarta lezione: l’osservabilità non è opzionale
C’è una cosa di cui non ho visto discutere abbastanza nella letteratura che sta nascendo sull’harness engineering: gli agenti sviluppano assunzioni sbagliate che si propagano in silenzio.
Un esempio concreto, capitato a noi. Durante un lavoro di documentazione di una codebase, uno dei nostri agenti ha stabilito che una certa libreria riguardasse lo sviluppo di videogiochi. Non era così. La causa profonda è istruttiva: l’agente non era riuscito ad accedere alla codebase vera e, invece di fermarsi e segnalare il problema, ha dedotto lo scopo del progetto dal nome del repository e ha costruito un’intera analisi su una premessa falsa.
La reazione naturale è “ma che razza di agente sbaglia così?“. La lezione vera, però, è che l’agente ha fatto esattamente ciò per cui è progettato: riempire i vuoti di contesto con inferenze plausibili. Il fallimento era nell’ambiente, non nel modello.
Abbiamo risposto con due interventi. Primo, un guardrail che ferma gli agenti quando non riescono ad accedere alla codebase e li obbliga a chiedere indicazioni. Secondo, uno stream di attività osservabile e un sistema di memoria editabile: le persone possono ispezionare le assunzioni dell’agente in tempo reale, correggere gli errori e far ripartire l’esecuzione da un checkpoint preciso. Non aspettate l’output finale per scoprire il problema. Intervenite nel punto in cui il ragionamento devia.
Quinta lezione: l’organigramma conta più dello stack tecnologico
È la lezione che nessuno vuole sentirsi dire.
Abbiamo attraversato una migrazione interna importante: dallo sviluppo centrato sull’IDE a flussi di lavoro con agenti da terminale. Gli sviluppatori che all’inizio dicevano “lo scrivo prima io” avevano ragione, in casi specifici. Il debugging complesso continua a beneficiare dell’intuizione umana. Ma sullo sviluppo di nuove funzionalità la differenza di produttività è diventata innegabile, e il team si è adattato.
La parte difficile non è stata la tecnologia. È stata ridefinire cosa significa “bravo sviluppatore”. Negli ambienti agent-first il ruolo dello sviluppatore si sposta dallo scrivere codice al progettare ambienti, istruire agenti e valutare output. È un insieme di competenze radicalmente diverso. Le organizzazioni che non definiscono che aspetto ha la competenza in questo nuovo modello non riescono ad assumere, promuovere o formare.
Abbiamo codificato tutto questo in un framework: 7 dimensioni, 72 criteri, dall’architettura ai guardrail fino alla cultura e all’adozione. Non perché i framework abbiano valore di per sé, ma perché senza una valutazione strutturata le organizzazioni ottimizzano una dimensione ignorando le altre sei, quelle che poi determinano se gli agenti funzionano davvero in produzione.
Cosa direi a un CTO che parte oggi
Non partite dal throughput. Partite dalla verifica. Prima di ottimizzare il volume di output degli agenti vi servono misure di riferimento sul tasso di difetti e sulla qualità in produzione del codice generato. Senza quelle, i numeri sul throughput sono impressionanti ma incompleti.
Non aspettate il greenfield. Il valore vero dell’harness engineering è nel brownfield: codebase esistenti, sistemi legacy, requisiti di compliance reali. Partite da un sottosistema ben coperto da test e sviluppate lì i vostri pattern di harness, prima di estenderli.
E soprattutto: investite nell’ambiente, non nel modello. Abbiamo raggiunto 10 PR per sviluppatore a settimana, zero conflitti di merge e una riduzione significativa degli incidenti in produzione. Non mettendo in campo modelli migliori. Costruendo un harness migliore attorno agli stessi modelli che usano tutti.
La disciplina è giovane. Le decisioni no.
Approfondimento sul framework e sulla metodologia: fairmind.ai/it/blog/harness-engineering-research. Per i responsabili tecnici che stanno valutando la maturità della propria organizzazione sugli agenti: fairmind.ai/it/harness-engineering.