Titolo originale: "Comprendere il codice sorgente di Claude Code di Anthropic in un articolo: perché è semplicemente migliore degli altri?"
Autore originale: Yuker, ricercatore AI
Il 31 marzo 2026, il ricercatore di sicurezza Chaofan Shou ha scoperto che nella release npm di Anthropic del pacchetto Claude Code, il file source map non era stato rimosso.
Ciò significa che l'intero codice sorgente TypeScript di Claude Code, 512.000 righe, 1903 file, è stato esposto su internet.
Ovviamente, non avrei mai potuto leggere così tanto codice in poche ore, quindi ho approcciato questo codice sorgente con tre domande:
1. Qual è la differenza fondamentale tra Claude Code e altri strumenti di programmazione AI?
2. Perché la sua scrittura di codice "sembra" migliore delle altre?
3. Cosa si nasconde esattamente in 510.000 righe di codice?
Dopo averlo letto, la mia reazione iniziale è stata: questo non è solo un assistente alla programmazione AI; questo è un sistema operativo.
Immagina di aver assunto un programmatore remoto e di avergli dato accesso remoto al tuo computer.
Come lo gestiresti?
Se fossi Cursor: lo faresti sedere accanto a te e ogni volta che deve digitare un comando, daresti un'occhiata e cliccheresti su "consenti". È semplice, ma devi tenerlo d'occhio in ogni momento.
Se fossi un GitHub Copilot Agent: gli daresti una macchina virtuale nuova di zecca in cui lavorare. Dopo aver finito, invia il codice, tu lo revisioni, poi lo unisci. È sicuro, ma non può vedere il tuo ambiente locale.
Se fossi Claude Code:
Gli permetteresti di usare direttamente il tuo computer, ma lo avresti dotato di un sistema di sicurezza estremamente sofisticato. Cosa può fare, cosa non può fare, quali azioni richiedono la tua approvazione, quali può fare da solo, e anche se volesse usare rm -rf, deve passare attraverso 9 livelli di revisione prima dell'esecuzione.
Ecco tre filosofie di sicurezza completamente diverse:

Perché did Anthropic ha scelto la strada più difficile?
Perché solo in questo modo l'AI può lavorare con il tuo terminale, il tuo ambiente, la tua configurazione: questo è ciò che significa "aiutarti davvero a programmare", invece di "scrivere un pezzo di codice in un ambiente isolato e poi copiarlo".
Ma qual è il costo? Hanno scritto 510.000 righe di codice per questo.
La maggior parte delle persone pensa che gli strumenti di programmazione AI funzionino così:
Input utente → Chiama LLM API → Ottieni risultato → Mostra all'utente
Il vero Claude Code funziona così:
Input utente
→ Assembla dinamicamente 7 livelli di prompt di sistema
→ Inietta lo stato Git, le convenzioni del progetto, la memoria storica
→ 42 strumenti, ognuno con un manuale
→ L'LLM decide quale strumento usare
→ 9 livelli di revisione di sicurezza (parsing AST, classificatori ML, controlli sandbox...)
→ Risoluzione dei conflitti di autorizzazione (tastiera locale/IDE/hook/classificatore AI che corrono simultaneamente)
→ Ritardo anti-affaticamento di 200ms
→ Esegui strumento
→ Restituisci i risultati in streaming
→ Il contesto si avvicina al limite? → Compressione a tre stadi (micro-compressione → auto-compressione → compressione completa)
→ Serve parallelismo? → Genera uno sciame di sub-agenti
→ Ciclo fino al completamento dell'attività
Credo che tutti siano molto curiosi riguardo a quanto sopra, ma non preoccupatevi, analizziamoli uno per uno.
Apri src/constants/prompts.ts e vedrai questa funzione:

Noti quel SYSTEM_PROMPT_DYNAMIC_BOUNDARY?
Questo è un delimitatore di cache. Il contenuto sopra il delimitatore è statico e può essere memorizzato nella cache dall'API Claude per risparmiare sui costi dei token. Il contenuto sotto il delimitatore è dinamico: il tuo attuale branch Git, la configurazione del progetto CLAUDE.md, le tue preferenze memorizzate in precedenza... ogni interazione è unica.
Cosa significa questo?
Anthropic tratta le parole chiave come output del compilatore per ottimizzare. La parte statica è il "binario compilato" e la parte dinamica sono i "parametri di runtime". I vantaggi di questo approccio sono:
1. Risparmio sui costi: la parte statica viene memorizzata nella cache, evitando addebiti ridondanti
2. Velocità: i cache hit saltano direttamente l'elaborazione di quei token
3. Flessibilità: la parte dinamica consente a ogni interazione di essere consapevole dell'ambiente attuale
Ogni strumento ha il suo "Manuale utente"
Ciò che è ancora più sorprendente è che ogni directory di strumenti contiene un file prompt.ts: questo è un manuale utente appositamente studiato per l'LLM.
Guarda il BashTool (src/tools/BashTool/prompt.ts, circa 370 righe):

