Programma
Se ti è mai capitato di raggiungere il limite di token del tuo piano per il coding AI dopo poche richieste, potresti chiederti dove siano finiti tutti quei token.
Chiedi all’agente di correggere un bug, rifattorizzare una feature o ispezionare un repository e, all’improvviso, una grossa parte della tua quota di coding è sparita.
Non è necessariamente un problema del provider o dell’abbonamento.
I coding agent AI sono semplicemente molto più intensivi in termini di token rispetto ai chatbot normali. Non si limitano a rispondere al tuo prompt. Possono leggere più file, cercare nel codebase, ispezionare i log, eseguire test, chiamare strumenti, generare codice, rivedere le proprie modifiche e ripetere il processo varie volte prima di completare un’attività.
La buona notizia è che puoi ridurre parecchio di questo consumo di token non necessario.
Esistono strumenti che rendono gli agenti meno verbosi, li frenano dal sovra‑ingegnerizzare compiti semplici, comprimono l’output rumoroso del terminale e impediscono a risposte di strumenti molto grandi di riempire la finestra di contesto.
In questa guida, vedremo quattro strumenti per ridurre l’uso di token nei coding agent AI: Caveman, Ponytail, RTK e Context Mode.
Vedremo cosa fa ciascuno, come configurarli e come combinarli per ottenere più lavoro di coding da abbonamenti come Claude Code e Codex prima di raggiungere i limiti di utilizzo.
Perché i workflow agentici usano così tanti token?
Un chatbot normale prende un prompt e restituisce una risposta. Un agente di solito fa molto di più.
Può leggere file, chiamare strumenti, ispezionare log, recuperare documenti, scrivere codice e ripetere questo processo più volte prima di finire.
Ogni passaggio aggiunge informazioni al contesto, e gran parte di quel contesto può essere rinviato al modello nelle chiamate successive.
Un ciclo agente semplificato è così:

La richiesta va al modello, il modello chiama uno strumento, lo strumento restituisce output e quell’output viene reintrodotto nel contesto prima del passo successivo. La freccia di feedback è dove sta il costo: ogni passaggio si porta dietro i risultati precedenti, quindi un’attività che richiede sei chiamate a strumenti invia gran parte di quella cronologia al modello sei volte.
Questo crea alcune fonti comuni di spreco di token:
- Risposte verbose: l’agente spiega troppo quando basterebbe una risposta breve.
- Codice sovra‑ingegnerizzato: un compito piccolo si trasforma in file extra, astrazioni e dipendenze.
- Output degli strumenti molto grandi: log, test, diff Git e comandi del terminale possono restituire migliaia di token.
- Troppo contesto: documenti recuperati, definizioni di tool e risultati precedenti riempiono rapidamente la finestra di contesto.
- Sessioni lunghe: più a lungo lavora l’agente, più cronologia e risultati intermedi deve portarsi dietro.
Quindi la vera sfida non è solo quanti token un agente genera, ma quanti ne legge, trasporta e rielabora man mano che il workflow procede.
Ed è proprio ciò che strumenti come Caveman, Ponytail, RTK e Context Mode mirano a ridurre, ognuno puntando a una fonte diversa di spreco di token.
1. Caveman: fai dire meno al tuo agente
Caveman è un modo semplice per rendere più concise le risposte dei coding agent.
Invece di lasciare che l’agente narri ogni passo, ripeta dettagli ovvi o aggiunga riempitivi inutili, orienta le risposte verso le informazioni che contano davvero.

