
अगली पीढ़ी की JavaScript पहचानकर्ता पुनर्प्राप्ति LLMs के साथ।
नाम गुणवत्ता उन नामों का अनुपात दर्शाती है जिन्हें विशेष रूप से एक स्वचालित, अन-कैलिब्रेटेड Jev मूल्यांकन द्वारा पसंद किया गया। एनिमेटेड चार्ट → · सटीक गणनाएँ, विधि और सीमाएँ →
अपने ब्राउज़र में FlowName आज़माएँ → — अपना JavaScript, API कुंजी और मॉडल दर्ज करें; किसी इंस्टॉलेशन की आवश्यकता नहीं।
CLI: npx --yes --package=flowname@latest flowname input.js (पहले GEMINI_API_KEY सेट करें)।
FlowName अस्पष्ट (obfuscated) JavaScript के लिए एक अगली पीढ़ी का Semantic Identifier Recoverer है। तार्किक रूप से संबंधित वेरिएबल्स को बजट-निर्धारित LLM अनुरोधों में समूहित करने के लिए AST-आधारित स्थिर विश्लेषण का उपयोग करके, FlowName सामान्य टेक्स्ट-विंडो दृष्टिकोणों में होने वाले संदर्भ-हानि संबंधी भ्रम (hallucinations) को समाप्त करता है।
Cigar और GrobPaint पर एक अग्रणी प्रतीक-आधारित टूल (Humanify) के विरुद्ध दो सीधे बेंचमार्क में, FlowName ने ये औसत सापेक्ष परिणाम दिए:
GrobPaint के 1,786 अनामीकृत बाइंडिंग्स पर दूसरी तुलना में, FlowName ने 1,786 के बजाय 408 API कॉल और 29.36% कम कुल टोकन का उपयोग किया; मूल-स्रोत-जागरूक Jev ने 274 के बजाय 512 विशेष प्राथमिकताएँ दीं।
बेंचमार्क सारांश और दोनों खोज-योग्य नाम रिपोर्ट देखें. Jev के निर्णय स्वचालित और अन-कैलिब्रेटेड हैं। Humanify के प्रॉम्प्ट ने कुछ बाइंडिंग्स के लिए लक्ष्य स्पेलिंग छोड़ दी थी, और टकराव-सुरक्षित प्रत्यय (suffixes) लागू-नाम स्कोर को प्रभावित कर सकते हैं। संदर्भ विभाजन और सीमाओं के लिए सारांश देखें।
अपने वातावरण में या वर्तमान निर्देशिका की .env फ़ाइल में GEMINI_API_KEY (या FLOWNAME_API_KEY) सेट करें, फिर चलाएँ:
npx --yes --package=flowname@latest flowname input.js
किसी अन्य OpenAI-संगत endpoint का उपयोग करने के लिए, या environment variables को छोड़ने के लिए, सब कुछ flags के रूप में पास करें:
npx --yes --package=flowname@latest flowname input.js --base-url https://api.openai.com/v1 --model MODEL --api-key YOUR_API_KEY
फ़्लैग्स को प्राथमिकता मिलती है, फिर environment को, फिर .env को; जब वे असहमत होते हैं तो CLI चेतावनी देता है। फ़्लैग के रूप में पास की गई key shell history और process listings में दिखाई दे सकती है।
कुछ भी खर्च करने से पहले लागत जाँचें, या पहले किसी बड़ी फ़ाइल का एक छोटा हिस्सा आज़माएँ:
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 निर्देशिका में लिखता है। प्रत्येक अनुरोध और प्रस्तावित नाम को लाइव HTML रिपोर्ट में देखने के लिए --report जोड़ें। डिफ़ॉल्ट Gemini मॉडल के लिए किसी फ़्लैग की आवश्यकता नहीं है। 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 के अंतर्गत लाइसेंस प्राप्त। रिलीज़ नोट्स देखें।