Questo non è un documento per umani, è un codice di condotta per il comportamento dell'AI. Ogni volta che Claude Code si avvia, queste regole vengono iniettate nei prompt di sistema.
Ecco perché Claude Code non esegue mai forzatamente git push --force da solo, mentre alcuni strumenti potrebbero farlo: non è che il modello sia più intelligente, è che i suggerimenti hanno già chiarito le regole.
Inoltre, la versione interna di Anthropic è diversa da quella che stai usando
Il codice ha numerosi rami come questo:

ant si riferisce al personale interno di Anthropic. La loro versione ha linee guida sullo stile del codice più dettagliate ("Non scrivere commenti a meno che il PERCHÉ non sia ovvio"), una strategia di output più aggressiva ("Scrittura a piramide invertita") e alcune funzionalità sperimentali ancora in test A/B (Verification Agent, Explore & Plan Agent).
Questo illustra che Anthropic è il più grande utente di Claude Code. Stanno usando il proprio prodotto per sviluppare il proprio prodotto.
Apri src/tools.ts e vedrai il registro degli strumenti:

42 strumenti, ma la maggior parte non li hai mai visti direttamente. Questo perché molti strumenti vengono caricati in modo pigro: solo quando l'LLM ne ha bisogno, vengono iniettati su richiesta tramite ToolSearchTool.
Perché viene fatto questo?
Perché per ogni strumento aggiuntivo, il prompt di sistema necessita di una descrizione aggiuntiva e il token deve spendere più denaro. Se vuoi solo che Claude Code ti aiuti a cambiare una riga di codice, non ha bisogno di caricare il 'Cron Task Scheduler' e il 'Team Collaboration Manager'.
C'è un design ancora più intelligente:

Imposta CLAUDE_CODE_SIMPLE=true e a Claude Code rimarranno solo tre strumenti: Bash, Read File, Modify File. Questa è una backdoor per i minimalisti.

Presta attenzione a quei valori predefiniti: isConcurrencySafe è impostato su false per impostazione predefinita, isReadOnly è impostato su false per impostazione predefinita.
Questo è chiamato design fail-closed: se l'autore di uno strumento dimentica di dichiarare gli attributi di sicurezza, il sistema presumerà che sia 'non sicuro e scrivibile'. È meglio essere eccessivamente cauti che perdere un singolo rischio.

Il FileEditTool verificherà se hai già letto questo file usando il FileReadTool. In caso contrario, lancerà direttamente un errore e non consentirà la modifica.
Ecco perché Claude Code non "scriverà magicamente un frammento di codice per sovrascrivere il tuo file" come alcuni strumenti: **è tenuto a comprendere prima di modificare**.
Chiunque abbia usato Claude Code ha una sensazione: sembra conoscerti davvero.
Gli dici "non simulare il database nei test" e non simulerà nella prossima interazione. Gli dici "sono un ingegnere backend, principiante di React" e spiegherà il codice front-end usando analogie di backend.
Dietro questo c'è un sistema di memoria completo.

Claude Code usa un'altra AI (Claude Sonnet) per determinare "quali ricordi sono rilevanti per la conversazione attuale"
Non corrispondenza di parole chiave, non ricerca vettoriale: lascia che un piccolo modello scansioni rapidamente tutti i titoli e le descrizioni dei file di memoria, selezionando fino ai 5 più rilevanti, quindi iniettando il loro contenuto completo nel contesto della conversazione attuale.
La strategia è "precisione rispetto al richiamo": meglio perdere un ricordo potenzialmente utile che iniettarne uno irrilevante che inquina il contesto.
Modalità KAIROS: "Sognare" notturno
Questa è la parte più fantascientifica per me.
C'è un flag di funzionalità nel codice chiamato KAIROS. In questa modalità, i ricordi di lunghe conversazioni non vengono archiviati in file strutturati ma in voci simili a log con data aggiunta. Quindi, c'è una skill /dream che viene eseguita durante la "notte" (bassa attività) distillando questi log grezzi in file tematici strutturati.

L'AI organizza i ricordi mentre "dorme". Questa non è più ingegneria; è bionica.
Quando fai eseguire a Claude Code un'attività complessa, potrebbe fare silenziosamente questo:

Genera un sub-agente.
E il sub-agente ha una rigorosa iniezione di "autoconsapevolezza" per impedirgli di generare ricorsivamente più sub-agenti:

Questo pezzo di codice dice: "Sei un lavoratore, non un manager. Non pensare ad assumere più persone, fai il lavoro da solo."
Coordinator Pattern: Manager Pattern
Nel coordinator pattern, Claude Code diventa un puro orchestratore di attività, non facendo il lavoro da solo, ma delegando:

