
Récupération d'identifiants JavaScript de nouvelle génération avec les LLMs.
Essayez FlowName dans votre navigateur → — saisissez votre JavaScript, votre clé API et votre modèle ; aucune installation requise.
CLI : npx --yes --package=flowname@latest flowname input.js (définissez d'abord GEMINI_API_KEY).
FlowName est un récupérateur d'identifiants sémantiques de nouvelle génération pour JavaScript obfusqué. En utilisant une analyse statique basée sur l'AST pour regrouper les variables logiquement liées en requêtes LLM budgétisées, FlowName élimine les hallucinations dues à la perte de contexte courantes dans les approches naïves par fenêtres de texte.
Lors d'un benchmark direct face à un outil de référence basé sur les symboles (Humanify) sur une portée obfusquée de 411 liaisons, FlowName a obtenu :
Explorez les 411 comparaisons de noms dans le rapport HTML. La comparaison 155 contre 37 est un jugement Jev automatisé et non calibré ; cette exécution sur un seul programme ne peut pas établir un avantage général en qualité de nommage. Voir les notes de benchmark.
Définissez GEMINI_API_KEY (ou FLOWNAME_API_KEY) dans votre environnement, puis exécutez :
npx --yes --package=flowname@latest flowname input.js
La CLI écrit le code récupéré dans un nouveau répertoire flowname-output-TIMESTAMP-ID/output.js. Ajoutez --report pour suivre chaque requête et chaque nom proposé dans un rapport HTML en direct. Aucun flag n'est requis pour le modèle Gemini par défaut ; la CLI ne charge pas automatiquement .env. Nécessite Node.js 22.8+.
Pour le navigateur, ouvrez le playground, collez du JavaScript, fournissez votre propre clé API et lancez la récupération. Les requêtes partent directement de votre navigateur vers le fournisseur sélectionné ; Stop interrompt l'exécution.
FlowName nomme les identifiants ; il ne déballe pas les bundles et n'annule pas l'obfuscation structurelle. Utilisez webcrack pour les motifs d'obfuscation pris en charge ou Wakaru pour les bundles pris en charge, puis passez le JavaScript résultant à FlowName. Il résout les liaisons lexicales, utilise des relations légères et un repli sur la même portée pour regrouper les cibles, et demande plusieurs noms par requête au LLM. Voir comment fonctionne le regroupement.
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);
Voir le guide d'utilisation pour les options, les rapports CLI et un exemple complet de bibliothèque. L'index de la documentation couvre l'approche, l'architecture, les limitations, les travaux antérieurs et la comparaison avec Humanify.
Sous licence MIT. Voir les notes de version.