हमारी समस्याएँ
अपडेट: हमने कुछ और समस्याओं* के बारे में भी लिखा है।*
संक्षिप्त, ठोस समस्याओं की एक बिना क्रम वाली सूची:
-
बेहतर संदर्भ: एक कोड एडिटर में जानकारी के कई स्रोत होते हैं: खुली हुई फ़ाइलें, अर्थगत रूप से मिलते-जुलते कोड खंड, प्रतीकात्मक रूप से जुड़े क्लास, lint आउटपुट, execution traces, git history, typing history, बाहरी दस्तावेज़ीकरण, और भी बहुत कुछ। हम चाहते हैं कि मॉडल तुरंत समझ जाए कि उपयोगकर्ता के सवाल के लिए सबसे प्रासंगिक क्या है, और वर्तमान में हम इस समस्या को हल करने के लिए एक कस्टम, तेज़ reranker मॉडल को प्रशिक्षित कर रहे हैं। हर अनुरोध के लिए, हम अलग-अलग स्रोतों से 500k टोकन इकट्ठा करेंगे, और फिर अपने reranker की मदद से उन्हें छाँटकर सबसे प्रासंगिक 8k टोकन तक ले आएँगे। यह एक मॉडल-संबंधी समस्या भी है और, बढ़ते हुए स्तर पर, अवसंरचना-संबंधी समस्या भी।
-
संपादनों के लिए एक “copilot”: GitHub Copilot नया कोड लिखते समय कम-entropy वाले keystrokes को कम करने में बेहद मददगार है, लेकिन जब आपको मौजूदा कोड ब्लॉक्स में छोटे, सरल परिवर्तन करने होते हैं, तब यह उतनी मदद नहीं करता। उन navigation, deletion और input keystrokes के बारे में सोचिए जो आपको ऐसे rename के लिए करने पड़ते हैं, जो symbolic F2-rename से थोड़ा ज़्यादा जटिल हो। इसे संभव बनाने के लिए हमें UX (ऐसे unobtrusive डिफ जो कोड लिखते समय आपको दिखते रहें) और मॉडल, दोनों तरफ़ नवाचार की ज़रूरत होगी (प्रॉम्प्टिंग काफी नहीं है, क्योंकि इसमें लागत, latency, और इंटेलिजेंस से जुड़ी समस्याएँ हैं)।
-
सीमित, in-flow एजेंट: OpenAI के code interpreter जैसा सोचिए, लेकिन बड़े कोडबेस में इंजीनियरिंग के लिए। आप एक सीमित, कुछ-चरणों वाले एजेंट को बताते हैं कि क्या करना है, और वह आपके लिए खोजता है, कोड लिखता है, उसे चलाता है, और इस पूरी प्रक्रिया के दौरान समय-समय पर आपसे फ़ीडबैक भी लेता है। इसे हासिल करने का पहला चरण, जिस पर हम अभी काम कर रहे हैं, ऐसा एजेंट बनाना है जो कुछ लाख टोकन वाले फ़ोल्डरों पर काम कर सके। अगर यह सफल रहा, तो हम इसे स्केल करके पूरे कोडबेस पर काम करने लायक बनाएँगे।
-
बग ढूँढ़ना: यहाँ दो मोड हैं: (1) पृष्ठभूमि में, Cursor आपकी फ़ाइलों को लगातार निष्क्रिय रूप से स्कैन करता रहेगा ताकि संभावित बग खोज सके, और (2) जब आप किसी डीबगिंग सत्र में गहराई से लगे होंगे, तब Cursor आपकी मदद से सक्रिय रूप से बग ढूँढ़ेगा। यहाँ डेटा कलेक्शन के कई दिलचस्प अवसर हैं।
-
बड़े संपादन: Cursor को आपके लिए पूरी फ़ाइलों, बल्कि पूरी डायरेक्टरियों तक को संशोधित करने में सक्षम होना चाहिए। यह क्षमताओं और UX, दोनों की चुनौती है। तेज़ी के लिए, मॉडल इतना समझदार होना चाहिए कि वह सब कुछ दोबारा लिखे बिना सिर्फ़ उन हिस्सों को चुने जिन्हें संशोधित करना है। अनुभव को बेहतर बनाने के लिए, परिवर्तनों को ऐसे real-time रूप में दिखाया जाना चाहिए जिसे आसानी से समझा जा सके।
-
स्केल: 12 अक्टूबर, 2023 तक हमारे पास 1.4 billion vectors और 150 thousand कोडबेस अनुक्रमित हैं। साल के अंत तक यह संख्या शायद 10x बढ़ जाएगी। हम Rust में Merkle-tree-आधारित एक बेहद तेज़ कोडबेस syncing engine पहले ही बना चुके हैं, और संभव है कि हमें जल्द ही एक कस्टम अनुक्रमण system भी बनाना पड़े।
भविष्य के विचार:
-
Time warp: अगले 15 मिनट में आप जो cross-file कोड परिवर्तन करेंगे, उनका अनुमान लगाकर उन्हें दिखाएँ। सभी insertions/deletions स्वीकार करने के लिए एक key command।
-
समझ: हमारे मॉडल को किसी भी कोडबेस की सभी अवधारणाओं को weights में गहराई से समझना चाहिए।
-
Reader mode: किसी भी स्तर की विशिष्टता वाले docs और एक ऐसे bot के साथ कोड को समझना आसान बनाएँ, जो आपको प्रासंगिक code paths से होकर ले जाए और ज़रूरत पड़ने पर समझाता चले।
-
Pseudo-code mode: अपने कोड के “outline” representation को संपादित करें और परिवर्तनों को स्वचालित रूप से source स्तर पर लागू करा दें।
-
फिर कभी stack traces की चिंता न करें: IDE को बस इसे समझ जाना चाहिए, और आपके लिए कोड को auto-fix कर देना चाहिए।
हमने उन सभी समस्याओं को समेटने की कोशिश की है जिनके बारे में हम अभी सोच रहे हैं, लेकिन — और यह उस उत्पाद के निर्माण की शानदार बातों में से एक है, जिसे आप खुद दिन में 12 घंटे इस्तेमाल करते हैं — हमारे पास लगातार नए विचार आते रहते हैं और हम प्राथमिकताएँ बदलते रहते हैं, इसलिए इसे अंतिम roadmap नहीं समझना चाहिए। फिर भी, हमें उम्मीद है कि इससे यह अंदाज़ा ज़रूर मिलता है कि हम हर दिन अपनी सोच और ऊर्जा किन चीज़ों पर लगाते हैं।
साथ ही, आप काफ़ी आगे तक पढ़ चुके हैं, इसलिए मुमकिन है कि जिन समस्याओं में हमारी रुचि है, उनमें आपकी भी दिलचस्पी हो :). अगर ऐसा है, तो आपको हमारे साथ जुड़ने पर ज़रूर विचार करना चाहिए! यहाँ कुछ और वजहें हैं, जिनसे हमें लगता है कि आपको हमारे साथ काम करना पसंद आएगा:
-
लोगों को Cursor इस्तेमाल करना पसंद है। हमारी शुरुआती वृद्धि से हम काफ़ी खुश हैं।
-
आप यहाँ बेहद होशियार लोगों के साथ काम करेंगे। हम प्रतिभा के घनत्व में गहरा विश्वास रखते हैं। जिन लोगों के साथ आप यहाँ काम करेंगे, वे सचमुच बहुत, बहुत अच्छे होंगे।
-
AI कोडिंग एक बहुत बड़ा बाज़ार है। और हम इसमें जीत सकते हैं।
-
यह मज़ेदार है। यह हमारे लिए बहुत मायने रखता है! जिन लोगों को आप पसंद करते हैं, उनके साथ काम करना मज़ेदार है; ऐसा उत्पाद बनाना मज़ेदार है, जहाँ आप Cmd-Shift-R दबाते हैं और तुरंत उपयोगकर्ता प्रतिक्रिया मिल जाती है, क्योंकि कोडिंग करते समय आप ख़ुद ही लक्षित उपयोगकर्ता होते हैं; और प्रोग्रामिंग के सभी उबाऊ हिस्सों को स्वचालित करने की ओर हर दिन थोड़ा-थोड़ा आगे बढ़ना भी मज़ेदार है।
-
हम कड़ी मेहनत करते हैं। हम अपने आपको भाग्यशाली मानते हैं कि हमें इन समस्याओं पर काम करने का मौका मिला है, और इन्हें सुलझाने में अपना सब कुछ झोंकने में हमें आनंद आता है।