
Recuperação de identificadores JavaScript de próxima geração com LLMs.
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 de Identificadores Semânticos 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 de janelas de texto.
Em um benchmark direto contra uma ferramenta líder baseada em símbolos (Humanify) em um escopo ofuscado com 411 bindings, o FlowName entregou:
Explore todas as 411 comparações de nomes no relatório HTML. A comparação 155 vs 37 é um julgamento Jev automatizado e não calibrado; esta execução de um único programa não pode estabelecer uma vantagem geral de qualidade de nomenclatura. Veja as notas do benchmark.
Defina GEMINI_API_KEY (ou FLOWNAME_API_KEY) no seu ambiente e execute:
npx --yes --package=flowname@latest flowname input.js
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; a CLI não carrega .env automaticamente. 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 webcrack para padrões de ofuscação suportados ou Wakaru para bundles suportados, depois passe o JavaScript resultante para o FlowName. Ele resolve bindings lexicais, usa relações leves e fallback de mesmo escopo para agrupar alvos, e pede 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);
Veja o guia de uso para opções, relatórios da CLI e um exemplo completo de biblioteca. O índice da documentação cobre a abordagem, arquitetura, limitações, trabalhos anteriores e a comparação com o Humanify.
Licenciado sob MIT. Veja as notas de versão.