Automazione dei sistemi elettrici di trasporto · Politecnico di Milano
Un’ora di pratica, in gruppo, dentro VS Code. Alla fine avete una cartella impostata in modo che l’agente ci lavori bene, un repository privato su GitHub condiviso fra voi, e i passi del vostro progetto scritti e disegnati.
Frecce della tastiera per andare avanti e indietro. Materiali del corso: danielemartini.eu/automazione
Prima di iniziare
Manca qualcosa? La guida di installazione lo copre comando per comando. Se oggi l’agente non funziona, segui lo stesso: tutto tranne la sezione 6 si fa anche senza.
1 · Cos’è un agente
Un modello linguistico, ridotto all’osso, continua un testo: gli date dell’input, produce l’output più plausibile. Tutto dentro una finestra di testo. Tre cose gli sono precluse, e non “gli riescono male”: proprio non può farle.
Non vede i vostri file
Il modello lavora dentro una finestra di testo. La cartella del progetto è sul vostro disco: lui un disco non ce l’ha.
Non esegue niente
Se gli chiedete la media di mille righe non la calcola: la scrive. Un numero plausibile e un numero calcolato si assomigliano in modo pericoloso.
Non verifica
Non ha un secondo passaggio in cui controlla se quello che ha appena detto è vero. Una fonte inventata e una vera hanno la stessa forma.
È da qui che nasce quella che chiamate allucinazione. Non è un difetto che qualcuno sistemerà: è il comportamento previsto di un sistema a cui chiedete testo plausibile e che non ha nessun modo di controllare il mondo.
1 · Cos’è un agente
Scrivi flussi.md con i tre passi del nostro progetto, poi fermati.
La chat: risponde
L’agente: fa
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
Pezzo 1 di 6: Un agente è un LLM
Si parte dal modello linguistico, lo stesso della chat. Non un modello diverso, non uno più intelligente: lo stesso, messo in condizioni diverse.
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
Pezzo 2 di 6: che, attraverso un harness,
L’harness è il programma intorno al modello: quello che avete installato. Gli presta le mani (leggere, scrivere, eseguire, cercare) e gli riporta quello che è successo. Senza, il modello resta chiuso nella sua finestra di testo.
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
Pezzo 3 di 6: agisce,
Il modello non esegue: chiede. «Elenca i file», «scrivi questo file», «lancia questo comando». L’harness fa, e può fare solo quello che sta nella sua lista. È lì che si mettono i limiti, prima.
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
Pezzo 4 di 6: osserva il risultato
Quello che è successo torna sotto gli occhi del modello: l’elenco dei file, il contenuto letto, l’errore del comando. Da questo momento lo sa; prima no. Non più testo plausibile: fatti.
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
Pezzo 5 di 6: e decide il passo successivo.
Avendo visto il risultato, sceglie la mossa dopo. La sequenza non era scritta prima: si forma strada facendo. Uno script non lo fa; una persona in laboratorio sì.
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
Pezzo 6 di 6: Persegue un obiettivo.
Il giro continua finché il modello non giudica l’obiettivo raggiunto. Se l’obiettivo è vago, o si ferma troppo presto o non si ferma. L’obiettivo lo date voi: è la parte che resta vostra.
1 · Cos’è un agente
Un agente è un LLM che, attraverso un harness, agisce, osserva il risultato e decide il passo successivo. Persegue un obiettivo.
In inglese ci stanno in dieci parole: “An LLM agent runs tools in a loop to achieve a goal.” (Simon Willison, 2025).
1 · Cos’è un agente
Il caso è quello di oggi: chiedete a un agente di scrivere docs/flussi.md. A sinistra chi è attivo; a destra la traccia, quello che il modello ha sotto gli occhi mentre decide.
Obiettivo
Decide
il modello
Fa
l’harness
Osserva
il risultato torna
e si ricomincia, finché l’obiettivo non è raggiunto
Fotogramma 1 di 8
L’obiettivo
Voi scrivete la richiesta. L’harness la mette davanti al modello insieme alle regole della cartella, che ha già caricato da solo.
La traccia: quello che il modello ha sotto gli occhi
1 · Cos’è un agente
Uno stagista bravissimo al primo giorno: sa fare, ma del vostro progetto non sa niente e domani non si ricorderà niente di oggi. Il modello è un quinto della storia. Gli altri quattro quinti, il contesto e i limiti, li costruite voi: sono la lezione di oggi.
2 · Git e GitHub in cinque parole
Siete in tre, con tre PC, sugli stessi file. Git tiene la storia e mette d’accordo le copie; GitHub è il posto dove sta la copia comune. VS Code li usa per voi: commit è una fotografia dei file con una riga che dice cosa è cambiato, Sincronizza manda le vostre e prende quelle degli altri.
PC di Anna
Il file evidenziato esiste solo qui: ognuno ha il suo, e non parte mai.
GitHub · repository privato del gruppo
Lo vedono solo i collaboratori invitati. Ogni commit di ognuno finisce qui con push, e da qui arriva agli altri con pull.
PC di Luca
Il file evidenziato esiste solo qui: ognuno ha il suo, e non parte mai.
Stessa cartella in tre posti. Le regole del gruppo (CLAUDE.md e AGENTS.md) sono uguali per tutti perché viaggiano con il repository; le preferenze personali restano sul PC di ciascuno perché il .gitignore dice a git di non guardarle.
3 · VS Code pronto, e la cartella del progetto
Chi ce l’ha già passa alla schermata dopo. Chi non ce l’ha: un comando, poi si riapre il terminale.
macOS (Terminale)
brew install --cask visual-studio-codeWindows (Terminale Windows)
winget install --id Microsoft.VisualStudioCode -e --source wingetUbuntu
sudo snap install --classic code3 · VS Code pronto, e la cartella del progetto
3 · VS Code pronto, e la cartella del progetto
La struttura si decide prima di scrivere qualsiasi cosa. Se non la decidete voi, la decide l’agente, e ogni gruppo finisce in un posto diverso. Questa è uguale per tutti i gruppi.
La cartella, a fine lezione
progetto-automazione/
|-- CLAUDE.md le regole condivise del gruppo (in git)
|-- AGENTS.md stesso testo, per Codex, Gemini CLI, opencode (in git)
|-- miePersonalizzazioni.md le TUE preferenze, struttura nelle regole: non va su GitHub
|-- README.md cos'è il progetto, per chi arriva da fuori
|-- diario.md il diario del progetto: fatto, deciso, prossimo passo
|-- docs/ documenti di lavoro: flussi.md e flussi.drawio.png (da oggi), appunti, note sulle fonti
|-- relazione/ la relazione del corso: relazione.tex (con bibliografia.bib e figure/) oppure relazione.docx
|-- dati/ i dati raccolti, con la tabella che dice da dove vengono
|-- codice/ il codice, quando ci sarà: lo scrive l'agente, lo leggete voi
|-- presentazione/ le slide finali, alla fine
|-- sito/ la pagina di presentazione: bonus di oggi
\-- .gitignore cosa non va su GitHub
Ogni cartella ha un README.md che dice cosa ci va. Vuote oggi: è voluto.Uno per gruppo lo scarica, lo scompatta dove tiene i progetti e apre la cartella in VS Code (File → Apri cartella). Gli altri la riceveranno da GitHub nella sezione 5. Il file delle regole si chiama CLAUDE.md per Claude Code e AGENTS.md per Codex, Gemini CLI e opencode: nel kit ci sono entrambi, stesso testo. La relazione (LaTeX e Word, stesse sezioni: scegliete uno dei due) e il diario del progetto sono già lì.
CLAUDE.md e AGENTS.md sono lo stesso file di testo con due nomi: Claude Code legge il primo, Codex, Gemini CLI e opencode il secondo. L’agente lo legge da solo, all’inizio di ogni sessione, senza che glielo chiediate, a patto che sia aperto dentro la cartella del progetto. Dentro ci va quello che un collega nuovo avrebbe bisogno di sapere il primo giorno: cosa stiamo facendo, com’è fatta la cartella, e cosa non deve fare.
Nelle parole della sezione 1: è il contesto che il modello ha sotto gli occhi a ogni giro, e i limiti che gli mettete prima che parta. È del gruppo: sta in git, ed è lo stesso sui tre PC.
La sezione più utile è quella delle regole negative: cosa non deve fare. Sono quelle che vi risparmiano i disastri. E niente commit da parte dell’agente: li fate voi, dopo aver letto.
CLAUDE.md e AGENTS.md del kit, stesso testo (scorre dentro il riquadro)
# CLAUDE.md - Nome del progetto
## Cos'è questo progetto
Due o tre frasi: cosa vogliamo ottenere e per chi. Esempio: "Studio di un sistema di
ricarica condominiale con load balancing: normativa, requisiti, modello di ripartizione
dei costi fra i condomini."
Progetto del corso di Automazione dei sistemi elettrici di trasporto, Politecnico di
Milano, gruppo NN.
## Chi ci lavora
Nome Cognome, Nome Cognome, Nome Cognome. Nessuno di noi programma di mestiere: spiega le
scelte in italiano semplice e non dare per scontato niente.
## Preferenze personali
Se nella radice del progetto esiste `miePersonalizzazioni.md`, leggilo prima di iniziare e
segui le sue indicazioni: sono le preferenze di chi sta lavorando in questa sessione.
Non modificarlo e non metterlo mai in un commit.
Ogni componente del gruppo lo crea sul proprio PC (è nel `.gitignore`, non va su GitHub)
con questa struttura:
# Le mie personalizzazioni
## Chi sono
Nome, sistema operativo, editor, agente che uso.
## Come voglio che mi parli
Lingua, lunghezza delle spiegazioni, quando chiedermi conferma.
## Cosa so fare e cosa no
Terminale, git, programmazione: sì / no / un po'.
## Note di lavoro
Comandi che uso spesso, errori già visti, cose che ho capito.
## Com'è fatta la cartella
- `docs/` - documenti di lavoro: `flussi.md` e `flussi.drawio.png` (i passi del progetto, in parole e in un diagramma; il diagramma lo disegniamo noi), appunti, note sulle fonti.
- `relazione/` - la relazione del corso, in LaTeX e in Word. Non toccarla mai senza che te lo chieda esplicitamente.
- `dati/` - i dati raccolti. Ogni file è registrato nella tabella di `dati/README.md` con la sua provenienza.
- `codice/` - il codice: script, modello, grafici. Ogni script dice in testa cosa fa, cosa legge e cosa produce.
- `presentazione/` - le slide finali. `sito/` - la pagina di presentazione.
- `diario.md` - il diario del progetto: avanzamento e decisioni. Lo scriviamo noi, non tu.
- `README.md` - cos'è il progetto, per chi arriva da fuori.
- Ogni cartella ha un README.md che dice cosa ci va: leggilo prima di scriverci. Nuove cartelle solo dopo averlo proposto e avuto l'ok.
## Regole di lavoro
- Un passo alla volta. Fai quello che ti ho chiesto, poi fermati e dimmi cosa hai fatto.
- Prima di creare un file nuovo, dimmi quale e perché.
- Se non ti riesce qualcosa, dillo. Non inventare numeri, fonti, nomi di pacchetti o risultati.
- Codice semplice e commentato in italiano: lo dobbiamo leggere noi.
- Niente librerie in più senza chiedermelo prima.
- Non modificare `relazione/` e `diario.md`.
- Niente commit e niente push da solo: li facciamo noi, dopo aver letto le modifiche.
## Come si scrive
Italiano. I numeri hanno sempre l'unità di misura. Ogni affermazione non ovvia ha una
fonte. Niente emoji.
Dentro CLAUDE.md e AGENTS.md c’è anche la struttura di miePersonalizzazioni.md: come vuoi che ti parli, cosa sai fare, il tuo sistema operativo. Ognuno lo crea sul proprio PC, e non finisce su GitHub perché il .gitignore lo esclude. L’agente lo legge perché le regole gli dicono di farlo. Lo fate nella sezione 5, quando ognuno avrà la sua copia del repository.
1Tu chiedi
Una cosa sola, detta bene.
2Lui legge le regole
CLAUDE.md o AGENTS.md, da solo, se è aperto nella cartella del progetto.
3Propone e scrive
File creati o modificati.
4Tu leggi
Cosa ha cambiato, prima di dire sì.
5Lo fai girare
Il test vero: funziona o no.
6Aggiorna il diario
Cosa è stato fatto, cosa è stato deciso, da dove si riparte.
Poi si ricomincia. Il giro è corto di proposito: più è lungo, meno capisci cosa è successo.
Tutto dal pannello Controllo del codice sorgente di VS Code (l’icona dei rami nella barra a sinistra). Lo fa la persona che ha la cartella aperta.
Da qui in poi, ogni volta che qualcuno cambia un file: Commit con un messaggio che dice cosa è cambiato, poi Sincronizza (pull e push insieme). Prima di iniziare a lavorare: Sincronizza.
Non il codice: i passi. Cosa entra, cosa succede, cosa esce, in che ordine. Un agente ottimizza il percorso verso l’obiettivo che gli date, e a ogni giro controlla se l’ha raggiunto: se non è chiaro cos’è “fatto”, o si ferma troppo presto o non si ferma. La domanda è vostra.
Si fa su carta, poi si disegna con draw.io nel browser e si mette nel repository. In aula si inizia; si finisce a casa, con calma, perché questi passi diventano la sezione Metodo della relazione.
Da VS Code: Terminale → Nuovo terminale si apre già nella cartella del progetto. Poi il comando del tuo agente (uno solo)
claude
codex
gemini
opencode
grokCursor, TraeCode e Copilot in VS Code: l’agente è già dentro l’editor. Vale la stessa regola: la cartella aperta è quella in cui cerca le regole.
fammi lo schema del progettoCosa succede: inventa lui i passi del vostro progetto, e sembrano pure sensati. È il modo più veloce per ritrovarsi a lavorare sul progetto di qualcun altro.
Con i vostri passi al posto dei segnaposto
Abbiamo disegnato i passi del nostro progetto: il diagramma è in docs/flussi.drawio.png.
Eccoli, in ordine:
1. <primo passo: cosa entra, cosa succede, cosa esce>
2. <secondo passo>
3. <terzo passo>
Scrivi docs/flussi.md con: una riga di introduzione, l'immagine del diagramma
(), e per ogni passo una frase che dice cosa
entra, cosa succede, cosa esce.
Se un passo ti sembra mancare o essere ambiguo, segnalalo in fondo al file con una
domanda: non inventarlo. Non creare altri file, non toccare il diagramma e non
modificare CLAUDE.md e AGENTS.md.
Quando hai finito, fermati e dimmi cosa hai scritto.Quattro cose lo rendono diverso: gli date voi il contenuto, dite esattamente cosa scrivere e dove, dite cosa non fare, e gli chiedete le domande invece delle risposte. Non dice “leggi le regole”: quello lo fa da solo, se è nella cartella giusta. E il diagramma non glielo fate fare: il disegno è il vostro ragionamento, lui ci mette le parole intorno.
Un solo file in sito/, si apre con un doppio clic, niente server. Serve a vedere l’agente costruire qualcosa di visibile partendo solo da quello che avete scritto: se lì c’è poco, la pagina viene vuota, ed è giusto così.
Il prompt
Crea sito/index.html: una sola pagina statica, HTML e CSS nello stesso file, niente
JavaScript e niente librerie, che presenta il progetto a chi non lo conosce: titolo, una
frase che dice cosa facciamo, chi siamo, i passi del progetto presi da flussi.md, come
contattarci.
Testo in italiano, preso da CLAUDE.md (o AGENTS.md) e docs/flussi.md: non inventare niente. Deve aprirsi con
un doppio clic sul file. Non creare altri file.
Quando hai finito, fermati e dimmi come la apro.Aprite sito/index.html con un doppio clic, leggete cosa c’è scritto, e cercate la frase che non avete mai detto: c’è quasi sempre. Poi commit e Sincronizza.
Inventa
Numeri, fonti, passi del progetto che non gli avete detto. Non lo fa per ingannarti: completa il testo nel modo che sembra più plausibile. Si smaschera controllando.
Fa troppo
Hai chiesto un file, ti ritrovi quindici file e una cartella di codice. Più cose fa, meno le controlli.
Dice "fatto" senza aver controllato
Dichiara il lavoro finito senza averlo verificato. Il test vero lo fai tu: apri il file, leggi, prova.
Sono i tre “non può” della sezione 1 visti da vicino: inventa perché produce testo plausibile, fa troppo perché il ciclo non sa dove fermarsi, dice “fatto” perché non ha un passaggio di verifica. Il passaggio di verifica siete voi.
La domanda
Un agente ottimizza il percorso verso l’obiettivo che gli date. Se l’obiettivo è mediocre, arriva benissimo a un risultato mediocre. I flussi di oggi sono la domanda.
Il giudizio sul metodo
Vi dirà che il calcolo è tornato. Non vi dirà che quel calcolo, sul vostro problema, non aveva senso.
La responsabilità
Sulla relazione c’è il vostro nome. La firma non si delega.
Quello che si sposta, invece, è enorme: tutto il lavoro intermedio. Il codice per l’analisi, il grafico rifatto sei volte, il ritrovare fra sei mesi come si era fatta una cosa. È la parte del mestiere che non vi ha mai insegnato niente, e adesso costa poco.
Questa pagina resta qui: danielemartini.eu/automazione/lezione-1. Tutti i materiali: danielemartini.eu/automazione
We use cookies to analyze site traffic and enhance your experience. By clicking "Accept", you consent to our use of cookies.