
Recupero di identificatori JavaScript di nuova generazione con LLM.
Prova FlowName nel tuo browser → — inserisci il tuo JavaScript, la chiave API e il modello; nessuna installazione richiesta.
CLI: npx --yes --package=flowname@latest flowname input.js (imposta prima GEMINI_API_KEY).
FlowName è un Semantic Identifier Recoverer di nuova generazione per JavaScript offuscato. Utilizzando l'analisi statica basata su AST per raggruppare variabili logicamente correlate in richieste LLM con budget definito, FlowName elimina le allucinazioni da perdita di contesto comuni negli approcci ingenui basati su finestre di testo.
In un benchmark diretto contro un rinomato strumento basato su simboli (Humanify) su uno scope offuscato con 411 binding, FlowName ha ottenuto:
Esplora tutti i 411 confronti di nomi nel report HTML. Il confronto 155 vs 37 è un giudizio Jev automatizzato e non calibrato; questa esecuzione su un singolo programma non può stabilire un vantaggio generale nella qualità dei nomi. Vedi le note sul benchmark.
Imposta GEMINI_API_KEY (o FLOWNAME_API_KEY) nel tuo ambiente, poi esegui:
npx --yes --package=flowname@latest flowname input.js
La CLI scrive il codice recuperato in una nuova directory flowname-output-TIMESTAMP-ID/output.js. Aggiungi --report per osservare ogni richiesta e ogni nome proposto in un report HTML live. Nessun flag è richiesto per il modello Gemini predefinito; la CLI non carica automaticamente .env. Richiede Node.js 22.8+.
Per il browser, apri il playground, incolla il JavaScript, fornisci la tua chiave API e avvia il recupero. Le richieste vanno direttamente dal tuo browser al provider selezionato; Stop interrompe l'esecuzione.
FlowName assegna nomi agli identificatori; non decomprime bundle né annulla l'offuscamento strutturale. Usa webcrack per i pattern di offuscamento supportati o Wakaru per i bundle supportati, poi passa il JavaScript risultante a FlowName. Risolve i binding lessicali, usa relazioni leggere e il fallback sullo stesso scope per raggruppare gli obiettivi, e chiede all'LLM diversi nomi per richiesta. Vedi come funziona il raggruppamento.
npm install flowname
import { readFile } from 'node:fs/promises';
import { recoverNames, createProvider } from 'flowname';
const sourceCode = await readFile('./input.js', 'utf8');
const provider = createProvider({
provider: 'gemini',
model: 'gemini-3.5-flash-lite',
apiKey: process.env.GEMINI_API_KEY,
});
const result = await recoverNames(sourceCode, { provider });
console.log(result.code);
Vedi la guida all'uso per le opzioni, i report della CLI e un esempio completo di libreria. L'indice della documentazione copre l'approccio, l'architettura, i limiti, i lavori precedenti e il confronto con Humanify.
Concesso in licenza sotto MIT. Vedi le note di rilascio.