È particolarmente utile per sessioni di coding lunghe, in cui le risposte verbose fanno più che aumentare i token in output.
Quelle risposte possono anche entrare nella cronologia della conversazione e venire riportate nei turni successivi.
Come funziona Caveman
Caveman ha due parti separate.
La skill di Caveman cambia il modo in cui l’agente scrive.
Rimuove riempitivi, convenevoli, cautele inutili e narrazione superflua, lasciando intatti dettagli importanti come blocchi di codice, comandi, nomi di API ed errori esatti.
Allenta anche lo stile telegrafico quando serve chiarezza, ad esempio per avvisi di sicurezza o azioni irreversibili.
C’è anche un proxy locale opzionale che affronta l’altro lato del problema: ciò che l’agente legge.
Si colloca tra il coding agent e il provider del modello e comprime il contesto idoneo prima che la richiesta venga inviata.
Skill e proxy funzionano in modo indipendente, quindi puoi iniziare con la skill leggera e aggiungere il proxy dopo se ti serve una riduzione del contesto più aggressiva.
Un modo semplice per pensarci è spiegato nel diagramma qui sotto:

A sinistra, l’agente incarta il codice in un preambolo e poi spiega di nuovo lo stesso codice dopo. A destra, ottieni la risposta utile e il codice, e nient’altro. Stesso lavoro, molti meno token spesi a narrarlo.
Primi passi con Caveman
Il modo più semplice per installare la skill è:
npx skills add JuliusBrussee/caveman
Poi attivala dentro il tuo coding agent con:
/caveman

Puoi tornare alle risposte normali con:
/caveman off
Caveman offre anche opzioni di installazione native per strumenti come Claude Code, Codex, Gemini CLI, Cursor e OpenCode.
Se vuoi anche ridurre il contesto inviato al modello, installa la CLI:
npm install -g @caveman-ai/cli
caveman setup --install
Poi avvia un agente supportato attraverso di essa, per esempio:
caveman claude
Questo avvia il proxy locale di Caveman e instrada l’agente attraverso il suo livello di compressione del contesto.
Per la maggior parte degli utenti, inizierei prima con la skill.
È facile da aggiungere, non cambia il tuo normale workflow di coding e affronta direttamente una delle fonti più semplici di spreco di token: un agente che parla molto più del necessario.
2. Ponytail: impedisci al tuo agente di sovra‑ingegnerizzare
Ponytail è pensato per un altro tipo di spreco di token: i coding agent che scrivono più codice di quanto serva davvero al compito.

Una richiesta semplice a volte si trasforma in nuove dipendenze, classi helper, componenti wrapper e configurazioni extra.
Ponytail cerca di impedirlo spingendo l’agente verso la soluzione sensata più piccola possibile per prima.
Come funziona Ponytail
Prima di scrivere codice, Ponytail fa lavorare l’agente attraverso una semplice scala di decisioni:

Ogni piolo offre all’agente la possibilità di fermarsi prima di scrivere qualcosa di nuovo. Arriva solo all’ultimo gradino, scrivendo il minimo codice funzionante, dopo che la libreria standard, le funzionalità native della piattaforma e le dipendenze esistenti sono state tutte escluse.
Per esempio, invece di installare una libreria di date‑picker e costruire un componente wrapper, Ponytail può decidere che il browser ha già:
<input type="date">
L’obiettivo non è accorciare tutto alla cieca.
Ponytail tiene esplicitamente fuori dal taglio aspetti come validazione, sicurezza, accessibilità e protezione dalla perdita di dati.
Vuole essere pigro sull’implementazione, non negligente sulla correttezza.
Nel benchmark agentico di Ponytail, ha prodotto circa il 54% di codice in meno e il 22% di token in meno su 12 attività di coding rispetto allo stesso agente senza la skill.
Un benchmark indipendente ha riscontrato implementazioni sostanzialmente più piccole, pur notando che impostazioni aggressive a volte possono sacrificare robustezza su edge case non dichiarati.
Primi passi con Ponytail
Per Claude Code, aggiungi il marketplace:
/plugin marketplace add DietrichGebert/ponytail
Poi installa Ponytail:
/plugin install ponytail@ponytail
Inviale come due comandi separati.
Una volta installato, puoi controllare quanto aggressivamente Ponytail semplifica le cose:
/ponytail lite
/ponytail full
/ponytail ultra
/ponytail off
full è il default ed è probabilmente il punto migliore da cui cominciare. lite costruisce comunque ciò che chiedi, ma segnala alternative più semplici, mentre ultra applica YAGNI in modo molto più aggressivo.
Puoi anche rivedere una modifica esistente per complessità non necessaria:
/ponytail-review
Oppure scansionare un codebase più ampio:
/ponytail-audit

