Cool Solution — passione per lo sviluppo, AI e vibe coding
Business UnitSviluppo, AI e vibe coding

Claude Code /compact: come gestire il contesto e tagliare i costi nelle sessioni lunghe

Quando una sessione di Claude Code va avanti per ore, prima o poi le risposte peggiorano: l'assistente dimentica una decisione presa all'inizio, rilegge file che aveva già visto, gira a vuoto. Quasi sempre la causa è una sola — la finestra di contesto si è riempita. Il comando /compact serve esattamente a questo: riassume la conversazione e la ricarica come nuovo punto di partenza, conservando ciò che conta e buttando il resto. In questo articolo guardo cosa fa /compact sotto il cofano, perché la compattazione automatica a volte scatta nel momento sbagliato, e il flusso preciso che uso ogni giorno per restare lucido e spendere meno.

$ claude "refactor user.service to async/await" reading src/services/user.service.ts... proposing 12 edits across 3 files ✓ tests still pass (47 / 47) applying patch...AI PAIRsupervised

Cosa fa /compact e perché il contesto è il collo di bottiglia

La finestra di contesto è lo spazio in cui Claude Code tiene tutto: la cronologia della conversazione, i file aperti, l'output dei comandi, il CLAUDE.md, le skill caricate e le istruzioni di sistema. Man mano che lavoro, quello spazio si riempie. Quando è pieno non resta margine per ragionare: il contesto è la risorsa scarsa, non l'intelligenza del modello.

Il comando /compact prende la conversazione, la riassume e sostituisce la cronologia lunga con quel riassunto. È diverso da /clear, che invece azzera tutto e riparte da zero. Con /compact mantengo il filo — le richieste chiave e gli snippet di codice importanti restano — mentre con /clear butto via anche la memoria di cosa stavo facendo.

La distinzione conta perché buttare il contesto sbagliato costa caro. Se azzero a metà di un refactoring perdo le decisioni prese; se non compatto mai, ogni messaggio successivo trascina con sé migliaia di token inutili. /compact è la via di mezzo: alleggerisce senza farmi ricominciare.

Compattazione automatica: cosa succede quando il contesto si riempie

Claude Code non aspetta che intervenga io. Quando il contesto si avvicina al limite gestisce lo spazio da solo: prima scarta gli output più vecchi dei tool, poi, se non basta, riassume la conversazione. Le mie richieste e gli snippet di codice chiave vengono preservati; le istruzioni di dettaglio date all'inizio possono andare perse.

La soglia non è fissa. Storicamente l'auto-compattazione scattava intorno al 95% di riempimento, con appena il 25% di spazio residuo, ma nel corso del 2025 il meccanismo è stato reso più prudente, anticipando in alcuni casi al 64-75% per evitare compattazioni fallite. Da inizio 2026 l'operazione è anche diventata istantanea, dove prima bloccava la sessione per qualche secondo.

C'è un caso limite da conoscere: se un singolo file o output è così grosso che il contesto si riempie di nuovo subito dopo ogni riassunto, Claude Code smette di compattare dopo qualche tentativo e mostra un errore invece di entrare in loop. Quando lo vedo, è il segnale che sto dando in pasto troppo materiale in un colpo solo: meglio spezzare il lavoro o filtrare l'input.

Cosa succede quando il contesto si riempie
  1. 01
    Contesto quasi pienoClaude Code rileva che lo spazio disponibile sta finendo, senza che tu debba fare nulla.
  2. 02
    Scarto degli output vecchiVengono rimossi per primi gli output dei tool meno recenti, i meno utili da conservare.
  3. 03
    Riassunto della conversazioneSe non basta, la cronologia viene riassunta: richieste e codice chiave restano.
  4. 04
    La sessione prosegueSi riparte con il contesto alleggerito, ma le istruzioni iniziali di dettaglio possono essersi perse.

Fonte: documentazione ufficiale Claude Code (How Claude Code works, Manage costs).

/compact con focus: l'istruzione che cambia tutto

Il /compact da solo lascia decidere all'assistente cosa conservare. Ma posso dirglielo io passando un focus: scrivo /compact Focus on code samples and API usage e il riassunto privilegia esattamente quello. È la differenza tra un riassunto generico e uno che tiene ciò che mi serve per i passi successivi.

Quando voglio che la regola valga per tutta la sessione non la ripeto ogni volta: la metto nel CLAUDE.md del progetto, in una sezione Compact instructions. Lì scrivo, ad esempio, di concentrarsi sull'output dei test e sulle modifiche al codice. Da quel momento ogni compattazione, manuale o automatica, segue quella priorità.

