
Recuperação de identificadores JavaScript de próxima geração com LLMs.
A qualidade dos nomes mostra a proporção de nomes preferidos exclusivamente por uma avaliação Jev automatizada e não calibrada. Gráfico animado → · Contagens exatas, método e limitações →
Experimente o FlowName no seu navegador → — insira seu JavaScript, chave de API e modelo; não é necessária instalação.
CLI: npx --yes --package=flowname@latest flowname input.js (defina GEMINI_API_KEY primeiro).
FlowName é um Recuperador Semântico de Identificadores de nova geração para JavaScript ofuscado. Ao usar análise estática baseada em AST para agrupar variáveis logicamente relacionadas em requisições LLM com orçamento controlado, o FlowName elimina as alucinações por perda de contexto comuns em abordagens ingênuas baseadas em janelas de texto.
Em dois benchmarks diretos contra uma ferramenta líder baseada em símbolos (Humanify) no Cigar e no GrobPaint, o FlowName apresentou estes resultados relativos médios:
Em uma segunda comparação nas 1.786 vinculações anonimizadas do GrobPaint, o FlowName usou 408 versus 1.786 chamadas de API e 29,36% menos tokens totais; o Jev ciente do código-fonte original deu 512 versus 274 preferências exclusivas.
Explore o resumo do benchmark e ambos os relatórios de nomes pesquisáveis. Os julgamentos do Jev são automatizados e não calibrados. O prompt do Humanify omitiu a grafia alvo para algumas vinculações, e sufixos seguros contra colisões podem afetar as pontuações de nomes aplicados. Consulte o resumo para a divisão de contexto e as limitações.
Defina GEMINI_API_KEY (ou FLOWNAME_API_KEY) no seu ambiente ou em um arquivo .env no diretório atual e execute:
npx --yes --package=flowname@latest flowname input.js
Para usar outro endpoint compatível com OpenAI, ou para ignorar as variáveis de ambiente, passe tudo como flags:
npx --yes --package=flowname@latest flowname input.js --base-url https://api.openai.com/v1 --model MODEL --api-key YOUR_API_KEY
As flags têm precedência, depois o ambiente, depois o .env; a CLI avisa quando divergem. Uma chave passada como flag pode ficar visível no histórico do shell e na listagem de processos.
Verifique o custo antes de gastar qualquer coisa, ou experimente primeiro uma pequena parte de um ficheiro 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
A CLI grava o código recuperado em um novo diretório flowname-output-TIMESTAMP-ID/output.js. Adicione --report para acompanhar cada requisição e nome proposto em um relatório HTML ao vivo. Nenhuma flag é necessária para o modelo Gemini padrão. Requer Node.js 22.8+.
Para o navegador, abra o playground, cole o JavaScript, forneça sua própria chave de API e inicie a recuperação. As requisições vão diretamente do seu navegador para o provedor selecionado; Stop interrompe a execução.
O FlowName nomeia identificadores; ele não desempacota bundles nem desfaz ofuscação estrutural. Use o webcrack para padrões de ofuscação suportados ou o Wakaru para bundles suportados, e então passe o JavaScript resultante para o FlowName. Ele resolve vinculações lexicais, usa relações leves e fallback de mesmo escopo para agrupar alvos, e solicita ao LLM vários nomes por requisição. Veja como o agrupamento funciona.
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);
Consulte o guia de uso para opções, relatórios de CLI e um exemplo completo de biblioteca. O índice da documentação aborda a abordagem, arquitetura, limitações, trabalhos anteriores e a comparação com Humanify.
Licenciado sob MIT. Consulte as notas de versão.