Cheat sheet

Cheatsheet harness dell'agente AI: componenti, file, problemi e checklist di avvio

Aggiornato: · Skillaria.Top

L'harness di un agente AI è composto da cinque componenti: istruzioni, strumenti, ambiente, stato e feedback. Il set minimo di file comprende AGENTS.md come router breve, gli script di verifica (make check, verify.sh), un file di avanzamento e un elenco di funzionalità con stati. Il segno di completamento lo mette lo script, non l'agente.

I cinque componenti dell'harness di un agente AI

ComponenteChe cos'èArtefattiSintomo di rottura
IstruzioniCiò che l'agente deve sapere del progettoAGENTS.md / CLAUDE.md, skills, docs/, ADRViola convenzioni note
StrumentiCiò che l'agente può fareshell, test, linter, browser, server MCP"Vuole ma non può"
AmbienteDove lavora l'agentefile di lock, Docker/devcontainer, git worktree, sandbox, init.shLa sessione inizia riparando l'ambiente
StatoCiò che sopravvive al riavvioPROGRESS.md, DECISIONS.md, feature_list.json, commitLa nuova sessione non sa dove si era fermata
FeedbackCome l'agente scopre i propri errorimake check, E2E, hook, arch-check, valutatore"Fatto", ma non funziona

Ordine di costruzione da zero: feedback → istruzioni → stato → ambiente → strumenti.

File dell'harness

FileFunzioneRegola
AGENTS.md / CLAUDE.mdPunto d'ingresso: che cos'è il progetto, come si avvia, come si verificaRouter breve (circa 80 righe), link ai documenti con la condizione "quando leggere"
docs/*.mdDettagli per temaSi leggono su richiesta, non per intero
.claude/skills/*/SKILL.mdProcedure ricorrenti (deploy, revisione)Si caricano quando la descrizione del compito corrisponde
PROGRESS.mdStato, lavoro svolto, blocchi, prossimi passiAggiornare alla fine di ogni sessione
DECISIONS.mdDecisione, motivazione, alternative scartateRegistrare il percorso, non solo l'esito
feature_list.jsonFunzionalità: behavior, verification, stateEsattamente una funzionalità active (WIP=1)
scripts/verify.shVerifica una funzionalità e la porta a passingL'unico che mette passing, con lo SHA del commit
scripts/arch-check.shConfini architetturaliCodice d'uscita 1 + WHY e FIX nell'output
scripts/init.shControllo dell'ambiente prima del lavoroAmbiente, git pulito, make check verde, funzionalità attiva
sprint contractContratto della funzionalità prima del codiceNel perimetro / fuori perimetro / domande aperte
.claude/settings.jsonPermessi e hook di Claude CodeLe verifiche girano sugli eventi, non nella memoria dell'agente

Scheletro di AGENTS.md

# Progetto: backend dei pagamenti (FastAPI, PostgreSQL)

## Avvio
docker compose up -d && ./scripts/init.sh

## Verifica
make check   # lint, tipi, unit, arch-check
make e2e     # scenari end-to-end

## Definition of Done
- make check e make e2e — codice 0
- funzionalità portata a passing con scripts/verify.sh
- PROGRESS.md aggiornato

## MUST
- Le richieste al database solo tramite i repository
- I segreti solo dalle variabili d'ambiente

## Documenti
- docs/payments.md — quando il compito riguarda pagamenti e rimborsi
- docs/migrations.md — quando cambia lo schema del database

Stati di una funzionalità

StatoSignificatoChi lo cambia
pendingIn codaPianificatore
activeIn lavorazione (una sola)L'agente all'avvio
passingVerifica superataSolo verify.sh
blockedServe una decisione umanaL'agente, con la motivazione

Livelli di verifica

LivelloCosaQuando
1Lint, tipiSempre
2Unit e integration testSempre
3E2EQuando cambia più di uno strato; prima di dire "fatto"
4arch-checkNuovi import tra strati

Il diritto di dire "fatto" arriva solo dopo il livello più alto. Gli unit test verdi non sono completamento.

Meccanizzare le regole

LivelloStrumentoCosto
grep-guardScript che cerca un pattern e stampa un messaggio WHY/FIXMinuti
Regola del linterimport-linter (Python), dependency-cruiser, eslint-plugin-boundaries (JS/TS)Un'ora
Test architetturaleTest in CI che fallisce se si violano gli stratiDi più, ma visibile in make check
#!/usr/bin/env bash
fail=0
if grep -rn "from app.db" app/services/; then
  echo "WHY: i servizi non parlano direttamente con il database"
  echo "FIX: usa il repository in app/repositories/"
  fail=1
fi
exit $fail

Problemi tipici e soluzioni

