Una sola impostazione ha ridotto del 17% il consumo di token del mio agente di coding AI: ecco i numeri

Pubblicato il Sep 22, 2026 da Štefan Moravík.
AI Agents Token Optimization Claude Code Developer Tools
In questa pagina 8 min di lettura
  1. 1La versione breve
  2. 2Perché una finestra da 1M costa più di quanto sembri
  3. 3Cosa ho cambiato
  4. 4Come l’ho misurato
  5. 5Due sessioni, stesso agente
  6. 6I numeri settimanali
  7. 7Dove finivano i soldi
  8. 8Il tetto ha tenuto?
  9. 9Quanto sarebbe costato senza il limite
  10. 10Quanto ti costa
  11. 11Come configurarlo
  12. 12Se hai un limite settimanale
  13. 13Leggi anche

La versione breve

  • Uso un agente di coding AI tutto il giorno su un modello con una finestra di contesto da 1M di token. Le sessioni crescevano finché quasi la riempivano.
  • Ho aggiunto una riga alla sua configurazione, limitando una sessione a 350.000 token di contesto prima che si riassuma da sola e continui.
  • Misurato su 1.117 trascrizioni di sessione: 17% di token in meno a parità di prompt, e nelle sessioni lunghe in cui il limite entra davvero in azione, 55% in meno.

Di seguito il metodo, tutti i grafici e quanto ti costa in cambio, così puoi decidere se si applica al tuo setup.

Perché una finestra da 1M costa più di quanto sembri

Una conversazione con un modello è stateless. Ogni richiesta porta con sé l’intera cronologia: il system prompt, ogni definizione di tool, ogni file che l’agente ha letto, ogni risultato di tool, ogni messaggio. Non un delta. Tutto, ogni volta.

Quindi una sessione cresciuta fino a 900.000 token paga 900.000 token di input alla chiamata successiva, e a quella dopo ancora. Il turno 400 non fa più lavoro del turno 4. Costa semplicemente molte volte di più.

Il prompt caching attenua questo effetto. I token che il modello ha già visto vengono fatturati a circa un decimo del prezzo di input normale. Quello sconto è reale, è ciò che rende sostenibili le sessioni lunghe, ed è anche il motivo per cui nessuno guarda il problema. Nei miei dati, il 98% di tutti i token di input erano letture da cache. Un decimo di un numero molto grande restava comunque la voce più alta della fattura.

La domanda non è se la tua cronologia è in cache. È quanto grande le è permesso diventare prima che qualcosa la azzeri.

FlowHunt Logo

Pronto a far crescere il tuo business?

Inizia oggi la tua prova gratuita e vedi i risultati in pochi giorni.

Cosa ho cambiato

L’agente è Claude Code che esegue Opus sulla finestra di contesto da 1M. L’impostazione è autoCompactWindow in ~/.claude/settings.json. Quando una sessione raggiunge quel numero di token, l’agente riassume la conversazione e continua dal riassunto.

{
  "autoCompactWindow": 350000
}

Non l’avevo mai impostata, quindi le sessioni andavano avanti finché non si avvicinavano alla finestra piena. In quattro giorni ho provato tre valori:

DataImpostazione
14 settembre250.000
15 settembre300.000
18 settembre350.000

Come l’ho misurato

Claude Code scrive ogni sessione in una trascrizione JSONL sotto ~/.claude/projects/, incluso l’utilizzo di token di ogni chiamata API. Le ho analizzate tutte e 1.117, coprendo cinque settimane dal 19 agosto al 22 settembre, deduplicate per ID di richiesta, e ho tenuto solo le sessioni interattive. Le esecuzioni in GitHub Actions usano lo stesso account ma non possono essere influenzate da un’impostazione sul mio laptop, quindi sono escluse.

I totali grezzi di token sono fuorvianti da soli. Una settimana intensa batte una settimana tranquilla, qualunque cosa tu cambi. Quindi ogni numero qui sotto è ponderato per la cache, che è ciò che il contatore legge davvero: input fresco a 1x, scritture in cache a 1,25x (cache da 5 minuti) o 2x (cache da 1 ora), letture da cache a 0,1x. E ogni confronto è normalizzato per il lavoro svolto, ossia i prompt che ho digitato o le chiamate API che l’agente ha fatto.

