AI कोडिंग एजेंट द्वारा बनाए गए स्पगेटी कोड को ठीक करना और टोकन लागत कम करना
जब मैंने एजेंट को कोडिंग सौंपी, तो कोड की संख्या दस लाख तक बढ़ गई और एपीआई उपयोग शुल्क का बिल बम आ गया। यह लेख उसी को ठीक करने के तरीके के बारे में है।
खराब हुए कोडबेस को हटाना
एजेंट द्वारा अंतहीन लूप में बनाए गए डुप्लिकेट कोड को 30 मिनट में हटाया जा सकता है। आप knip और jscpd का उपयोग कर सकते हैं।
प्रोजेक्ट रूट में knip.json बनाएं और एंट्री पॉइंट लिखें। एजेंट द्वारा उपयोग किए गए और छोड़े गए घोस्ट पैकेज खोजने के लिए टर्मिनल में npx knip टाइप करें। इसके बाद, कॉपी-पेस्ट के माध्यम से बढ़े हुए डुप्लिकेट फ़ंक्शन ब्लॉक को निकालने के लिए npx jscpd ./src -t 1 चलाएं।
158-फ़ाइल मोनorepo में अनावश्यक कोड को एक बार में हटाया जा सकता है। इसके बाद, noUnusedVariables नियम को चालू करने और डेड कोड को वापस आने से रोकने के लिए biome.json खोलें।
सैंडबॉक्स के साथ टोकन लागत को बांधना
यदि आप हर बार पूरे कोड को एजेंट को सौंपते हैं, तो टोकन गायब हो जाते हैं। आपको Aider-शैली की Repo-Map संरचना को लागू करना चाहिए और केवल उस फ़ाइल को अलग करना चाहिए जिस पर आप वर्तमान में काम कर रहे हैं।
--map-tokens 1024 विकल्प देकर, आप 1,000 से अधिक फ़ाइलों वाले प्रोजेक्ट में भी रिपॉजिटरी संरचना को समझने के लिए उपयोग किए जाने वाले टोकन को 2,000 टोकन से कम पर रोक सकते हैं।
लागत सीमा निर्धारित करने के लिए LiteLLM Proxy इसका उत्तर है। litellm_config.yaml सेट करें और प्रति सत्र अधिकतम लूप संख्या को 15 तक सीमित करें। यदि आप लागत की ऊपरी सीमा 2.50 डॉलर पर सेट करते हैं, तो जैसे ही एजेंट सीमा पार करता है, प्रॉक्सी कॉल को काट देता है।
घोषणात्मक परीक्षणों (Declarative Tests) के साथ एजेंट को नियंत्रित करना
मलय में लंबे प्रॉम्प्ट लिखने का कोई फायदा नहीं है। आपको पहले विफल होने वाले यूनिट टेस्ट कोड को देना होगा ताकि एजेंट अजीब काम न करे।
SWE-bench Verified शोध के अनुसार, जब यूनिट टेस्ट केस को पहले इनपुट करने के तरीके का उपयोग किया गया था, तो रिग्रेशन दर 6.08 प्रतिशत से गिरकर 1.82 प्रतिशत हो गई और समस्या समाधान दर 24 प्रतिशत से बढ़कर 32 प्रतिशत हो गई।
पहले एक विफल परीक्षण फ़ाइल बनाएं और एजेंट को केवल उस कार्यान्वयन भाग को लिखने का निर्देश दें जो इस परीक्षण को पास करता है।
सत्यापन स्क्रिप्ट को भी स्वचालित किया जाना चाहिए। एक local_verifier.sh फ़ाइल बनाएं और क्रम में npx tsc --noEmit, npx biome check ./src, और npx vitest run कमांड डालें। भले ही एजेंट यह जिद करे कि उसने कोड पूरा कर लिया है, यदि यह स्क्रिप्ट निकास कोड 0 नहीं है, तो यह कमिट को रोक देता है।
एक हाइब्रिड वर्कफ़्लो जहाँ मनुष्य सीधे हस्तक्षेप करते हैं
एजेंट द्वारा बनाए गए कोड को पुल अनुरोध (pull request) इकाइयों में विभाजित किया गया है और मनुष्यों द्वारा सीधे देखा जाता है।
जांचें कि क्या संशोधित पंक्तियाँ 200 पंक्तियों से अधिक हैं, क्या package.json में कोई अजीब पैकेज जुड़ा हुआ है, या क्या @ts-ignore के साथ त्रुटि को लापरवाही से छिपा दिया गया था। यदि आप Husky और lint-staged को एक साथ बांधते हैं, तो कमिट के समय डुप्लिकेट कोड 2 प्रतिशत से अधिक होने पर इसे तुरंत ब्लॉक कर दिया जाता है।
जब आप काम को विभाजित करते हैं, तो यह 3 चरणों में जाता है। शीर्ष-स्तरीय मॉडल काम को विभाजित करता है और TODO.md बनाता है। इसके बाद, लागत प्रभावी मॉडल प्रत्येक आइटम को लागू करता है। अंत में, एक सीनियर डेवलपर गिट diff को सत्यापित करता है। यदि आप इस संरचना का उपयोग करते हैं, तो आप अकेले फ्रंटियर मॉडल के साथ आगे बढ़ने की तुलना में 70 प्रतिशत से अधिक लागत बचा सकते हैं।