compress AI

/compact e handoff: gestire il contesto in Claude Code senza perdere il lavoro

calendar_today personTeam EGSOFT schedule6 min di lettura
info

Disclaimer: le informazioni pubblicate in questa sezione hanno finalità di pura divulgazione tecnica. EG Software S.r.l. non si assume alcuna responsabilità per un utilizzo improprio dei contenuti, né per eventuali danni diretti o indiretti derivanti dalla loro applicazione, e non garantisce l'aggiornamento, l'accuratezza o la completezza delle informazioni riportate. Prima di utilizzare in produzione codice o procedure qui descritte, verificane sempre l'adeguatezza al proprio contesto.

Claude Code lavora con una finestra di contesto che arriva a un milione di token, ma il problema delle sessioni lunghe non è finire lo spazio: è il context rot. Man mano che la conversazione cresce, l'attenzione del modello si distribuisce su più token e il materiale vecchio e ormai irrilevante inizia a disturbare il lavoro in corso. La qualità cala prima che il contesto sia pieno.

Gli strumenti per gestirlo sono due, e vanno capiti insieme: /compact, che è un comando nativo, e l'handoff, che invece è una pratica — non un comando che esiste già.

/compact: cosa fa davvero

Il comando chiede al modello di riassumere la conversazione fino a quel punto e sostituisce la cronologia con quel riassunto. La sessione prosegue, il contesto si svuota, il lavoro continua.

/compact

La parte che spesso si ignora è che si può guidare, ed è quasi sempre una buona idea:

/compact concentrati sul refactoring dell'autenticazione,
lascia perdere il debug dei test

Senza istruzioni il riassunto è generico e decide il modello cosa conta. Con una riga di indirizzo si tiene quello che serve al lavoro che continua.

Va detto chiaramente: /compact è un'operazione con perdita. Quello che resta è un riassunto, non la conversazione. Dettagli che sembravano marginali — il percorso esatto di un file, il motivo per cui una strada è stata scartata, il comando che ha funzionato al terzo tentativo — spariscono senza avvisare.

La compattazione automatica

Quando il contesto si avvicina al limite, Claude Code compatta da solo. È utile perché evita il blocco secco, ma arriva quando arriva: cioè spesso nel mezzo di un ragionamento, con criteri che non hai scelto tu. È il motivo principale per cui conviene compattare prima, quando si decide di farlo e si può dire cosa tenere.

Non è l'unico strumento

SituazioneStrumentoPerché
Stesso compito, contesto ancora utileContinuareNon si rilegge quello che il modello ha già letto
L'approccio preso era sbagliato/rewind (o doppio Esc)Torna indietro e scarta il tentativo fallito, tenendo le letture dei file
Sessione gonfia, materiale ormai stantio/compactRiassunto a basso sforzo, la sessione prosegue
Compito nuovo/clear + handoff scrittoZero degrado: si riparte puliti e si decide cosa portarsi dietro
Sotto-attività che producono molto outputSubagentContesto isolato, alla sessione principale torna solo la conclusione

Due comandi di supporto utili: /context per vedere com'è composto il contesto corrente e /usage per tenere d'occhio i consumi.

L'handoff: la parte che manca

Qui va fatta una precisazione, perché in giro se ne parla come se fosse un comando: in Claude Code non esiste un comando nativo /handoff. È un pattern nato nella community, che si realizza con una skill, uno slash command personalizzato o semplicemente chiedendolo a parole.

L'idea è banale e funziona: prima di compattare o di chiudere la sessione, si fa scrivere al modello un documento di passaggio di consegne. Non dopo — dopo la compattazione le informazioni non ci sono più.

La struttura che si è consolidata ha cinque sezioni:

  1. Cosa è successo — decisioni prese e obiettivi raggiunti
  2. Dove stanno le cose — percorsi dei file toccati
  3. Cosa è stato verificato — e soprattutto cosa non lo è stato
  4. Stato di git — branch, commit, cosa è stato pushato
  5. Punti aperti — i prossimi passi, numerati

Farsi il proprio comando /handoff

Bastano pochi minuti: si crea il file .claude/commands/handoff.md nel progetto (oppure in ~/.claude/commands/ per averlo ovunque) con dentro le istruzioni.

Scrivi il passaggio di consegne di questa sessione in
docs/handoff.md, sovrascrivendo il contenuto precedente.

Struttura:
## Cosa e stato fatto
Decisioni prese e perche, obiettivi raggiunti.
## File toccati
Percorsi completi, con una riga su cosa e cambiato in ciascuno.
## Verificato / non verificato
Cosa e stato testato davvero e cosa e rimasto da provare.
## Stato git
Branch, ultimo commit, cosa non e ancora committato.
## Prossimi passi
Elenco numerato, dal primo da fare.

Sii specifico: nomi di file, funzioni, comandi esatti.
Niente frasi generiche tipo "sistemare la logica".

Da quel momento /handoff esiste — come comando tuo. Il flusso diventa: /handoff, poi /compact (o /clear), e alla ripresa basta far leggere docs/handoff.md.

Handoff e tasks.md sono la stessa idea

Chi tiene già un tasks.md nel repository ha metà del lavoro fatto: l'elenco dei task con le caselle spuntate è la parte "prossimi passi" del passaggio di consegne, e vive nel repository, versionata. L'handoff aggiunge il resto — il contesto delle decisioni, cosa è stato verificato, dove sono i file. Le due cose si tengono insieme: il file dei task racconta cosa manca, l'handoff racconta a che punto si era.

Il flusso che funziona

  1. Si lavora finché il contesto è sano e le risposte restano centrate
  2. Ai primi segnali di deriva — risposte che ignorano decisioni già prese, file riletti più volte — si ferma il lavoro
  3. /handoff: il documento di passaggio viene scritto su disco
  4. /compact con istruzioni mirate, oppure /clear se il prossimo compito è diverso
  5. Alla ripresa: «leggi docs/handoff.md e riparti dal punto 1 dei prossimi passi»

Errori tipici

  • Compattare senza istruzioni — il riassunto tiene quello che sembra importante al modello, non a te
  • Aspettare la compattazione automatica — arriva nel momento peggiore, e la qualità era già calata da un pezzo
  • Scrivere l'handoff dopo aver compattato — è il singolo errore che vanifica tutto: il documento viene scritto su un riassunto, non sui fatti
  • Handoff generico — «continuare il refactoring» non serve a nessuno; servono nomi di file, funzioni e comandi
  • Tenere aperta una sessione infinita — il contesto non finisce, ma la lucidità sì

La regola pratica, alla fine, è una sola: il contesto è materiale di consumo, il documento di passaggio no. Quello che serve davvero deve finire su disco, dove sopravvive a qualsiasi compattazione.

compressAltri articoli su AI grid_viewTutti gli articoli
Scrivici su WhatsApp