
Восстановление идентификаторов JavaScript нового поколения с помощью LLM.
Попробуйте FlowName в браузере → — введите свой JavaScript, API-ключ и модель; установка не требуется.
CLI: npx --yes --package=flowname@latest flowname input.js (сначала задайте GEMINI_API_KEY).
FlowName — это Semantic Identifier Recoverer нового поколения для обфусцированного JavaScript. Используя статический анализ на основе AST для группировки логически связанных переменных в экономные LLM-запросы, FlowName устраняет галлюцинации из-за потери контекста, характерные для наивных подходов со скользящим текстовым окном.
В прямом бенчмарке против ведущего инструмента на основе символов (Humanify) на обфусцированной области видимости с 411 привязками FlowName показал:
Изучите все 411 сравнений имён в HTML-отчёте. Сравнение 155 против 37 — это автоматизированное, некалиброванное суждение Jev; этот запуск на одной программе не может установить общее преимущество в качестве именования. См. заметки о бенчмарке.
Задайте GEMINI_API_KEY (или FLOWNAME_API_KEY) в вашем окружении, затем выполните:
npx --yes --package=flowname@latest flowname input.js
CLI записывает восстановленный код в новый каталог flowname-output-TIMESTAMP-ID/output.js. Добавьте --report, чтобы наблюдать каждый запрос и предложенное имя в живом HTML-отчёте. Для модели Gemini по умолчанию флаги не требуются; CLI не загружает .env автоматически. Требуется Node.js 22.8+.
Для браузера откройте playground, вставьте JavaScript, укажите свой API-ключ и запустите восстановление. Запросы идут напрямую из вашего браузера к выбранному провайдеру; Stop прерывает выполнение.
FlowName даёт имена идентификаторам; он не распаковывает бандлы и не отменяет структурную обфускацию. Используйте webcrack для поддерживаемых шаблонов обфускации или Wakaru для поддерживаемых бандлов, а затем передайте полученный JavaScript в FlowName. Он разрешает лексические привязки, использует лёгкие связи и откат в пределах той же области видимости для группировки целей и запрашивает у LLM несколько имён за один запрос. Посмотрите, как работает группировка.
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);
См. руководство по использованию для опций, отчётов CLI и полного примера библиотеки. Индекс документации охватывает подход, архитектуру, ограничения, предыдущие работы и сравнение с Humanify.
Лицензировано под MIT. См. примечания к выпуску.