Ponytail funziona particolarmente bene per i coding agent perché ridurre il codice inutile ha un effetto a cascata: l’agente scrive meno token ora, crea diff più piccoli e lascia a se stesso meno codice da rileggere più avanti.
3. RTK: riduci l’output rumoroso degli strumenti
RTK, acronimo di Rust Token Killer, si concentra su un’altra fonte di spreco di token: tutto ciò che il tuo coding agent riceve dal terminale.

Comandi come git status, esecuzioni di test, log, ricerche e output dei package manager possono restituire centinaia o migliaia di righe.
Gran parte di queste informazioni è utile a un umano davanti al terminale, ma a un agente spesso servono solo le parti importanti.
RTK si mette tra comando e agente e comprime l’output prima che il modello lo veda.
Come funziona RTK
RTK usa filtri specifici per comando, raggruppamento, troncamento e deduplicazione per rimuovere il rumore mantenendo informazioni utili come errori, failure, file modificati e riepiloghi.
Per esempio:

Nel flusso normale, l’agente esegue pytest e legge ogni riga stampata, per lo più test passati che non ha bisogno di vedere. Con RTK in mezzo, la stessa esecuzione torna come failure più un riepilogo, così l’agente legge poche decine di righe invece di diverse centinaia.
Con i coding agent supportati, RTK può collegarsi automaticamente alle chiamate alla shell. Un comando come:
git status
può essere riscritto dietro le quinte in:
rtk git status
L’agente riceve così l’output più piccolo senza dover chiedere esplicitamente RTK ogni volta.
RTK riporta circa il 60–90% di token in meno sull’output dei comandi per i comandi di sviluppo comuni. Questo non significa che la tua spesa LLM totale scende del 60–90%; si riferisce solo all’output del terminale che RTK comprime.
Primi passi con RTK
Su macOS o Linux, puoi installarlo con Homebrew:
brew install rtk-ai/tap/rtk
Oppure usare lo script di installazione:
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh
Poi verifica di aver installato l’RTK corretto:
rtk --versionrtk gain
Il comando rtk gain mostra la dashboard dei risparmi di token. Questo controllo è utile perché un altro progetto non correlato usa anch’esso il nome rtk.
Per Claude Code, inizializza RTK globalmente con:
rtk init -g
Per Codex:
rtk init -g --codex
E per Gemini CLI:
rtk init -g --gemini
RTK supporta anche Cursor, OpenCode, Copilot, Cline, Windsurf e diversi altri coding agent.

Una volta configurato, puoi continuare a usare i tuoi normali comandi del terminale.
RTK gestisce la compressione in background, il che lo rende particolarmente utile per agenti che passano molto tempo a eseguire test, cercare nel codice, ispezionare cambiamenti Git e leggere log.
4. Context Mode: tieni fuori contesti grandi dall’LLM
Context Mode si concentra su ciò che succede dopo che un agente inizia a usare strumenti.

Uno snapshot del browser, una lista di issue su GitHub, una ricerca file o l’output di un comando grande possono riversare una quantità enorme di informazioni direttamente nella finestra di contesto.
Peggio ancora, tali informazioni possono poi venire trasportate nei turni successivi.
Context Mode cerca di evitarlo mantenendo i dati grezzi ingombranti fuori dal contesto LLM attivo e riportando solo le parti che l’agente realmente necessita.
Come funziona Context Mode
Context Mode gira come server MCP e fornisce strumenti in sandbox per operazioni che normalmente genererebbero output molto grandi.