In pratica uso il focus in tre situazioni ricorrenti, dove so già cosa conta e cosa è rumore:

  • Refactoring lungo: focus sulle decisioni di design e sui file già toccati, così non rilegge tutto da capo.
  • Debugging: focus sull'output dei test e sui messaggi di errore, il resto lo posso buttare.
  • Integrazione API: focus su endpoint, payload e formati di risposta, che sono ciò che riuso nei passi successivi.

Quando uso /compact e quando /clear

La domanda che mi faccio prima di premere invio è semplice: sto continuando lo stesso lavoro o ne sto iniziando un altro?. Se è lo stesso, /compact. Se cambio del tutto argomento, /clear — perché trascinare il contesto di un task chiuso fa solo sprecare token su ogni messaggio successivo.

Un'abitudine che fa la differenza è compattare mentre la cache è ancora calda. Il prompt caching di Claude Code abbatte il costo dei contenuti ripetuti, e una compattazione fatta al momento giusto preserva quei risparmi. Prima di azzerare con /clear uso /rename per ritrovare la sessione e /resume per tornarci se serve.

/compact e /clear: due gesti per due situazioni diverse

/compact — stesso lavoro

  • Riassume la conversazione e la ricarica
  • Conserva richieste e snippet di codice chiave
  • Mantiene il filo del task in corso
  • Ideale a metà di un refactoring o di un debug

/clear — lavoro nuovo

  • Azzera del tutto la cronologia
  • Riparte da un contesto vuoto
  • Da usare quando cambi argomento
  • Abbinato a /rename e /resume per ritrovare la sessione

Il flusso che seguo per non perdere il contesto

La regola che mi sono dato è non superare mai il 60% di utilizzo del contesto in una singola sessione. Oltre quella soglia la qualità cala e i costi salgono, perché ogni token in più viene riletto a ogni messaggio. Per sapere dove sono uso /context, che mostra cosa sta occupando spazio, e /usage per i token consumati.

Quando mi avvicino compatto in modo proattivo con un focus, invece di aspettare che scatti l'automatismo nel mezzo di un ragionamento. Compattare quando decido io, e non quando il contesto è allo stremo, è ciò che tiene lucida una sessione lunga dall'inizio alla fine.

Il mini-playbook che applico, in ordine:

  • Tengo i task piccoli: una richiesta a fuoco consuma meno contesto e produce risultati migliori di un mega-prompt.
  • Controllo con /context appena la sessione si allunga, per vedere cosa pesa davvero.
  • Compatto con un focus intorno al 60%, indicando cosa conservare.
  • Uso /clear tra task non collegati, dopo un /rename per ritrovare la sessione.
  • Sposto le istruzioni stabili nel CLAUDE.md, così non dipendono dalla cronologia che verrà compattata.

Domande frequenti su comando /compact Claude Code

/compact e /clear sono la stessa cosa?

No, e confonderli costa contesto. /compact riassume la conversazione e la ricarica, conservando richieste e codice chiave; /clear azzera tutto e riparte da zero. Uso /compact quando continuo lo stesso lavoro, /clear solo quando cambio completamente argomento.

Posso decidere cosa Claude Code conserva durante la compattazione?

Sì. Passo un focus al comando, ad esempio /compact Focus on code samples and API usage, oppure aggiungo una sezione Compact instructions nel CLAUDE.md del progetto. In entrambi i casi dico esplicitamente cosa tenere, invece di lasciare la scelta all'automatismo.

Perché la compattazione automatica a volte scatta nel momento sbagliato?

Perché si attiva in base al riempimento del contesto, non al mio flusso di lavoro: storicamente intorno al 95%, poi anticipata in alcuni casi per evitare compattazioni fallite. Se non voglio sorprese a metà di un ragionamento compatto io prima, in modo proattivo intorno al 60% di utilizzo.

Compattare aiuta davvero a ridurre i costi?

Sì, perché in Claude Code i token crescono con la dimensione del contesto: più cronologia trascino, più pago a ogni messaggio. Compattare al momento giusto, mentre il prompt caching è ancora caldo, tiene il contesto piccolo e la spesa sotto controllo, senza farmi ricominciare da capo.

Parliamone

Se questo tema ti riguarda, scrivimi: confrontarsi su codice e AI è sempre tempo speso bene.

Altri articoli del blog

Newsletter Cool Solution

Novità, articoli e casi d'uso AI per il business: ogni venerdì il nuovo articolo del blog direttamente nella tua inbox.

Doppio opt-in, zero spam, disiscrizione in un click. Privacy

AI Tips & Tricks

Ogni settimana un comando di Claude Code o Codex spiegato bene: doc ufficiale, esempi dal web e schemi pratici.

Doppio opt-in, zero spam, disiscrizione in un click. Privacy