Un motore di scacchi in un giorno uomo: cosa ci dice sugli agenti di coding

Un motore di scacchi in un giorno uomo: cosa ci dice sugli agenti di coding

Perché proprio gli scacchi

Quando un cliente ci chiede se gli agenti di coding «funzionano davvero», la risposta onesta dipende dalle metriche.

Un motore di scacchi è il caso limite ideale, perché sbagliare è dimostrabile.

L'esperimento

L'obiettivo era rispondere a una domanda: un modello può aiutare a costruire da zero un motore legale e verificabile in tempi molto brevi?

Abbiamo posto tre vincoli:

  • Meno di un giorno uomo.
  • Un linguaggio che non conoscevo: Rust, scelto proprio perché non lo padroneggiavo (veloce quanto serve, severo abbastanza da punire il codice approssimativo).
  • Un modello veloce, non il migliore disponibile: Composer 2.5 Fast di Cursor, cioè l'assistente quotidiano che un team userebbe davvero, non quello che si tira fuori per la demo.

Compliance

La regola più stringente era che il nucleo del motore fosse originale: nessun codice copiato. Erano ammesse invece regole e protocolli pubblici, valori di perft pubblici e le idee standard della programmazione scacchistica.

Sul blog di scacchi questo suona come orgoglio; in un contratto è proprietà intellettuale. Quando un agente genera codice, «da dove viene questo blocco e sotto quale licenza» non è pedanteria: è la differenza tra un componente consegnabile e un rischio ereditato.

La verifica

Il punto era rendere impossibile che il codice sbagliato passasse: test unitari, perft fino a profondità 6, un fuzzer che gioca partite casuali, controlli di legalità con un oracolo indipendente, verifiche incrociate con librerie Rust di terze parti, smoke test UCI, script di torneo, log e PGN salvati.

Il risultato: 2032 di blitz su Lichess

Per misurare un motore non basta farlo giocare in casa: va messo online, dove a valutarlo sono altri: in tre giorni di fine giugno ha giocato 170 partite (146 valutate, circa 21 ore di gioco) e si è assestato a un rating blitz di 2032, con deviazione 69,65 — cioè, secondo la distribuzione di Lichess, meglio del 91% dei giocatori blitz.

Il rating Lichess non è un rating FIDE: ho provato a stimare dove si collochi rispetto alla popolazione dei bot — non esistendo un'API per elencarli, ho campionato in momenti diversi quelli online — e ne esce una prestazione nella media della categoria. È una stima ottenuta per campionamento.

Con tutte queste precisazioni, il bilancio resta: un motore UCI originale e legale, scritto in circa un giorno uomo, che in pochi giorni di gioco pubblico si posiziona nella media dei bot su Lichess. Non male per un giorno.

Chi dice «no» e quanto costa

Prima di adottare agenti su un progetto, chiedetevi chi dice «no» al posto vostro e quanto costa quel no: se la risposta è «il senior in code review, mezz'ora a giro», l'accelerazione sarà molto minore di quella promessa nelle demo. Il moltiplicatore è il ciclo, non il modello più caro. E il senior serve ancora, ma su altro: progettare i vincoli, scegliere gli oracoli, leggere i fallimenti, decidere cosa conti come prova.

Il codice è pubblico su github.com/carlok/labzero; la versione originale, più tecnica, è sul mio blog Lichess.

Kiwifarm srl ‐ Via Agostino da Montefeltro, 2 · 10134 Torino (TO) ‐ P. IVA: 03535510048 ‐ Capitale Sociale: 30.100 € i.v. Privacy Policy Cookie Policy