Principi fondamentali scritti nei commenti del codice:
"Il parallelismo è il tuo superpotere" per attività di ricerca di sola lettura: esegui in parallelo. Per attività di scrittura file: esegui in serie per gruppo di file (evitando conflitti).
Ottimizzazione del Prompt Cache all'estremo
Per massimizzare il tasso di hit della cache dei sub-agenti, tutti i risultati delle utility dei sub-agenti forked usano lo stesso testo segnaposto:
"Fork avviato: elaborazione in background"
Perché? Perché la cache dei prompt dell'API di Claude si basa sulla corrispondenza del prefisso a livello di byte. Se i byte del prefisso di 10 sub-agenti sono identici, allora solo il primo ha bisogno di un "cold start", i restanti 9 colpiscono direttamente la cache.
Questa è un'ottimizzazione che fa risparmiare pochi centesimi per chiamata, ma su larga scala può far risparmiare una quantità significativa di costi.
Tutti gli LLM hanno un limite della finestra di contesto. Più lunga è la conversazione, più messaggi storici ci sono, alla fine supererà il limite.
Claude Code ha progettato una compressione a triplo strato per questo:

La micro-compression tocca solo i risultati delle vecchie chiamate agli strumenti, sostituendo "Contenuto del file da 500 righe letto 10 minuti fa" con [Contenuto del vecchio risultato dello strumento cancellato].
Le parole del prompt e il thread del dialogo sono completamente conservati.
Quando il consumo di token si avvicina all'87% della finestra di contesto (dimensione finestra - 13.000 buffer), viene attivata automaticamente. C'è un interruttore di circuito: interrompi i tentativi dopo 3 fallimenti consecutivi di compressione per evitare un ciclo.
Fai generare all'AI un riassunto dell'intera conversazione e poi sostituisci tutti i messaggi storici con il riassunto. C'è un precetto rigoroso durante la generazione del riassunto:

Perché così rigoroso? Perché se l'AI effettuasse ulteriori chiamate agli strumenti durante il processo di riassunto, comporterebbe un maggiore consumo di token, controproducente. Questo prompt dice essenzialmente: "Il tuo compito è riassumere, non fare nient'altro."
Budget di token compressi:
· Recupero file: 50.000 token
· Limite per file: 5.000 token
· Contenuto delle skill: 25.000 token
Questi numeri non sono arbitrari: rappresentano un punto di equilibrio tra "mantenere abbastanza contesto per continuare a lavorare" e "liberare abbastanza spazio per ricevere nuovi messaggi."
All'interno di 510.000 righe di codice, la parte che chiama effettivamente l'API LLM è probabilmente inferiore al 5%. E il restante 95%?
· Controlli di sicurezza (18 file solo per un singolo BashTool)
· Sistema di autorizzazione (decisione quadratica consenti/nega/chiedi/pass-through)
· Gestione del contesto (compressione a tre strati + recupero memoria AI)
· Recupero errori (interruttore di circuito, backoff esponenziale, persistenza della trascrizione)
· Coordinamento multi-agente (orchestrazione dello sciame + comunicazione via mailbox)
· Interazione UI (140 componenti React + bridge IDE)
· Ottimizzazione delle prestazioni (stabilità della cache dei prompt + prefetch parallelo all'avvio)
Se stai costruendo un prodotto AI Agent, questi sono i veri problemi che devi risolvere. Non riguarda quanto sia intelligente il tuo modello; riguarda quanto sia robusta la tua impalcatura.
Non si tratta solo di creare un bel prompt. I prompt di Claude Code includono:
· Assemblaggio dinamico a 7 livelli
· Ogni strumento viene fornito con un manuale utente autonomo
· I confini della cache sono delineati con precisione
· Le versioni interne ed esterne hanno set di istruzioni diversi
· L'ordine degli strumenti è fisso per mantenere la stabilità della cache
Questa è una gestione ingegnerizzata dei prompt, non artigianato.
Ogni dipendenza esterna ha una politica di fallimento corrispondente:

42 strumenti = Sistema di autorizzazione delle chiamate di sistema = Sistema di skill di gestione delle autorizzazioni utente = Protocollo MCP dell'App Store = Sciame di agenti driver di dispositivo = Gestione dei processi Compressione del contesto = Gestione della memoria Persistenza della trascrizione = File System
Questo non è un "chatbot più alcuni strumenti"; questo è un sistema operativo con l'LLM al centro.
510.000 righe di codice. 1903 file. 18 file sicuri solo per un singolo strumento Bash.
9 livelli di controllo solo per far sì che l'AI ti aiuti a digitare un comando in sicurezza.
Questa è la risposta di Anthropic: per rendere l'AI davvero utile, non puoi chiuderla in una gabbia o lasciarla correre libera. Devi costruire un framework di fiducia completo attorno ad essa.
E il costo di questo sistema di fiducia è di 510.000 righe di codice.
Questo contenuto è fornito a solo scopo informativo generale e non costituisce consulenza finanziaria, di investimento, legale o fiscale. Qualsiasi evento, ricompensa, promozione online o informazione correlata menzionata nel presente documento non deve essere considerata una raccomandazione, una sollecitazione o un invito ad acquistare, vendere, fare trading o altrimenti negoziare criptovalute. Le criptovalute sono altamente volatili e possono comportare perdite. La disponibilità dei servizi, dei prodotti e degli eventi correlati di WEEX può variare a seconda della regione. È tua responsabilità assicurarti che la tua partecipazione sia conforme alle leggi e ai regolamenti locali applicabili.





























