Scarica AX Code · GratuitoDocumentazione

Questa pagina è tradotta dalla documentazione inglese. Comandi, identificatori ed esempi restano invariati. Runtime 7.24.4 · SDK 2.6.7. Testo inglese

Cache locale delle evidenze

Stato: memoria abilitata per impostazione predefinita; RocksDB su adesione esplicita Ambito: stato attuale Ultima revisione: 2026-09-13 Responsabile: runtime di ax-code

AX Code usa per impostazione predefinita una cache delle evidenze in memoria, delimitata, con persistenza RocksDB facoltativa accanto allo storage SQLite già esistente. SQLite conserva la cronologia completa delle sessioni e i registri di verifica. La cache contiene testo renderizzato usa e getta e simboli sintattici; non cambia i permessi e non conta come verifica fresca.

La modalità di memoria predefinita non apre un database RocksDB. Per aderire alla persistenza in un’installazione da sorgente, compila il supporto nativo e seleziona RocksDB in modo esplicito:

pnpm build:native fs
AX_CODE_EVIDENCE_CACHE=rocksdb pnpm run dev

AX_CODE_EVIDENCE_CACHE=memory seleziona in modo esplicito il riutilizzo predefinito, delimitato e nello stesso processo, senza storage persistente. In modalità RocksDB, un supporto nativo assente, un lock del database tenuto da un altro runtime o un fallimento della cache fanno tornare alla memoria con una diagnostica. Le build standard dell’addon per il filesystem includono RocksDB per l’adesione esplicita. Le build di rilascio verificano che l’addon impacchettato possa scrivere e riaprire la propria cache. Le operazioni native girano fuori dall’event loop di JavaScript.

Le letture di testo fino a 1 MiB validano i byte correnti della sorgente e riutilizzano l’intervallo renderizzato quando contenuto, percorso, intervallo e formato coincidono. I file più grandi, le letture esterne, le directory e gli allegati non entrano nella cache di lettura. Le istruzioni del repository e i timbri di lettura dei file restano vivi. L’estrazione sintattica può riutilizzare i simboli per sorgente e linguaggio identici; questi simboli non stabiliscono riferimenti semantici né chiamanti.

Con entrambe le modalità di cache, i risultati completi di lettura del testo già visibili nella richiesta corrente al modello usano un riferimento breve al primo risultato. Gli output completi originali degli strumenti restano nella cronologia della sessione. La compattazione ricostruisce la visibilità; una lettura successiva viene renderizzata per intero se la copia precedente è assente. Anche le viste ripetute e identiche byte per byte di lettura paginata, di grep e di glob possono fare riferimento alla prima vista completa restituita. Ogni riferimento conserva il piè di pagina di troncamento originale e la guida di continuazione; il contenuto di sorgente omesso resta non disponibile. I risultati che portano istruzioni, i media, gli errori, i risultati tagliati per riga e i risultati parziali non riconosciuti restano alla lettera. Questo cambia l’input del modello, non la cronologia canonica né l’esecuzione degli strumenti, e non stabilisce una riduzione della fatturazione del provider.

Gli hit della cache risparmiano rendering o parsing; non eliminano le letture di validazione della sorgente né le chiamate agli strumenti richieste dal modello. Per combinare la scoperta dipendente in meno andate e ritorno verso il modello, abilita in modo esplicito l’opzione già esistente experimental.read_only_recipes e usa read_recipe con selezioni delimitate. Usa code_intelligence con operation: "buildContext" per una panoramica strutturale delimitata. Nessuna delle due opzioni viene abilitata in automatico dalla cache.

Quando è selezionata, la cache persistente vive sotto la normale directory di cache di AX Code in evidence-v1, con un database separato per ogni directory di istanza del progetto. L’ammissione in RocksDB è limitata a 1024 voci e a 32 MiB di valori logici; l’uso fisico del disco include anche codifica, log e overhead di compattazione. Entrambe le modalità limitano il riutilizzo in memoria a 128 voci e a 4 MiB di valori serializzati per istanza di progetto e per processo; non è un limite di RAM totale del processo. Le voci in memoria vengono svuotate al rilascio dell’istanza e non sopravvivono all’uscita del processo. Le voci scadono dopo 24 ore e vengono validate alla ricerca. Lo sfratto per capacità può cancellare in blocco le voci native usa e getta. Nessun dato SQLite esistente viene migrato o ricostruito a ritroso.

Per disabilitare sia il riutilizzo dello storage sia la deduplicazione dell’input del modello, imposta AX_CODE_EVIDENCE_CACHE=off e riavvia AX Code. Un valore non impostato o vuoto usa la memoria; un valore non vuoto e non riconosciuto disabilita la cache. Riavvia i runtime esistenti per applicare il nuovo valore predefinito e rimuovi ogni override esplicito rocksdb per usare la memoria. I file di cache persistente già esistenti vengono conservati. Non serve un rollback di SQLite. Ferma i runtime prima di rimuovere a mano evidence-v1; non rimuovere i file di lock di RocksDB mentre un runtime sta usando la cache.

Per la qualifica nativa locale dopo aver compilato la funzionalità:

cd packages/ax-code
AX_TEST_EVIDENCE_NATIVE=1 AX_TEST_FILES=test/evidence/cache-native.test.ts,test/evidence/cache-eval.test.ts pnpm exec vitest run --retry 0

La valutazione su fixture fissa riporta a parte le letture richieste, gli hit di rendering, i byte di output omessi e il tempo trascorso. Non è un benchmark con modello in esecuzione né un’affermazione sulla fatturazione dei token del provider.

Quando segnali un problema, includi la versione di AX Code, sistema operativo e architettura, l’output di ax-code doctor, se off o memory cambiano il comportamento, e un compito riproducibile se disponibile. Doctor riporta la modalità richiesta e la capacità nativa; non può stabilire se un altro processo in esecuzione possieda la cache del progetto. Il fallback di lock o di I/O del progetto compare nel log di runtime. Nessun feedback né contenuto di sorgente in cache viene caricato in automatico. I binari pubblicati già esistenti acquisiscono questi valori predefiniti solo dopo l’installazione di un rilascio aggiornato.