# Gestire la finestra di contesto di un agente: budget, tagli e cache

Una finestra grande non è una strategia: serve un budget per voce, un ordine di taglio e un prefisso stabile per la cache. Ecco la ripartizione.

> Pagina: https://ui.eneawork.it/blog/agent-context-window-strategia
> Markdown: https://ui.eneawork.it/blog/agent-context-window-strategia.md

*2026-11-01*

La finestra di contesto si gestisce con un budget scritto per voce, un ordine di taglio deciso prima e un prefisso stabile che la cache possa riusare. Comprare una finestra più grande non è una strategia.

Il listino DeepSeek, letto su api-docs.deepseek.com/quick_start/pricing il 1 novembre 2026, dichiara per deepseek-flash un contesto da 1M token e un output massimo di 384K. Lo stesso listino separa l'input con cache a 0,003 $ per milione dal senza cache a 0,15 $ fuori orario di punta, con output a 0,60 $. Il listino OpenAI, letto su platform.openai.com/docs/pricing lo stesso giorno, tiene gpt-6.1-sol a 2 $ di input fino a 272K token e a 4 $ sopra. L'endpoint EneUI ha risposto a tools/list con 3.655 byte in 218 ms, misurati il 1 novembre 2026: a quattro caratteri per token sono circa 914 token di schemi a ogni chiamata. Il client EneUI conta 60 file TypeScript e TSX per 13.924 righe, contati in client/src il 1 novembre 2026. Il catalogo dietro conta 111.985 componenti, 1.556 blocchi e 12.808 icone da 1.472 librerie, letti da /api/stats.

## Il budget si scrive prima

La tabella è una ripartizione di progetto su 200.000 token, non una misura: serve a decidere in anticipo cosa cede quando il task cresce. Senza tetti separati, il primo file grosso mangia lo spazio della risposta e il modello tronca l'output a metà.

## Tagliare prima di comprimere

L'ordine conta perché ogni voce ha un costo di ricostruzione diverso. Un output vecchio si può buttare senza perdere capacità di agire; un identificativo no. Il taglio va fatto sui dati che il modello non userà più, non sui dati che servono a spiegare perché è arrivato qui.

## Comprimere tenendo gli identificativi

Quando il taglio non basta, lo storico diventa un blocco di stato: cosa è stato fatto, quali file sono stati toccati, quali comandi sono passati, cosa resta aperto. Gli identificativi esatti restano, le descrizioni lunghe no. Un riassunto che perde un percorso o un codice di errore costringe il modello a rifare il lavoro, e il risparmio di token si paga in passaggi.

## La cache premia il prefisso stabile

La cache colpisce solo il prefisso identico: system prompt, schemi dei tool, istruzioni. Se il system prompt contiene la data corrente, l'elenco dei file in ordine casuale o l'identificativo del task, il prefisso cambia a ogni chiamata e lo sconto non arriva mai. Su deepseek-flash la differenza è di cinquanta volte sull'input, quindi l'ordine delle righe è una scelta economica.

## Quanto pesano gli schemi

node -e "const bytes=3655,budget=200000,t=Math.round(bytes/4);console.log('tool schemas',t,'tokens',((100*t)/budget).toFixed(1)+'% of budget')"

Il comando stampa tool schemas 914 tokens 0.5% of budget. Nove tool sono irrilevanti su 200.000 token; cinquanta tool con descrizioni lunghe cambiano la proporzione e vanno misurati con lo stesso conto. La stima a quattro caratteri per token serve a decidere, non a fatturare.

## La limitazione

Nessuna ripartizione sopravvive a un task che cambia forma: un agente che legge un repository intero sposta tutto sui documenti, uno che corregge un test spende quasi tutto in output dei tool. La compressione perde dettagli che sembravano inutili, e la cache si rompe appena una riga in testa cambia. Il budget va rimisurato sul campo usage, non stimato a occhio.

## Dove continuare

L'aritmetica dei prezzi per fascia è in contesto lungo: costi reali, l'ordine dei passi in orchestrare agenti multi-step, la scrittura del system prompt in prompt per agenti. Il catalogo che alimenta gli esempi è in 111.985 componenti e 1.556 blocchi; un record citabile è agent dock di dqnamo.

## FAQ

### Meglio una finestra da 1M token o un contesto corto?

Il contesto corto vince quasi sempre sul costo: ogni passaggio ripaga l'intero prompt. Una finestra da 1M token serve quando il task richiede davvero un documento intero, non come sostituto della selezione dei file.

### Quando conviene compattare lo storico?

Quando il prossimo passo rischia di superare il budget, non quando la finestra è piena. Meglio compattare al 70-80% del budget dichiarato, così resta spazio per una chiamata di tool e per la risposta.

### Cosa taglio per primo?

Gli output vecchi dei tool, i log e i file riletti per intero. Sono dati che il modello ha già usato e che può ricostruire da un comando; gli identificativi e i codici di errore sono l'ultima cosa da togliere.

### La compressione peggiora la qualità?

Può peggiorarla se perde percorsi, nomi di funzione o messaggi d'errore. Un buon riassunto conserva gli identificativi esatti e riassume solo le descrizioni: il modello deve poter continuare senza rileggere tutto.

### Perché la cache non si attiva mai?

Perché il prefisso cambia. Una data, un elenco in ordine casuale o un identificativo nella prima riga invalidano la cache a ogni chiamata. Tieni stabile la testa del prompt e sposta i dati variabili in fondo.
