名称质量显示的是仅被自动化、未校准的 Jev 评估所偏好的名称比例。动态图表 → · 精确计数、方法与局限性 →
在浏览器中试用 FlowName → — 输入你的 JavaScript、API 密钥和模型;无需安装。
CLI: npx --yes --package=flowname@latest flowname input.js(请先设置 GEMINI_API_KEY)。
FlowName 是面向混淆 JavaScript 的下一代语义标识符恢复器。通过基于 AST 的静态分析将逻辑相关的变量分组到预算受限的 LLM 请求中,FlowName 消除了朴素文本窗口方法中常见的上下文丢失幻觉。
在针对 Cigar 和 GrobPaint 上领先的基于符号的工具(Humanify)的两项直接基准测试中,FlowName 取得了以下平均相对结果:
在针对 GrobPaint 的 1,786 个匿名绑定的第二项比较中,FlowName 使用了 408 次对 1,786 次 API 调用,总 token 数减少 29.36%;原始源码感知的 Jev 给出了 512 对 274 的独占偏好。
浏览基准测试摘要和两份可搜索的名称报告。 Jev 的判断是自动化且未校准的。Humanify 的提示词省略了部分绑定的目标拼写,而防冲突后缀可能影响应用名称得分。有关上下文拆分和局限性,请参阅摘要。
在当前目录的环境变量或 .env 文件中设置 GEMINI_API_KEY(或 FLOWNAME_API_KEY),然后运行:
npx --yes --package=flowname@latest flowname input.js
要使用另一个兼容 OpenAI 的端点,或跳过环境变量,请将所有内容作为标志传递:
npx --yes --package=flowname@latest flowname input.js --base-url https://api.openai.com/v1 --model MODEL --api-key YOUR_API_KEY
标志优先,其次是环境变量,最后是 .env;当它们不一致时,CLI 会发出警告。通过标志传入的密钥可能会在 shell 历史和进程列表中可见。
在花费任何费用之前先检查成本,或者先尝试大文件的一小部分:
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
CLI 会将恢复后的代码写入新的 flowname-output-TIMESTAMP-ID/output.js 目录。添加 --report 可在实时 HTML 报告中查看每个请求和建议的名称。默认 Gemini 模型无需任何标志。需要 Node.js 22.8+。
在浏览器中,打开 playground,粘贴 JavaScript,提供你自己的 API 密钥并开始恢复。请求会直接从你的浏览器发送到所选提供商;Stop 会中断运行。
FlowName 负责为标识符命名;它不会解包 bundle 或撤销结构性混淆。对于受支持的混淆模式,请使用 webcrack;对于受支持的 bundle,请使用 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 对比。