Come fermare le frasi ricorrenti di Claude (e perché conta)
Cos’è successo. Johanna Larsson ha pubblicato uno script che intercetta l’output di Claude Desktop e sostituisce le frasi ricorrenti (“load-bearing”, “honest take”, “you’re absolutely right”) con varianti a scelta. Il meccanismo usa il hook MessageDisplay di Claude Desktop: uno script Python in ~/.claude/hooks/ che legge ogni delta di testo e lo riscrive prima che arrivi a schermo. La configurazione va in ~/.claude/settings.json. Il post ha raccolto 378 punti e 429 commenti su Hacker News.
Perché ti riguarda. Se usi Claude in conversazioni lunghe, riconosci il problema: certe formule ritornano decine di volte, e dopo un po’ distraggono. Il metodo funziona per neutralizzare il sintomo, ma dice qualcosa di più grande: il tono di un modello è una scelta di design, non un fatto naturale. I tic linguistici che vedi sono il risultato del post-training (come raccontavamo nel paper su Constitutional AI), e chi li trova insopportabili può correggerli in locale invece di aspettare che Anthropic li lima. Sul fronte pratico, il hook è interessante per un altro uso: processare l’output prima che arrivi all’utente — per esempio aggiungere timestamp, tradurre al volo, o archiviare una copia.
Se vuoi provarci. Lo script originale è su jola.dev/posts/how-to-stop-claude-from-saying-load-bearing. Copia il Python in ~/.claude/hooks/wordswap.sh, rendilo eseguibile (chmod +x), e aggiungi il blocco JSON in ~/.claude/settings.json. Funziona su macOS, Linux e Windows (con WSL o Git Bash). Lo script qui sopra non sostituisce frasi dentro codice o JSON: le sostituzioni vanno su testo naturale.
Nel dettaglio
Da dove viene il problema
I modelli linguistici imparano a scrivere osservando miliardi di testi, e poi ricevono un secondo addestramento (il RLHF o Constitutional AI) che li spinge a preferire certi toni. Claude è stato addestrato a essere cortese, riflessivo e cauto, e quelle caratteristiche si manifestano in formule linguistiche ricorrenti. “Load-bearing” è un termine tecnico che Claude usa in contesti generici per dire “importante”; “honest take” è un modo di marcare una dichiarazione personale; “you’re absolutely right” è un segnale di accordo che può suonare sovrabbondante. Nessuno di questi è un errore, ma la frequenza li trasforma in rumore.
Il post-training non elimina i tic: li sposta. Anthropic potrebbe ridurre la frequenza di alcune frasi aggiornando i pesi o il system prompt, ma ogni intervento ha trade-off (meno “load-bearing” potrebbe significare meno accuratezza in architetture software, per dire). Il problema è studiato: il paper sulla sycophancy mostra che i modelli addestrati a essere d’accordo sviluppano pattern linguistici che li tradiscono.
Come funziona l’hook
Claude Desktop supporta hook di estensione: script esterni che leggono e trasformano il contenuto prima che arrivi all’interfaccia. Il tipo MessageDisplay cattura ogni “delta” di testo (Claude genera in streaming) e permette di sostituirlo con altro. Lo script di Larsson è un filtro regex che cerca le frasi chiave e le sostituisce con alternative definite in un dizionario Python. Il JSON restituito contiene hookSpecificOutput.displayContent, che Claude Desktop usa al posto del testo originale.
Il meccanismo non tocca la risposta del modello: la cache e il context window continuano a vedere il testo originale. La sostituzione avviene solo nella visualizzazione, quindi se copi l’output o lo riusi in un prompt, ottieni la versione modificata. Questo è un limite per alcuni flussi (per esempio se archivi le conversazioni) e un vantaggio per altri (il modello continua a comportarsi come è stato addestrato, tu vedi solo una traduzione superficiale).
Cosa dice la discussione su Hacker News
I 429 commenti si dividono in tre fronti:
- Chi lo vede come workaround necessario: utenti che usano Claude per sessioni lunghe (refactoring, analisi tecnica) e trovano le formule ripetute fastidiose al punto da preferire un filtro invece di cambiare modello.
- Chi preferisce correggere a monte: suggeriscono che Anthropic dovrebbe offrire un controllo di tono nei settings, invece di costringere gli utenti a scrivere script.
- Chi difende il tono originale: trovano che le frasi ricorrenti siano innocue e che la percezione di fastidio sia soggettiva. Alcuni citano il fenomeno della “frequency illusion” (inizi a notare una cosa e poi la vedi ovunque).
La discussione tocca anche un tema più ampio: la voce di un modello è modificabile dall’utente finale? In un sistema chiuso la risposta è no, ma un hook locale come questo apre una via intermedia. Non cambia il modello, ma cambia l’esperienza, e per molti è sufficiente.
Implicazioni pratiche
Il metodo vale anche oltre il caso specifico. Un hook MessageDisplay può:
- Tradurre al volo l’output in un’altra lingua, utile per team multilingua che lavorano sulla stessa sessione.
- Aggiungere metadati a ogni risposta (timestamp, ID di sessione) per audit o archiviazione.
- Filtrare contenuti sensibili prima della visualizzazione, per esempio nascondendo chiavi API o informazioni personali che il modello ha riportato per errore.
Il hook non è documentato in modo esteso nella guida ufficiale di Claude Desktop, e non ci sono garanzie di stabilità fra versioni: Anthropic potrebbe cambiare o rimuovere l’interfaccia senza preavviso. Chi lo usa per casi di produzione dovrebbe monitorare gli aggiornamenti.
Quanto conta davvero
Il fatto che uno script così semplice abbia generato quasi 400 upvote dice due cose. Primo: le persone che usano Claude intensamente hanno opinioni forti sul suo tono, e non tutte sono positive. Secondo: esiste domanda per strumenti che modificano l’esperienza utente sui modelli proprietari senza aspettare che il vendor cambi direzione.
Ma il problema di fondo resta: se un modello ha bisogno di un filtro per essere sopportabile in sessioni lunghe, forse il post-training ha ottimizzato per la conversazione breve e ha trascurato la resistenza nel tempo. Gli utenti segnalano pattern simili su altri modelli (GPT ha i suoi tic, Gemini anche), quindi non è una debolezza unica di Claude. È una caratteristica dei modelli addestrati a suonare umani: tendono a convergere su formule che funzionano mediamente bene, e quelle formule diventano visibili quando ne generi migliaia di righe.
Se vuoi evitare il problema senza scrivere hook, una strada è chiedere esplicitamente un tono diverso nel system prompt o nel primo messaggio: “Rispondi in modo diretto, senza formule di cortesia o marcatori di accordo.” Funziona, ma va ripetuto a ogni nuova sessione, e l’effetto si degrada nei thread lunghi. L’hook è più stabile perché opera dopo che il modello ha già generato, quindi non dipende da quanto bene il modello segue le tue istruzioni iniziali.