23 पॉइंट द्वारा GN⁺ 2024-10-30 | 6 टिप्पणियां | WhatsApp पर शेयर करें

Cursor क्या है

  • Cursor, Visual Studio Code (VS Code) का एक fork है, जिसमें core UI में Large Language Model (LLM) आधारित फीचर्स इंटीग्रेट किए गए हैं
  • यह एक proprietary product है और इसमें free tier तथा subscription options उपलब्ध हैं
  • मुख्य फीचर्स:
    • Tab autocomplete: सिर्फ subscribers के लिए उपलब्ध code autocomplete और अगले सुझाए गए action तक जाने वाला proprietary fine-tuned model
    • Inline edit: free और paid users के लिए उपलब्ध chat-आधारित interface, जो diff view का उपयोग करके चुने गए code को edit करता है
    • Chat sidebar: free और paid users के लिए उपलब्ध chat-आधारित interface, जो लंबी discussion के लिए जगह देता है
    • Composer: कई files में फैले बड़े refactoring के लिए डिज़ाइन किया गया chat-आधारित interface, जिसे free और paid users इस्तेमाल कर सकते हैं

Tab autocomplete

  • कोड लिखते समय सबसे स्वाभाविक रूप से इस्तेमाल किया जा सकने वाला और सबसे अधिक समय बचाने वाला फीचर
  • यह सिर्फ एक line, कई lines, या पूरे function के लिए completion नहीं सुझाता, बल्कि अगले edit के लिए जिस अगली line पर जाना है, वह भी सुझाता है
  • Tab key को बार-बार दबाकर पूरे file में संबंधित changes को autocomplete किया जा सकता है
  • इसे code refactoring tool के रूप में भी इस्तेमाल किया जा सकता है
  • कभी-कभी यह अपने आप bug ढूंढकर fix का सुझाव भी देता है
  • strings को quotes में रखने पर यह content को सही तरीके से escape करता है
  • सिर्फ function signature और optional docstring से पूरा function लिखा जा सकता है
  • completion suggestions बहुत तेज़ हैं
  • कमियां:
    • अगर आप सुझाव समय पर नहीं देखते और टाइप करते रहते हैं, तो completion suggestion गायब हो जाता है
    • कभी-कभी गलत completion को जानबूझकर reject करने के बाद, बाद में कोई दूसरा completion accept करने पर पहले reject किया गया suggestion चुपचाप apply हो जाता है

Inline edit, Chat sidebar, Composer

  • base model (मुख्यतः Claude 3.5 Sonnet का उपयोग) के साथ interaction काफी समान है, अंतर मुख्य रूप से user interface में है
  • Inline edit को Ctrl-K/Cmd-K दबाकर बुलाया जाता है, फिर आप मनचाहा बदलाव लिखते हैं और accept या reject करने योग्य diff प्राप्त करते हैं
  • Chat sidebar को Ctrl+L/Cmd+L से खोला जाता है, और यह कई बार बातचीत के लिए अधिक जगह देता है
  • Composer कई files में फैले refactoring के लिए डिज़ाइन किया गया है, और एक समय में एक file diff की समीक्षा करने के लिए बेहतर user experience देता है

.cursorrules फ़ाइल

  • workspace root में मौजूद .cursorrules फ़ाइल की content हमेशा अतिरिक्त context देने के लिए विभिन्न chat forms में शामिल की जाती है
  • इसका उपयोग repository के coding standards, common packages, और अन्य documents के बारे में LLM को बताने के लिए किया जाता है
  • यह Cursor की एक बड़ी बाधा को दूर करने में मदद कर सकता है: coding style और patterns का पालन न करना, जब तक कि वे edit की जा रही file में पहले से मौजूद न हों
  • वर्तमान में हर workspace के लिए सिर्फ एक file होने के कारण, कई भाषाओं वाले code को शामिल करने वाली monorepo को सेट करना छोटे और consistently styled code sets वाले छोटे repositories की तुलना में अधिक कठिन है
  • .cursorrules फ़ाइल सिर्फ chat forms में उपयोग होती है, tab autocomplete में नहीं

