
Recuperación de identificadores JavaScript de nueva generación con LLMs.
La calidad de los nombres muestra la proporción de nombres preferidos exclusivamente por una evaluación Jev automatizada y no calibrada. Gráfico animado → · Recuentos exactos, método y limitaciones →
Prueba FlowName en tu navegador → — introduce tu JavaScript, tu clave de API y tu modelo; no se requiere instalación.
CLI: npx --yes --package=flowname@latest flowname input.js (configura primero GEMINI_API_KEY).
FlowName es un recuperador semántico de identificadores de nueva generación para JavaScript ofuscado. Mediante el uso de análisis estático basado en AST para agrupar variables lógicamente relacionadas en solicitudes LLM con presupuesto limitado, FlowName elimina las alucinaciones por pérdida de contexto comunes en los enfoques ingenuos basados en ventanas de texto.
En dos benchmarks directos contra una herramienta líder basada en símbolos (Humanify) sobre Cigar y GrobPaint, FlowName obtuvo estos resultados relativos promedio:
En una segunda comparación sobre los 1.786 enlaces anonimizados de GrobPaint, FlowName realizó 408 frente a 1.786 llamadas a la API y usó un 29,36% menos de tokens totales; Jev, consciente del código fuente original, otorgó 512 frente a 274 preferencias exclusivas.
Explora el resumen del benchmark y ambos informes de nombres con búsqueda. Los juicios de Jev son automatizados y no calibrados. El prompt de Humanify omitía la grafía objetivo para algunos enlaces, y los sufijos seguros frente a colisiones pueden afectar las puntuaciones de los nombres aplicados. Consulta el resumen para conocer el desglose del contexto y las limitaciones.
Configura GEMINI_API_KEY (o FLOWNAME_API_KEY) en tu entorno o en un archivo .env en el directorio actual, y luego ejecuta:
npx --yes --package=flowname@latest flowname input.js
Para usar otro endpoint compatible con OpenAI, o para omitir las variables de entorno, pasa todo como flags:
npx --yes --package=flowname@latest flowname input.js --base-url https://api.openai.com/v1 --model MODEL --api-key YOUR_API_KEY
Las flags tienen prioridad, luego el entorno y después .env; la CLI advierte cuando no coinciden. Una clave pasada como flag puede ser visible en el historial del shell y en los listados de procesos.
Comprueba el coste antes de gastar nada, o prueba primero una pequeña parte de un archivo grande:
flowname input.js --dry-run # planned API calls and prompt bytes; no key needed
flowname input.js --sample-requests 3 # send only the first 3 planned requests
flowname - -o - < input.js > output.js # standard input to standard output
La CLI escribe el código recuperado en un nuevo directorio flowname-output-TIMESTAMP-ID/output.js. Añade --report para observar cada solicitud y el nombre propuesto en un informe HTML en vivo. No se requieren flags para el modelo Gemini predeterminado. Requiere Node.js 22.8+.
Para el navegador, abre el playground, pega el JavaScript, proporciona tu propia clave de API y comienza la recuperación. Las solicitudes van directamente desde tu navegador al proveedor seleccionado; Stop interrumpe la ejecución.
FlowName nombra identificadores; no desempaqueta bundles ni deshace la ofuscación estructural. Usa webcrack para los patrones de ofuscación compatibles o Wakaru para los bundles compatibles, y luego pasa el JavaScript resultante a FlowName. Resuelve enlaces léxicos, usa relaciones ligeras y el fallback del mismo ámbito para agrupar objetivos, y solicita al LLM varios nombres por solicitud. Consulta cómo funciona la agrupación.
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);
Consulta la guía de uso para ver las opciones, los informes de la CLI y un ejemplo completo de la biblioteca. El índice de documentación cubre el enfoque, la arquitectura, las limitaciones, el trabajo previo y la comparación con Humanify.
Con licencia MIT. Consulta las notas de la versión.