Le informazioni grezze possono essere archiviate localmente in un indice di ricerca con FTS5, così l’agente può ricercarle di nuovo più tardi senza riversare l’intero risultato nella conversazione.
In un esempio del progetto, 315 KB di output grezzo dello strumento sono stati ridotti a 5,4 KB di contesto, che riporta come una riduzione del 98%.
Questo è un esempio del carico di lavoro del progetto, non una garanzia per ogni chiamata di tool.
Primi passi con Context Mode
Per Claude Code, l’impostazione più semplice è tramite il marketplace dei plugin:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
Riavvia Claude Code, poi verifica la configurazione con:
/context-mode:ctx-doctor

Il doctor controlla che plugin, hook, runtime e componenti di ricerca locale funzionino correttamente.
Puoi anche installare Context Mode globalmente:
npm install -g context-mode
e registrarlo come server MCP in client supportati come Cursor, Gemini CLI, GitHub Copilot CLI, JetBrains e altri.
Una volta in esecuzione, puoi ispezionare quanto contesto stia risparmiando con i suoi strumenti di statistiche.
Context Mode è più utile per agenti a lunga esecuzione e ricchi di tool, in cui risultati del browser, log, letture di file, risposte MCP e altri dati intermedi altrimenti continuerebbero a riempire la finestra di contesto.
Confronto dei quattro strumenti per risparmiare token
Questi quattro strumenti colpiscono parti diverse del workflow del coding agent, da ciò che l’agente scrive a quanto output degli strumenti porta in contesto.
|
Strumento |
Problema principale |
Cosa riduce |
Ideale per |
Risultato riportato dal progetto |
|
Caveman |
Risposte verbose dell’agente |
Output dell’agente e, con il proxy opzionale, contesto di input ripetuto |
Coding agent che parlano troppo |
Fino al 65% di token in output in meno nel suo benchmark della skill |
|
Ponytail |
Soluzioni sovra‑ingegnerizzate |
Codice, astrazioni e lavoro dell’agente non necessari |
Coding agent che generano più codice del necessario |
54% di codice in meno e 22% di token in meno nel suo benchmark |
|
RTK |
Output rumoroso del terminale |
Comandi shell, output Git, test, log e ricerche |
Workflow di coding agent pesanti su CLI |
60–90% di token in meno sull’output dei comandi supportati |
|
Context Mode |
Inquinamento del contesto |
Grandi output MCP e tool che entrano nel contesto attivo |
Coding agent a lunga esecuzione e ricchi di tool |
315 KB → 5,4 KB, ovvero 98% di contesto in meno, in un esempio documentato |
Il modo più semplice per pensare alla differenza è:
- Caveman riduce ciò che l’agente dice
- Ponytail riduce ciò che costruisce
- RTK riduce ciò che il terminale rimanda indietro
- Context Mode riduce quali risultati degli strumenti restano in contesto.
Puoi usare questi strumenti insieme?
Sì, ma non impilerei tutto fin dall’inizio.
Un approccio migliore è partire da Ponytail.
È semplice da aggiungere ai coding agent e, per molti workflow, ridurre il codice inutile è già sufficiente. Io lo uso con strumenti come Zcode, Claude Code e Codex, e sono soddisfatto della riduzione che ottengo.
Se vuoi andare oltre, prova Ponytail + Caveman. Ponytail riduce il codice inutile, mentre Caveman riduce le spiegazioni inutili, quindi si completano bene.