ProblemaComponenteSoluzione
Una regola in CLAUDE.md non viene rispettataIstruzioniAccorciare il file, trasformare la regola in verifica o hook
L'agente non riesce a eseguire i testStrumentiConsentire il comando, installare le dipendenze nell'immagine
Comportamenti diversi su macchine diverseAmbienteFile di lock, Docker/devcontainer, versioni del runtime fissate
Amnesia tra le sessioniStatoPROGRESS.md, session handoff, lettura all'inizio della sessione
Tre funzionalità avviate, nessuna finitaStatoWIP=1 in feature_list.json
"Fatto", ma non funzionaFeedbackDoD, E2E, verify.sh, valutatore indipendente
Test verdi, funzionalità rottaFeedbackE2E con database e configurazione reali
L'agente copia pattern cattiviFeedbackarch-check fin dal primo giorno
Non si capisce che cosa abbia fatto l'agenteStatoCommit piccoli, report in PROGRESS.md e DECISIONS.md
L'agente ha rovinato l'ambiente di notteAmbienteSandbox, git worktree, checkpoint, ripristino con init.sh
Lo stesso commento di revisione è arrivato due volteIntero harnessTrasformarlo in verifica in make check, togliere il testo dalle istruzioni

Ruoli nei compiti lunghi

RuoloFaNon fa
PianificatoreFunzionalità con criteri di accettazioneNon scrive codice
GeneratoreImplementa una funzionalità, esegue i testNon decide se è completa
ValutatoreVerdetto con rubrica, citando file, riga, logNon vede il ragionamento del generatore
MergeCommit quando review == passÈ codice, non un agente

Budget del lavoro autonomo

  • Obiettivo in una sola frase (per esempio portare tutte le funzionalità a passing).
  • WIP=1, limiti di tempo e di tentativi per funzionalità.
  • La metrica cresce soltanto; una regressione comporta rollback immediato.
  • Migrazioni, infrastruttura, denaro: escalation a una persona.
  • Dopo diverse revisioni fallite la funzionalità riparte da un contesto pulito.

Checklist di avvio dell'agente

  1. Esiste AGENTS.md: stack, avvio, comando di verifica, DoD.
  2. make check passa su un clone pulito.
  3. L'ambiente è riproducibile: file di lock, Docker o devcontainer.
  4. L'agente ha accesso ai comandi necessari, quelli pericolosi sono bloccati o in sandbox.
  5. C'è almeno un E2E per lo scenario principale.
  6. Esiste PROGRESS.md e la regola di leggerlo all'inizio di ogni sessione.
  7. Le funzionalità sono in lista con i loro stati, una sola attiva.
  8. Il segno di passing lo mette lo script.
  9. I messaggi di verifica contengono WHY e FIX.
  10. Il compito è formulato con criteri di accettazione e confini del perimetro.
  11. È definito che cosa richiede una decisione umana.
  12. È stato misurato il verification gap prima delle modifiche, come riferimento.

Metriche dell'harness

MetricaCome si calcola
Verification gapQuota di "fatto" non confermati dalla verifica su 10 compiti
MTTRTempo dal guasto al ripristino dello stato funzionante
Avvio a freddoLa nuova sessione sa rispondere a "dove siamo, che cosa viene dopo" senza tirare a indovinare?
AblationCalo quando si disattiva un componente su un insieme fisso di compiti

Sintesi

L'harness non è un file, ma un ciclo: istruzioni, strumenti, ambiente, stato e feedback. Parti dalla verifica, mantieni AGENTS.md breve, affida il segno di completamento allo script e rivedi regolarmente l'harness. Tutto questo viene insegnato in pratica in un corso su un progetto reale, dove i componenti si assemblano in un unico harness.

Domande frequenti

Qual è la differenza tra AGENTS.md e CLAUDE.md?

Lo scopo è lo stesso: un file di istruzioni per l'agente. CLAUDE.md è letto da Claude Code, AGENTS.md è un formato comune a più agenti. In CLAUDE.md puoi limitarti a scrivere <code>@AGENTS.md</code> per collegarli.

Quante righe deve avere AGENTS.md?

Non c'è un limite rigido, ma il file d'ingresso va tenuto breve, come un indice: circa un centinaio di righe. I dettagli vanno in documenti separati.

Serve un feature_list.json anche in un progetto piccolo?

Per modifiche occasionali e isolate no. Diventa utile quando l'agente lavora su più funzionalità di seguito o in più sessioni.

Dove conservo i segreti a cui deve accedere l'agente?

Nelle variabili d'ambiente o in un gestore di segreti, non nei file di istruzioni né nel codice. All'agente dai accesso all'ambiente, non i valori scritti nel testo.

Impara l’argomento in video

Questo argomento è trattato in modo approfondito, con pratica, nel corso «Harness Engineering: инженерия надёжности AI-агентов».

Vai al corso