Due sessioni, stesso agente

Questo è il meccanismo in un’unica immagine. A sinistra, una sessione reale del 3 settembre, prima del limite. A destra, una sessione reale del 15 settembre, dopo.

Contesto trasportato da ogni chiamata API in due sessioni reali: prima del limite il contesto sale a 996k token, viene compattato una volta e risale a 880k. Dopo il limite oscilla tra 24k e 270k, compattandosi quindici volte.

La sessione a sinistra è durata 781 chiamate. È salita a 996.000 token di contesto, ha sbattuto contro il muro della finestra da 1M, si è compattata una volta e poi è risalita dritta a 880.000. Per la seconda metà di quella sessione, ogni singola chiamata rileggeva più di mezzo milione di token.

La sessione a destra è durata 1.642 chiamate, più del doppio, e non ha mai portato più di 270.000. Si è compattata quindici volte. Ogni compattazione è un punto.

I numeri settimanali

Solo sessioni interattive. Le barre sono i token di input ponderati per la cache per chiamata API, che è il singolo numero più equo perché non gli importa quanto ho lavorato in una data settimana.

Token di input ponderati per la cache per chiamata API, per settimana. Le quattro settimane prima del limite si collocano tra 27,9k e 36,1k. La settimana in cui è stato applicato il limite scende a 27,3k, e la settimana parziale successiva a 22,4k.

Il confronto più pulito nel dataset è la settimana del 7 settembre contro quella del 14 settembre, perché non le ho scelte io. Sono semplicemente capitate ai due lati del cambiamento, e in ciascuna ho digitato quasi esattamente lo stesso numero di prompt.

Settimana delPromptChiamate APIInput ponderato per cachePer chiamata
7 set97111.364348,1M30,6k
14 set96810.555288,5M27,3k

971 prompt contro 968. Input effettivo sceso da 348,1M a 288,5M. Sono il 17% in meno a parità di prompting. I due giorni della settimana successiva sono arrivati a 22,4k per chiamata, ancora più in basso.

Dove finivano i soldi

Suddividi ogni chiamata API per quanta parte di contesto portava con sé, e il meccanismo è visibile direttamente.

Quota di tutta la spesa di input ponderata per la cache, per dimensione del contesto della chiamata. Prima del limite, il 24% della spesa andava a chiamate che portavano da 350k a 500k di contesto e il 15% a chiamate oltre 500k. Dopo il limite quelle quote sono dell'8% e del 5%.

Prima del limite, il 39% di tutto ciò che spendevo finiva in chiamate che si trascinavano dietro più di 350.000 token di cronologia. Quelle chiamate non facevano più lavoro delle altre. Era lo stesso lavoro, con più bagaglio. Dopo il limite quella quota è del 12%.

Il tetto ha tenuto?

Un punto per sessione, posizionato al contesto più grande che quella sessione abbia mai portato.

Contesto massimo raggiunto per sessione, un punto ciascuno. Prima del limite, 260 sessioni distribuite da 100k a 996k. Dopo il limite, 59 sessioni si concentrano sotto 320k, con due eccezioni a 434k e 561k nei primi due giorni.

Due sessioni nei primi due giorni sono comunque andate oltre il limite, a 434.000 e 561.000, e non ho scoperto perché. Da quando il valore 350.000 è stato inserito il 18 settembre, nessuna sessione l’ha superato. La coda di sessioni che vivevano tra 500k e 1M, dove stava la maggior parte dello spreco, è sparita.

Quanto sarebbe costato senza il limite

Per mettere un totale, ho rigiocato ogni sessione iniziata dopo il cambiamento come se il contesto eliminato non fosse mai stato riassunto e venisse ancora riletto a ogni chiamata successiva, con il tetto della finestra da 1M.

Input ponderato per cache
Reale, 73 sessioni, 9.675 chiamate, 55 compattazioni216,8M
Le stesse sessioni senza il limite479,2M
Evitato262,5M, ovvero 55%