Se il tuo workflow produce ancora molto output pesante in termini di token da test, log, Git o comandi del terminale, prova Ponytail + Caveman + RTK.
Se RTK non si adatta al tuo workflow, soprattutto se usi molti strumenti MCP, tool browser, API o altri output di tool grandi, prova invece Ponytail + Caveman + Context Mode.
Non esiste una combinazione perfetta che funzioni per tutti.
L’obiettivo è sperimentare e trovare la configurazione che ti dà meno uso di token senza compromettere le prestazioni del tuo coding agent. Per alcuni, Ponytail da solo basterà. Per altri, funzionerà meglio combinare due o tre di questi strumenti.
Altri modi per ridurre uso di token e costi
Non serve sempre un altro strumento.
Claude Code include già diverse funzionalità che possono aiutarti a mantenere il contesto più piccolo e ridurre spese inutili.
Disattiva la memoria quando non ti serve
Claude Code può archiviare e ricaricare automaticamente memorie da sessioni precedenti. Per compiti brevi o isolati, questo può aggiungere contesto che non ti serve.
Esegui:
/memory
Da lì, puoi disattivare l’auto‑memoria o rimuovere informazioni che non sono più utili.
Compatta le sessioni lunghe
Man mano che una sessione cresce, Claude si porta dietro cronologia della conversazione, contenuti dei file e output degli strumenti. Claude Code compatta automaticamente, ma puoi anticiparlo:
/compact
Puoi anche dirgli cosa conta:
/compact keep the implementation plan and latest test results
Questo è particolarmente utile quando hai finito una parte di un compito ma vuoi continuare nella stessa sessione.
Riparti da zero quando il compito cambia
A volte compattare non vale la pena. Se stai passando a un compito completamente diverso, esegui:
/clear
Questo avvia un contesto di conversazione vuoto invece di portare avanti lavoro non correlato. Anthropic nota anche che ripartire da zero a volte è meglio che compattare ripetutamente una sessione lunga.
Disattiva i server MCP che non usi
Anche gli strumenti MCP consumano contesto. Claude Code ora rinvia per default gli schemi completi degli strumenti MCP, ma i server inutilizzati possono comunque aggiungere overhead.
Usa: /mcp per rivedere i server connessi e disattivare quelli che al momento non ti servono.
Puoi anche eseguire /context per vedere quanto spazio stanno consumando le diverse parti della sessione.
Tieni CLAUDE.md piccolo
CLAUDE.md viene caricato nel contesto di Claude, quindi evita di trasformarlo in un manuale gigante del progetto.
Mantieni solo le istruzioni di cui Claude ha davvero bisogno tra i compiti, come convenzioni importanti, comandi e regole del progetto.
Usa /context per controllare quanto spazio occupano memoria e file di istruzioni. Per istruzioni rilevanti solo per certe cartelle, Claude Code supporta regole più mirate invece di mettere tutto nel CLAUDE.md principale.
Usa un modello più economico per compiti semplici
Probabilmente non ti serve il modello più costoso per ogni modifica.
La documentazione di Claude Code consiglia Sonnet per la maggior parte dei compiti di coding e di riservare Opus a lavori più difficili di architettura o ragionamento.
Puoi cambiare con:
/model
Per sottocompiti semplici degli agenti secondari, puoi anche configurarli per usare Haiku.
Considerazioni finali
Una delle cose migliori di questi strumenti è quanto poco impegno richiedano una volta configurati.
A seconda dello strumento, potresti non dover ricordare un comando slash o attivarlo manualmente per ogni compito.
Ponytail può guidare l’agente verso implementazioni più semplici, Caveman può mantenere le risposte concise, RTK può comprimere l’output del terminale e Context Mode può impedire ai grandi risultati dei tool di inondare il contesto attivo.
Dopo la configurazione, gran parte di questa ottimizzazione avviene come parte del tuo normale workflow di coding.
Spesso puoi vederne l’effetto nel riepilogo di esecuzione dell’agente, nel codice generato, nell’output del terminale o nelle statistiche del contesto.
L’agente può svolgere lo stesso lavoro, ma con meno codice inutile, meno narrazione, risposte degli strumenti più piccole o meno informazioni portate da un passaggio al successivo.
La parte migliore è che puoi anche combinare questi strumenti.
Tuttavia, impilarli tutti e quattro non significa automaticamente ottenere l’uso di token più basso possibile. Mirano a parti diverse del workflow di coding agentico e il beneficio dipende molto dal tuo coding agent, dal modello, dal repository e dal tipo di compiti che esegui.
Consiglio di sperimentarli sul tuo stesso harness di coding. Inizia con uno strumento, misura la differenza, poi aggiungine un altro se vedi ancora fonti evidenti di spreco di token.
Potresti scoprire che un singolo strumento è sufficiente per il tuo workflow, mentre un’altra configurazione trae vantaggio da due o tre che lavorano insieme.
Personalmente, uso Ponytail nella maggior parte dei miei workflow di coding perché è semplice da configurare e il coding agent capisce rapidamente come lavorarci.
Lo uso soprattutto con Zcode di Z.ai, dove aiuta a mantenere le implementazioni focalizzate senza richiedermi di cambiare il modo in cui di solito faccio prompt all’agente.
In definitiva, ridurre l’uso di token non significa costringere un agente a fare meno lavoro utile. Significa rimuovere gli sprechi intorno a quel lavoro.
Prova Caveman, Ponytail, RTK e Context Mode singolarmente e in combinazioni diverse, misura cosa cambia nel tuo workflow e mantieni la configurazione che offre il miglior equilibrio tra uso di token, qualità del codice e prestazioni dell’agente.
Per saperne di più su come funzionano gli agenti AI, ti consiglio di dare un’occhiata alla skill track AI Agent Fundamentals.
FAQs
Cos’è la Prompt Caching e riduce i costi di token per i coding agent?
La Prompt Caching è una funzionalità nativa delle API (disponibile in modelli come Claude, Sonnet e Gemini Pro) che memorizza temporaneamente contesti usati spesso, come istruzioni di sistema, documentazione API e strutture dei repository. Invece di rielaborare l’intero codebase a ogni giro del loop agentico, il modello riusa il contesto in cache. Questo può ridurre i costi dei token in input fino al 90% e velocizzare sensibilmente i tempi di risposta nelle sessioni di sviluppo di lunga durata.
Perché i token di output sono significativamente più costosi di quelli di input?
Quando controlli i prezzi API per gli LLM, i token di output in genere costano da 3 a 5 volte più dei token di input. Leggere il contesto di input è altamente parallelizzato e computazionalmente più economico per il modello. Generare output, invece, è sequenziale: il modello deve eseguire un forward pass completo per prevedere e generare ogni singolo token. Gli strumenti che impediscono agli agenti di scrivere codice inutile o spiegazioni verbose riducono direttamente questa generazione di output ad alto costo.
In cosa differiscono i limiti di token degli abbonamenti fissi rispetto all’uso via API?
Gli abbonamenti AI per il coding a prezzo fisso (come Cursor Pro o GitHub Copilot) in genere concedono un pacchetto mensile di richieste a modelli "fast" o premium. Poiché i workflow agentici effettuano più cicli per ogni prompt utente per leggere file ed eseguire test, una singola tua richiesta può consumare 10–20 richieste dell’agente in background, esaurendo rapidamente il limite mensile. La fatturazione via API (Bring Your Own Key) rimuove questo tetto di richieste e addebita strettamente per token, rendendo essenziali gli strumenti di riduzione dei token per evitare costi imprevedibilmente elevati.
Il filtraggio dei log del terminale e del contesto degli strumenti può nascondere bug all’AI?
Può farlo se applicata troppo aggressivamente. Gli strumenti che troncano il rumore del terminale o limitano il contesto degli strumenti si basano su compressione con perdita. Se un agente sta investigando un bug annidato in profondità, un filtraggio pesante potrebbe eliminare proprio la riga dello stack trace, l’avviso di dipendenza nascosta o il codice di failure silenzioso di cui ha bisogno per diagnosticare la causa radice. Per mitigare, la compressione del contesto andrebbe applicata pesantemente su output notoriamente rumorosi (come le installazioni dei package manager) consentendo invece output grezzi per il debug diretto degli errori.