workflow में बदलाव

  • कोड को तेज़ी से लिख पाना सबसे दिलचस्प बात नहीं है
  • वास्तव में, code लिखना खुद bottleneck नहीं है
  • असली value इस बात में है कि यह code लिखने के तरीके को बदल देता है
  • बदली हुई बातें:
    1. नई libraries या frameworks खोजने की संभावना बहुत कम हो जाती है
      • छोटे utilities के लिए कोई general-purpose library import करने की बजाय, LLM से custom requirements के अनुसार लिखवाना अधिक आसान है
      • कई libraries सिर्फ boilerplate कम करने के लिए मौजूद हैं, लेकिन जब LLM वही काम कर सकता है, तो उनकी cost उतनी justified नहीं लगती
    2. अपने code में DRY(Don't Repeat Yourself) सिद्धांत का सख्ती से पालन करने की चिंता कम हो जाती है
      • बहुत जल्दी abstraction define करने से बाद में काफी technical debt पैदा हो सकता है
      • functions या classes बनाने की कोशिश किए बिना, दूसरे code को reference करके काफी code बनाया जा सकता है, इसलिए लचीलापन बढ़ जाता है
    3. कम परिचित languages या frameworks का उपयोग करने की इच्छा काफी बढ़ जाती है
      • उदाहरण के लिए, R का उपयोग करना पहले कठिन था, लेकिन अब आप मनचाहा visualization समझाएँ तो सही data manipulation और ggplot visualization मिल सकता है
    4. बड़े codebase में integrate करने से पहले छोटे components पर तेज़ी से iteration की जा रही है
      • यह LLM की सीमाओं से निपटने का एक तरीका भी है, लेकिन साथ ही काम करने के ऐसे दिलचस्प तरीके भी खोलता है जिन पर पहले विचार नहीं किया गया था

सारांश

  • फिलहाल Cursor, LLM coding assistant की क्षमता दिखाने वाला सबसे अच्छा उदाहरण है
  • अगर आप यह समझना चाहते हैं कि इस तरह के tools कैसे value दे सकते हैं, तो Cursor को आज़माना अच्छा रहेगा

GN⁺ की राय

  • Cursor, LLM-आधारित coding tools की क्षमता दिखाने वाला एक अच्छा उदाहरण लगता है
    • खासकर tab autocomplete फीचर आकर्षक है, क्योंकि इसे code लिखते समय स्वाभाविक रूप से इस्तेमाल किया जा सकता है और यह काफी समय बचा सकता है
    • chat-आधारित फीचर्स भी refactoring या code transformation जैसे कामों में उपयोगी हो सकते हैं
  • हालांकि, यह अभी शुरुआती चरण में है, इसलिए इसकी कुछ सीमाएँ भी दिखती हैं
    • consistent coding style लागू करना कठिन है
    • monorepo जैसे जटिल project structures में usability की समस्या
    • free users और paid users के बीच फीचर अंतर पूरी तरह स्पष्ट नहीं है
  • समान फीचर्स देने वाले अन्य tools में GitHub Copilot, Tabnine, Kite आदि शामिल हैं
    • हर tool के अपने फायदे और कमियां हैं, इसलिए project की प्रकृति या व्यक्तिगत पसंद के अनुसार चुनना बेहतर होगा
  • LLM-आधारित coding tools अपनाते समय निम्न बातों पर विचार किया जा सकता है
    • development team की स्वीकार्यता: क्या नए tool को अपनाने को लेकर कोई झिझक है
    • learning cost: tool का उपयोग सीखने में कितना समय लगेगा
    • maintainability: tool द्वारा बनाए गए code को समझना और maintain करना कितना आसान है
    • code quality: क्या यह वास्तव में code quality सुधारने में मदद करता है
    • cost-effectiveness: क्या productivity gains, adoption/maintenance cost की भरपाई कर सकते हैं

6 टिप्पणियां

 
yangeok 2024-11-08

cursor chat ही कुंजी है। यह docstring बनाना बहुत आसान कर देता है।

 
roxie 2024-11-04

cursor इस्तेमाल करने पर copilot का auto-complete बहुत धीमा लगता है. :(

 
yangeok 2024-10-30

क्या tab auto-complete सिर्फ़ paid users के लिए ही उपलब्ध है?

 
angelkum 2024-10-31

यह सही है कि यह सिर्फ़ subscribers के लिए उपलब्ध है, लेकिन एक free subscription भी है, और यह हर महीने 2000 auto-completions देता है. मैं इसे इसी तरह 3 महीने से इस्तेमाल कर रहा हूँ.
https://www.cursor.com/pricing

 
savvykang 2024-10-31

Tab ऑटो कंप्लीशन: केवल सब्सक्राइबरों के लिए उपलब्ध कोड ऑटो कंप्लीशन

हाँ

 
rlahfl 2024-10-31

लेख में लिखा है, हाहा