La sessione a destra del primo grafico ne rappresenta da sola 118,5M. Un lungo refactoring che altrimenti avrebbe passato le sue ultime centinaia di chiamate a rileggere quasi un milione di token ciascuna.

Considera il 55% come l’estremo ottimistico. Senza il limite non avrei davvero lasciato una sessione macinare a 900k per ore; prima o poi l’avrei svuotata a mano, il che azzera comunque il costo. L’estremo conservativo è il valore osservato per chiamata, da 30,6k a 22,4k, quindi circa il 20%-27%. La verità sta da qualche parte tra i due.

Quanto ti costa

Non è gratis, e chiunque lo consigli dovrebbe dirlo.

Attesa. 67 compattazioni dal cambiamento, con una mediana di circa tre minuti ciascuna. All’incirca 3,4 ore passate a guardare un riassunto che viene scritto, distribuite su otto giorni.

Un po’ di rilavorazione. La compattazione elimina molto. Con l’impostazione a 350K, la compattazione mediana portava una sessione da 318.000 token a 24.000. L’agente perde dettagli e a volte li ricostruisce: i file riletti all’interno della stessa sessione sono passati dall'11,5% delle letture prima della prima compattazione al 20,5% dopo. Il campione dietro a quel secondo numero è piccolo, quindi leggilo come una direzione più che come una misurazione.

La scelta della soglia conta. A 250K, il 36% delle mie sessioni lunghe arrivava a una compattazione. A 350K, ci arrivava il 12%, mentre il tetto teneva comunque. Impostala troppo bassa e paghi i tre minuti e la rilavorazione ripetutamente per un risparmio che avevi già incassato.

Come configurarlo

Claude Code. Aggiungi autoCompactWindow a ~/.claude/settings.json. Su un modello con contesto da 1M, 350.000 è stato il migliore dei tre valori provati. Su un modello da 200K, scala verso il basso e inizia intorno a 120.000-140.000. Le nuove sessioni la recepiscono; una sessione già in corso mantiene il vecchio valore.

Altri agenti. Cerca la stessa idea sotto un altro nome: un trigger di compattazione, un limite di contesto, una soglia di riassumi-e-continua. Se non c’è, la versione manuale è svuotare la sessione più spesso di quanto sembri naturale. L’istinto di tenere viva un’unica lunga sessione tutto il giorno perché “conosce il progetto” è quello costoso.

Qualunque cosa tu usi, due abitudini fanno più di qualsiasi impostazione. Tieni lo stato durevole nei file invece che nella conversazione, così l’agente può rileggere un file a basso costo invece di portarsi dietro per sempre ogni risposta precedente. E sposta il lavoro a forte lettura verso subagenti con un loro contesto di breve durata, così i venti file che leggono non entrano mai nella sessione principale.

Se hai un limite settimanale

Se paghi un abbonamento con un limite di utilizzo settimanale invece di una fattura per token, questa è la leva con il miglior rapporto tra sforzo ed effetto che abbia trovato. Una riga di JSON, nessun cambiamento a come lavori, e lo stesso limite si allunga in modo misurabile. Nel mio caso lo stesso volume settimanale di prompt è costato il 17% in meno, e le sessioni lunghe circa la metà.

Leggi anche

Le finestre di contesto vengono vendute come capacità. Si comportano come un contatore che gira, addebitato a ogni turno per tutto ciò che hai mai inserito. Se vuoi i meccanismi dietro a questo e non solo l’impostazione, l’articolo complementare spiega cosa riempie davvero una finestra di contesto, perché una sessione lunga costa molto più del lavoro che fa e come caching, svuotamento e compattazione cambiano ciascuno l’aritmetica.

Domande frequenti

Štefan è un ingegnere AI e software che sta sviluppando FlowHunt. Oltre al prodotto stesso, progetta flussi di lavoro di ingegneria software agentici per sviluppatori che riducono i costi di sviluppo mentre aumentano la qualità del codice.

Štefan Moravík
Štefan Moravík
Ingegnere AI e Software

Crea agenti AI che non sprecano il loro contesto

FlowHunt ti permette di progettare flussi di lavoro di agenti in cui ogni passaggio porta con sé solo il contesto di cui ha bisogno, così spendi token per il lavoro invece che per rileggere la cronologia.