
次世代のLLMによるJavaScript識別子復元。
ブラウザでFlowNameを試す → — JavaScript、APIキー、モデルを入力するだけ。インストール不要です。
CLI: npx --yes --package=flowname@latest flowname input.js(先に GEMINI_API_KEY を設定してください)。
FlowName は、難読化されたJavaScript向けの次世代セマンティック識別子復元ツールです。ASTベースの静的解析を用いて論理的に関連する変数を予算制約付きのLLMリクエストにグループ化することで、素朴なテキストウィンドウ方式に共通するコンテキスト喪失によるハルシネーションを排除します。
411個のバインディングを含む難読化スコープにおいて、主要なシンボルベースツール(Humanify)との直接ベンチマークで、FlowNameは以下を達成しました:
HTMLレポートで411件すべての名前比較を確認する。 155 vs 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に渡してください。FlowNameは字句バインディングを解決し、軽量な関係性と同一スコープのフォールバックを用いてターゲットをグループ化し、LLMに1リクエストあたり複数の名前を要求します。グループ化の仕組みを参照。
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比較を扱っています。