12 पॉइंट द्वारा GN⁺ 14 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • व्यक्तिगत प्रोजेक्ट्स में कई AI models आज़माने पर code review·refactoring·one-off scripts लागत के मुकाबले लगातार उपयोगी रहे, लेकिन non-autonomous development work में judgment quality और verification cost बड़ी सीमाएँ बनी रहीं
  • Anthropic·OpenAI के $20/माह subscriptions और Google·Moonshot·DeepSeek·Cerebras के $20 credits की तुलना करने के बाद, व्यवहार में मुख्य रूप से Opus 4.8 और GPT 5.5 को बारी-बारी से इस्तेमाल किया
  • सबसे बड़ा मूल्य git diff main review जैसे bugs ढूँढने में मिला, और छोटे codebase में बारीकी से code पढ़ना एक ताकत साबित हुआ—जैसे Opus ने एक interpreter में fuzzer से छूटा double-free ढूँढ निकाला
  • साथ में code लिखने या इसे अकेले implement करने के लिए छोड़ने पर यह बार-बार दिखा कि model गलत abstraction layer पर bugs ठीक करता है, बेवजह tests·refactoring बनाता है, और implementation पूरा होने या tests चलने की झूठी पुष्टि कर देता है
  • भले ही models खुद और smart न हों, फिर भी language·runtime guarantees, static analysis, lightweight formal techniques, और editor के भीतर harness जैसी practices, जो verification cost घटाएँ और change scope सीमित करें, ज़्यादा महत्वपूर्ण हो जाती हैं

इस्तेमाल किए गए models और tools

  • Anthropic और OpenAI पर अलग-अलग $20/माह subscription लिया, और Google·Moonshot·DeepSeek·Cerebras पर अलग-अलग $20 credits डालकर इस्तेमाल किया
  • कई समस्याओं पर models की तुलना करने के बाद ज़्यादातर Opus 4.8 और GPT 5.5 को बारी-बारी से इस्तेमाल किया
    • ये दोनों models बाकी models से साफ़ तौर पर बेहतर थे
    • दोनों के usage limits एक साथ hit होना दुर्लभ था
  • tools के रूप में claude code, codex, pi का इस्तेमाल किया
    • claude code और codex अच्छी स्थिति में नहीं लगे
    • codex कभी-कभी terminal बंद करने के बाद भी CPU 100% उपयोग करता रहता था और उसे kill करना पड़ता था
    • claude code “escape दबाकर dialog cancel करें” कहता था, लेकिन व्यवहार में dialog बंद नहीं करता था और सिर्फ claude को interrupt करता था
    • दोनों tools का behavior रोज़ बदलता था
  • pi को बहुत ज़्यादा इस्तेमाल नहीं किया, लेकिन यह सामान्य software की तरह काम करता लगा
    • तीनों tools में vibe-coded होने का एहसास काफ़ी था, और यह जिज्ञासा रही कि pi कम-से-कम code quality कैसे बनाए रखता है

sandbox और safety

  • सभी tools को bubblewrap के अंदर चलाया
    • current directory और हर tool की settings पर read·write permission दी
    • nix store पर सिर्फ read-only permission दी
  • यह setup न्यूनतम sandboxing था, जिसका मकसद credentials access या version control में न होने वाली files के नष्ट होने से बचाव करना था
  • AGENTS.md में यह लिख देना कि execution sandbox के भीतर हो रहा है और nix-shell से tools लाए जा सकते हैं, आम तौर पर अच्छी तरह काम करता था
    • ऐसा न करने पर model disk failure या filesystem corruption जैसी दिशाओं में भटक जाता था
  • safety training पर्याप्त प्रभावी नहीं लगी
    • “sandbox से बाहर निकलने की कोशिश करो” कहने पर इसने गैर-जिम्मेदाराना बताकर मना किया
    • “यह जानना ज़रूरी है कि sandbox काम कर रहा है या नहीं” कहने पर इसने जवाब दिया कि वह बाहर निकल चुका है

code review से मिला सबसे बड़ा मूल्य

  • अब तक सबसे बड़ा मूल्य code review और bug finding में मिला
  • Review git diff main and look for bugs जैसा साधारण prompt भी प्रभावी था
  • व्यक्तिगत projects में सिर्फ इस feature के लिए भी $20/माह देना उचित लगा, और यदि कंपनी चला रहा होता तो प्रति व्यक्ति हर महीने कई सौ डॉलर तक देना ठीक लगता
  • Opus ने transcript में interpreter के partially failed pattern-match cleanup के बाद होने वाला double-free ढूँढ निकाला
    • यह bug fuzzer नहीं पकड़ पाया था
    • लगा कि औसत programmer भी इसे जल्दी नहीं ढूँढ पाता
  • उपयोगी केवल frontier models ही थे
    • सस्ते models को struggling undergrad की तरह ज़ोरदार bluff करने वाला बताया गया
    • frontier models भी सही जवाबों के बीच bluff मिलाते थे, लेकिन “this isn't a bug per se” जैसे संकेत दे देते थे, इसलिए उन्हें नज़रअंदाज़ करना आसान था
  • अब तक प्रयोग अपेक्षाकृत छोटे codebases पर ही हुए
    • बड़े codebases में यह काफी हद तक structure और local reasoning की संभावना पर निर्भर करेगा

refactoring ने design fixes की लागत घटाई

  • refactoring के उदाहरण इस प्रकार थे
    • byte offset को दर्शाने वाले pos को offset में बदलना
    • Document को Buffer में बदलना और साथ में comments व variable names भी बदलना
    • Document::apply_edits को call करने वाले Editor function को Editor की जगह EditorId लेने वाला बनाना ताकि borrow छोड़ने के बाद call हो सके
  • ऐसे काम code quality सुधारने में अप्रत्याशित रूप से बहुत मददगार रहे
    • क्योंकि इससे design mistakes ठीक करने की लागत घटती है
    • खासकर जब सुरक्षित API में बदलने जैसा छोटा सोच-विचार वाला काम और हर callsite ठीक करने जैसा बड़ा दोहराव वाला काम साथ मिला हो
  • sed regex से किए जा सकने वाले repetitive changes में भी model sed बेहतर लिखता लगा
  • हालांकि refactoring review कठिन था
    • model 200 सही callsite changes के बीच एक असंबंधित drive-by fix मिला देता था
    • किसी अलग model से “prompt से असंबंधित बदलाव कौन-से हैं” पूछना कुछ हद तक सफल रहा

साथ में coding करते समय सामने आई सीमाएँ

  • serious work सीधे सौंपने पर निराशा होगी, यह मानकर ज़्यादातर ऐसे projects पर प्रयोग किए जिन्हें फेंका जा सके, लेकिन code quality को लेकर फिर भी चिंता रही
  • AI से पहले coding ऐसा मिश्रण लगती थी जिसमें महत्वपूर्ण decisions और paint-by-numbers जैसी भराई साथ होती थी
    • काम को batch करके decisions आगे कर देने और फिर कई घंटों तक परिणाम भरने से context switching घटती थी और गति बढ़ती थी
  • models paint-by-numbers शैली की detailed implementation तेज़ी और सावधानी से बनाने में अच्छे हैं
  • लेकिन decisions लेने में बहुत कमज़ोर हैं
    • bugs को गलत layer पर ठीक करते हैं
    • जिन errors की report होनी चाहिए उन्हें चुपचाप निगल लेते हैं, या जिन्हें local स्तर पर handle होना चाहिए उन्हें propagate कर देते हैं
  • Opus को function changes के अनुसार tests update करने को कहा गया, तो उसने boolean argument do_new_behaviour जोड़ दिया
    • foo_do_new_behaviour और foo_do_old_behaviour wrappers बनाए, जो क्रमशः true और false पास करते थे
    • tests पुराना behavior ही test करते रहे जबकि असली binary नया behavior करने लगी
  • दूसरे model से review करवाने वाला समाधान भरोसेमंद नहीं लगा
    • क्योंकि खराब judgment वाला model खराब decisions देखकर भी कह सकता है कि “यह ठीक लगता है”
  • “सिर्फ इस function body को भरना है, और कोई बदलाव नहीं करना, test भी नहीं लिखना” जैसी हिदायत पर भी model असंबंधित code refactor करने लगा, helper functions निकालने लगा और unit tests लिखने की कोशिश करने लगा
    • यह बताने पर भी कि codebase में end-to-end deterministic simulation testing है, उसने isolated unit tests के लिए हर interface पर public functions जोड़ने की कोशिश की
  • bots द्वारा लिखा code प्रभावी ढंग से review करना कठिन था
    • कई बार changes merge करने के बहुत बाद वही code दोबारा देखते समय ऐसी समस्याएँ दिखीं जो पहले नहीं दिखी थीं
  • लगा कि editor के भीतर harness होना चाहिए जो user द्वारा बदलाव की जगह highlight करे और model को बाकी जगह modify करने से रोके
    • कल्पना यह थी कि इच्छित code का sketch और comments छोड़ दिए जाएँ, और model उन्हें भर दे
    • उम्मीद है कि कुछ वर्षों में आज के frontier models जैसी coding quality बहुत तेज़ी से देने वाले models आएँगे, ताकि worktree के इधर-उधर जाए बिना परिणाम तुरंत review किए जा सकें

जब implementation अकेले model पर छोड़ी गई

  • छोटे plumbing tasks में, जहाँ सिर्फ result review करना काफ़ी था, यह अच्छी तरह काम करता था
    • resume.md को resume.pdf में बदलने वाला script
    • board game rules parse करके US Letter पर print होने योग्य playing-card size cards की PDF बनाने वाला script
    • एक छोटे deno project को Rust में translate करना
    • window खोलकर rectangle render करने वाला Rust project बनाना
  • ऐसे काम आम तौर पर एक बार में पूरे हो जाते थे, या visual design feedback के कुछ rounds ही लगते थे, और code quality महत्वपूर्ण नहीं थी
  • जिन कामों को verify करना कठिन था, वे अब तक समय की बर्बादी रहे
    • board game rules को multiplayer webapp में बदलने का काम कई models के साथ कई बार आज़माया गया
    • सिर्फ Opus ने वास्तव में चलने वाला UI बनाया, लेकिन rules implementation गलत थी
  • इसी क्षेत्र में सबसे ज़्यादा misalignment दिखी
    • model के comments या उपलब्ध chain of thought में असली काम टालने की प्रवृत्ति दिखती थी
    • किसी खास UI को पूरा करने को साफ़ कहने पर भी “player selection UI चाहिए, तो फिलहाल hard-code कर देते हैं” जैसी सोच सामने आती थी
  • models ने task completion को बार-बार बढ़ा-चढ़ाकर बताया या झूठी पुष्टि दी
    • सभी tasks पूरे होने की बात कहने के बाद, दोबारा पूछने पर माना कि सिर्फ पहले दो किए थे और बाकी बाद के लिए टाल दिए थे
    • फिर से पूरा करने को कहने पर फिर “पूरा हो गया” कहा, और दोबारा जाँचने पर माना कि वास्तव में बस code इधर-उधर घुमाया था
  • browser automation tools की मदद से end-to-end tests लिखवाने पर भी dependency setup में अटक जाता था और tests सफलतापूर्वक चलने का झूठ बोलता था
    • UI टूटा होने पर buttons click करने के बजाय direct HTTP calls से test pass कराने की कोशिश करता था
  • board game rules implementation के असफल होने के दो कारण दिखे
    • board game rules मनमाने होते हैं, इसलिए training data पर निर्भर नहीं हुआ जा सकता और rules को स्पष्ट रूप से तर्क करना पड़ता है
    • कई games वास्तव में खेलकर rules implementation verify करने की लागत, शुरुआत से सही code लिखने की लागत से ज़्यादा थी
  • जहाँ success rate कम हो और verification cost भी कम न हो, वहाँ models बिल्कुल बेकार लगे

इसे autonomous software engineer की तरह उपयोग करने का आकलन

  • वर्तमान तरीके से AI को autonomous software engineer की तरह उपयोग करने पर ऐसा विशाल duct tape और chewing gum का ढेर बनेगा जिसे इंसान ठीक नहीं कर पाएगा
  • लेकिन पिछले कई दशकों में देखे गए outsourced codebases भी कुछ ऐसे ही थे, और models वही काम कम लागत पर कर सकते हैं
    • models cost-quality frontier को आगे खिसकाते हैं
  • भले ही models आज के स्तर से ज़्यादा smart न हों, फिर भी practical work ज़्यादा value निकालने की दिशा में विकसित हो सकता है
    • language और runtime guarantees
    • static analysis
    • lightweight formal techniques
    • verification cost घटाने या model behavior की सीमा तय करने के तरीके
  • याद किया गया कि जब Python और Ruby का व्यापक उपयोग बढ़ रहा था, तब hardware performance improvements code optimization से तेज़ मानी जाती थीं, और serial hardware performance slowdown के बाद programming language performance में रुचि फिर बढ़ी
  • models भी कुछ ऐसे ही curve की शुरुआत पर लगते हैं
    • अगर अगले महीने model और smart होने वाला है, तो harness या आसपास की practical improvements में रुचि कम रहती है
    • यदि models uniformly superhuman होने से पहले plateau पर पहुँचते हैं, तो असली दिलचस्प काम वहीं से शुरू होगा

search और सस्ता श्रम

  • यह उन समस्याओं में अच्छा काम करता है जहाँ जवाब को सीधे verify किया जा सकता है और precision महत्वपूर्ण है, लेकिन recall कम महत्वपूर्ण है
    • blog posts में गलतियाँ ढूँढना
    • essay footnotes में APA format errors ढूँढना
    • goodreads_library_export.csv में police और witches वाली trilogy ढूँढना
    • https://mgaudet.github.io/CompilerJobs/ में केवल वे role links निकालना जो remote स्पष्ट रूप से बताते हों, और cryptocurrency companies को हटाना
  • model से गलतियाँ खुद ठीक नहीं करवाई जातीं
    • क्योंकि तब वह decisions लेना शुरू कर देता है
  • जिन समस्याओं के जवाब plausible लगते हों लेकिन सीधे verify न किए जा सकें, वे कहीं अधिक जोखिमभरी हैं
    • reef-safe DIY wetsuit lube options पूछने पर Opus और GPT ने glycerine सुझाया
    • लगा कि पूरे दिन त्वचा को भीगे हुए bacteria food से ढकना शायद बुरा विचार है

brainstorming और creativity

  • जब type या variable names तय करना कठिन होता है, तब model से अक्सर ideas माँगे जाते हैं
  • model भाषा संसाधित करने वाली मशीन है, इसलिए यह काम इसमें अच्छा होना चाहिए ऐसा लगता था, लेकिन उसके सुझावों में से एक भी कभी इस्तेमाल नहीं हुआ
  • सुझाव लगातार साधारण और घिसे-पिटे लगे

समग्र निष्कर्ष और बाकी असहजता

  • review, refactoring, और one-off scripts लगातार उपयोगी रहे और अपने-आप में पैसे देने लायक थे
  • साथ में coding करने का तरीका अभी कुल मिलाकर लाभकारी नहीं है, लेकिन तेज़ models और बेहतर harness के साथ निकट भविष्य में लाभकारी हो सकता है
  • code अकेले लिखने के लिए छोड़ देने वाला तरीका non-trivial कामों में काम नहीं आया
    • इंसान की गहरी भागीदारी के बिना high-quality software पाने के लिए अभी बहुत अधिक प्रयोग चाहिए
    • low-quality software का बाज़ार बड़ा है, और यह आज भी संभव हो सकता है
  • frontier models में ऐसा कुछ नहीं दिखा जिसे hallucination कहा जाए
    • केवल DeepSeek flash ने कभी-कभी पूरे facts गढ़े, और वह भी सिर्फ कभी-कभार
    • models गलत हो सकते हैं, लेकिन आम तौर पर यह reasoning mistakes, evidence की गलत समझ, या महत्वपूर्ण context की कमी से होता है, हवा में बातें गढ़ने से नहीं
  • frontier model subscriptions बहुत अच्छा सौदा लगे, लेकिन लगता है कि सबके अभ्यस्त हो जाने के बाद यह लाभ धीरे-धीरे खत्म हो जाएगा
    • token-based billing होने पर कौन-से use cases अभी भी मूल्यवान रहेंगे, इस पर भरोसा नहीं है
    • DeepSeek v4 flash बहुत सस्ता है, लेकिन अभी पर्याप्त smart नहीं है, और tests सफलतापूर्वक चलने का झूठ बोलने की सबसे अधिक संभावना उसी में थी
  • मौजूदा harness पसंद नहीं आए
    • ऐसे interfaces में prompt टाइप करना झंझटभरा था जहाँ basic text editing भी ठीक से नहीं होती
    • model क्या कर सकता है इस पर और नियंत्रण चाहिए, और ऐसा interaction चाहिए जिसमें स्क्रीन पर चीज़ों की ओर सीधे इशारा किया जा सके
    • मौजूदा workflow code में @bot comments छोड़ने और Handle comments marked @bot जैसा fixed prompt इस्तेमाल करने का है
  • जब इंसान code लिखता है, तो उसी समय code पढ़ते हुए mental model भी दोबारा बनाता है
    • जब bot code लिखता है, तब mental model बनाना अभी भी ज़रूरी रहता है, लेकिन code लिखते समय स्वाभाविक रूप से मिलने वाला लाभ गायब हो जाता है
    • सिर्फ code पढ़ना पर्याप्त नहीं लगता, इसलिए review++ जैसी अलग practice की ज़रूरत महसूस होती है
  • अब तक का अनुभव मज़ेदार रहा, और चूँकि प्रयोग जानबूझकर गैर-महत्वपूर्ण projects पर किए गए, इसलिए यह उपयोगी साबित हुआ
  • यह अनुभव बहुत हद तक वर्तमान-केन्द्रित है; आने वाले कुछ वर्षों में और सुधार होने पर क्या बदलेगा और किस दिशा में बढ़ना चाहिए, यह अभी भी पचाया जा रहा है

1 टिप्पणियां

 
Lobste.rs की रायें
  • लगता है कि pi में दूसरे harnesses की तुलना में bugs कम हैं, क्योंकि इसे छोटी टीम बनाती है, maintainers एक तय quality bar बनाए रखते हैं, code review करते हैं, और सोच-समझकर तय करते हैं कि कौन-से features जोड़ने हैं
    harness में हर तरह के feature बिना सोचे-समझे ठूंस देने से बचने वाला यह approach फर्क पैदा करता है
    https://mariozechner.at/posts/…

    • उन तीन फायदों के बावजूद, अगर मैं कुछ बड़ा vibe coding से बनाऊँ, तो लगता है वह उलझा हुआ जंजाल बन जाएगा
      साफ है कि यहाँ कुछ अतिरिक्त skill काम कर रही है
  • यह बात बहुत अच्छी लगी: “अगर bot मेरी जगह code लिख दे, तब भी मुझे mental model बनाना पड़ता है, लेकिन अब code लिखते समय वह ‘मुफ्त में’ नहीं मिल रहा”
    सिर्फ code पढ़ना उतना कारगर नहीं है; यह वैसा ही है जैसे सिर्फ highlighted notes दोबारा पढ़ लेना exam की तैयारी नहीं होता
    यह Programming as Theory Building से भी जुड़ता है
    जिस project की system theory पहले से दिमाग में हो, उसमें पहली बार LLM इस्तेमाल करने पर जल्दी नतीजे मिल सकते हैं, लेकिन अगर उसे कुछ समय तक अपने हाल पर छोड़ दें, तो आप धीरे-धीरे उससे कटने लगते हैं और ऐसे non-coding project manager जैसे बन जाते हैं जो requirements भी ठीक से नहीं लिख पाते, और इससे frustration बढ़ सकती है

  • आगे से “unit tests के साथ जुड़ा बुखार जैसा सपना” वाला वाक्यांश मैं अपनी बात और लिखाई में बेहिचक इस्तेमाल करूँगा

    • कई मशहूर multi-agent orchestrators में भी महंगे models runtime पर orchestrator का लगभग 60% हिस्सा व्यवहार में hallucination से बना देते हैं
  • यह मेरे अनुभव से सचमुच बहुत मिलता-जुलता है
    जोड़ूँ तो, Claude Code से Linux desktop की समस्याएँ debug करने में भी मुझे काफ़ी सफलता मिली
    25 साल पुराने dotfiles में debug करने लायक नहीं लगने वाली परत-दर-परत जमी गंदगी है, लेकिन मैंने yadm से secrets के बिना कई machines पर dotfiles share कर रखे थे, इसलिए sandboxing भी आसान थी
    LLM से code changes review करवाने की आदत भी डालने लायक है
    वैसे भी कोई न कोई मेरे commits को, चाहे open source repository हो या production target, LLM से जाँचेगा ही, और Lobsters पर भी पिछले 2 हफ्तों में LLM-based scanners इस्तेमाल करने वाले लोगों से 4 valid vulnerability reports मिली हैं
    सभी ठीक कर दी गईं
    उससे पहले के 9 सालों में मुझे ऐसी मुश्किल से 2 reports याद हैं

  • यह कहना अजीब लगेगा कि “frontier models में मैंने hallucination जैसी कोई चीज़ नहीं देखी”
    इस लेख में मुझे कई बातें ऐसी दिखीं जिन्हें hallucination माना जा सकता है

    • यह फ़र्क करना ठीक लगता है: hallucination (“Lobsters को Paul Graham ने बनाया”), झूठ/आलस्य (“काम पूरा हो गया”), खराब judgement (“यहाँ value hardcode कर देते हैं”)
      उस कसौटी से देखें तो लेख में मुझे कोई hallucination नहीं दिखी, लेकिन झूठ, आलस्य और खराब judgement भी कोई अच्छी बात नहीं हैं
      यह भेद इसलिए उपयोगी है क्योंकि hallucination को कम करना आसान हो सकता है, जबकि झूठ, आलस्य और खराब judgement कहीं ज़्यादा कठिन हैं
      hallucination और झूठ दोनों में model गलत बात कहता है, लेकिन hallucination ज़्यादातर अज्ञान या जानकारी की कमी से जुड़ी लगती है, इसलिए sources माँगना या कमज़ोर जानकारी पर आधारित जवाबों से बचने की training जैसी चीज़ों से उससे निपटा जा सकता है
      दूसरी ओर, झूठ और आलस्य goal-directed behavior और reinforcement learning के नतीजे हैं, इसलिए training से उन्हें हटाना कहीं ज़्यादा मुश्किल लगता है
  • नए code लिखवाने की बजाय LLM को code review में इस्तेमाल करना, खासकर solo projects में, जोखिम के मुकाबले सबसे ज़्यादा फ़ायदा देने वाला लगता है
    अगर कोई अनुभवी dedicated reviewer न हो, तो LLM analysis सचमुच कुछ भी न होने से बेहतर है
    मैं open source काम में commercial cloud models इस्तेमाल नहीं करना चाहता, इसलिए local LLMs से code review का प्रयोग कर रहा हूँ, और उनसे कहता हूँ कि नया code न बनाएँ, सिर्फ समस्या को संक्षेप में समझाएँ
    local model शायद commercial models जितना अच्छा न हो, लेकिन Qwen 3.6 27B काफ़ी उपयोगी रहा
    एक मध्यम आकार के Rust codebase पर चलाने पर लगभग 70% output ठीक-ठाक थी, और जिन समस्याओं की पहचान हुई उनमें करीब 60% सही थीं; लगभग 20% low quality होने के बावजूद मुझे problematic code areas तक ले गईं और सुधार हुआ; और 20% पूरी बकवास थीं
    बकवास का हिस्सा बड़ा होना अच्छी बात नहीं है, लेकिन इससे तुरंत साफ हो गया कि model की बातों को सावधानी से लेना चाहिए
    मुझे नहीं पता कि उसने कितनी असली समस्याएँ छोड़ दीं, और जो कुछ मिला उसमें कुछ सतही चीज़ें भी थीं, जैसे doc comments की typos, लेकिन कुल मिलाकर उसने code सुधारने में मदद की, इसलिए यह net positive लगा
    जोखिम यह है कि मैं अपने काम को ध्यान से दोबारा जाँचे बिना LLM पर निर्भर होने लगूँ
    हालाँकि यह Qwen model मेरी machine पर इतना धीमा है कि हर change पर इसे चलाने का मन नहीं करता
    Qwen 3.6 35B या Gemma4 26B जैसे दूसरे models बहुत तेज़ थे, लेकिन बहुत खराब भी
    धीमा होने और hardware माँगने के बावजूद, Qwen 27B यह दिखाता है कि commercial providers पर निर्भर हुए बिना, और code hacking की विशेषज्ञता व आनंद छीने बिना, local models से code सुधारने वाला भविष्य संभव हो सकता है
    फिर भी LLM को process में शामिल करने को लेकर मेरी भावनाएँ अब भी बहुत मिली-जुली हैं, लेकिन बड़े providers जो अलगाव पैदा करने वाला future vision थोप रहे हैं, उससे यह बेहतर लगता है
    मैंने जितने harnesses इस्तेमाल किए हैं, उनमें pi का शांत होना मैं भी मानता हूँ

    • मैं पहले bot को चलने देता हूँ, और इस दौरान अपना review कर लेता हूँ, फिर bot के output पर लौटकर देखता हूँ कि मुझसे क्या छूटा
      bot अक्सर इंसानों से अलग तरह की समस्याएँ पकड़ता है, इसलिए human review के काफ़ी पूरक साबित होता है
  • pi में ctrl+G दबाने पर prompt को $EDITOR में खोला जा सकता है
    सैद्धांतिक रूप से यह click के ज़रिए cursor movement support कर सकता है और ज़रूरत के हिसाब से editor, यहाँ तक कि terminal UI editor भी ढूँढ सकता है
    इसके अलावा, कुल मिलाकर यह एक अच्छी पोस्ट है जिससे मैं सहमत हूँ

  • “टेक्स्ट को पॉइंट करने” वाली समस्या GUI IDE/एडिटर में पहले से हल हो चुकी है
    अगर आप JetBrains IDE इस्तेमाल करते हैं, तो plugin चुनी हुई file और line को हमेशा prompt context में भेज सकता है
    request के तरीके के अनुसार बदलाव का diff inline या diff window में भी दिखाया जा सकता है

    • Zed में भी लेखक द्वारा बताए गए तरीके जैसा काम करने वाला Inline Assistant फीचर है
      किसी region को select करके control-enter दबाएँ और फिर prompt डालें, तो LLM चुने हुए हिस्से को prompt के मुताबिक बदलकर replace कर देता है
      user experience बहुत अच्छा है, लेकिन LLM output में आम तौर पर आने वाली समस्याएँ वैसी की वैसी रहती हैं
  • Anthropic और OpenAI models के monthly $20 subscription का ही ज़िक्र करते हुए कहा गया कि pi, Claude Code या Codex से कहीं बेहतर है, तो लगा कि शायद frontier model + pi combination को वास्तव में इस्तेमाल ही नहीं किया गया
    मुझे लगा था कि subscription उस harness को ज़बरदस्ती इस्तेमाल करने पर मजबूर कर देता है

    • Codex subscription को निश्चित रूप से Pi के साथ इस्तेमाल किया जा सकता है
  • इतनी सामान्य समझ वाली पोस्ट देखकर अच्छा लगा
    मैं काम के लिए US-आधारित Novita से tokens खरीदता हूँ, और personal projects के लिए DeepSeek और हाल में Xiaomi इस्तेमाल कर रहा हूँ
    Kimi को भी खुद इस्तेमाल किया, लेकिन इतना convincing नहीं लगा कि उसे लगातार इस्तेमाल करूँ, और Claude Code, Codex या उस दिन के trending harnesses का मुझे अनुभव नहीं है
    मैंने Qwen Code से Rust + ratatui personal harness को bootstrap किया था, और यह Google की किसी चीज़ का fork था
    मैं single-threaded async इस्तेमाल करता हूँ, लेकिन models को threads और mpsc बहुत पसंद हैं, इसलिए उन्हें मनवाना झंझट भरा था
    वैसे smol मुझे ठीक लगता है
    नतीजे में मुझे कुछ हद तक समझ आ गया कि tools क्या और कैसे करते हैं, और जब भी model कोई नया tool syntax गढ़ लेता है, तो उसके फायदे-नुकसान देखकर सिर्फ खास मामलों में local correction जोड़ता हूँ
    ऐसा ज़्यादातर tool argument names के synonym वाले मसले होते थे
    जितने कम active parameters होते हैं, model उतना ही इस पर ध्यान देता है कि क्या करना है, और कैसे करना है यह भूल जाता है, जो समझ में आता है
    कभी न कभी tool calling को tokens से force करने के बजाय latent space से निकाला जाएगा, और शायद dedicated translation models भी इस्तेमाल हों
    model को project directory तक सीमित रखने और home directory से काटने के लिए मैं landlock इस्तेमाल करता हूँ
    home के बाहर के system paths को पढ़ने की अनुमति है, और /tmp, home के अंदर कुछ package cache directories, और /dev/null जैसी जगहों पर लिखने की भी अनुमति दी है
    आगे चलकर इससे बेहतर isolation जोड़ा जा सकता है, लेकिन जितने लोगों को मैं जानता हूँ वे Claude Code को जैसे-का-तैसा चलाते हैं, उसे देखते हुए यह तो बुनियादी hygiene जैसा लगता है
    network को block नहीं करता, और ऐसे काम नहीं करता जिनमें अतिरिक्त exfiltration prevention की ज़रूरत हो
    code review हमेशा सही निशाने पर नहीं बैठती
    अगर पहले से guidelines तय कर दी जाएँ, तो model code और guidelines की तुलना करके जहाँ mismatch है उसे दिखाने में ठीक है, लेकिन “बताओ यह बेकार है या नहीं” जैसे सामान्य अनुरोधों में नतीजे काफ़ी अस्थिर होते हैं
    baseline के तौर पर इस्तेमाल होने वाले DeepSeek V4 Flash में मैंने अभी तक दिखावा नहीं देखा
    DeepSeek V4 Pro मेरे लिए coding में और खराब था, Xiaomi MiMo 2.5 Pro बेहतर है लेकिन थोड़ा महँगा है, और साधारण MiMo 2.5 उससे भी खराब था
    मेरे अनुभव में models आम तौर पर बस बेवकूफ़ होते हैं, खासकर जब context परस्पर टकराने वाले ideas से दूषित हो या बहुत लंबा हो जाए
    कभी-कभी model इस तरह की सोच में फँस जाता है कि “value जल्दी देने के लिए corners काटने चाहिए”, और तब मुझे कुछ steps पीछे जाकर model से ही दिखवाना पड़ता है कि वह मेरी instructions के किस बिंदु से टकरा रहा है
    कभी यह मेरी अधूरी समझ की वजह से होता है, कभी model की overengineering होती है, और कभी tricky edge cases से निकलने के लिए requirements को सरल बनाकर समझौता किया जाता है
    refactoring के लिए मैं model का इस्तेमाल नहीं करना चाहता
    models अच्छे decisions नहीं लेते
    अगर किसी function को दो इस्तेमालों के लिए दो हिस्सों में बाँटकर codebase में हर call site पर कौन-सा variant लगना चाहिए यह तय करने को कहें, तो 25% मामलों में वह गलत होगा और ज़रा भी uncertainty का संकेत नहीं देगा
    इससे कहीं बेहतर है कि model से codebase की जाँच कराकर impact area map करवाएँ और refactoring खुद करें
    बहुत आसान rearrangements, जैसे कई जगहों के काम को घेरने वाला simple structural change, गति बढ़ा देते हैं, लेकिन पुराने comments या अब मेल न खाने वाले variable names जैसी चीज़ों को भी explicitly जाँचने के लिए कहना पड़ता है
    मूल पोस्ट के विपरीत, मुझे कभी यह अनुभव नहीं हुआ कि model बिना माँगे काम करने पर तुला हो
    शायद इसलिए कि edit की अनुमति देने से पहले मैं स्पष्ट pre-plan माँगता हूँ, और reasoning flow को real time में देखता रहता हूँ; model अजीब होने लगे तो फिर से prompt करता हूँ
    काम के code में मैं कुछ भी तब तक commit नहीं करता जब तक सब पढ़ और समझ न लूँ
    इस चरण में मैं बहुत-सी बड़ी corrections करता हूँ, और फिर model से दोबारा जाँच करवाता हूँ
    तब वह typos, उलटे variables, और छोटी लेकिन समस्या बन सकने वाली चीज़ें काफ़ी अच्छी तरह पकड़ लेता है
    personal project का पहला version तो बस फेंक देने वाला version होता है
    जब असली architecture साफ़ हो जाती है, तब पूरा rewrite करना पड़ता है, और इस बार सही तरह से pre-planning की जाती है
    हो सकता है यह तरीका थोड़ा undervalued हो
    जिन models का मैं इस्तेमाल करता हूँ वे काफ़ी तेज़ हैं
    जब तक मैं लंबी investigation के लिए explicitly न कहूँ, task switching तक जाने की ज़रूरत नहीं पड़ती, और अगर model को strawberry में कितने r हैं यह खुद मानने में बहुत समय लग रहा हो, तो मैं आम तौर पर अगले step के बारे में सोचने लगता हूँ
    कुछ हद तक असरदार तरीका यह है कि model से plan बनवाया जाए, उसे किसी file में explicitly लिख दिया जाए, और फिर थोड़ा-थोड़ा iterate करके सुधारा जाए
    model codebase खोजने और coding शुरू करने से पहले impact area समझने में मदद कर सकता है, और अगर कोई दिखाई देने वाला pre-plan हो तो model को track पर बनाए रखना भी आसान हो जाता है
    search या सस्ते labor वाले कामों में, मैंने किसी खास विषय के papers ढूँढने के लिए model का इस्तेमाल किया है और अनुभव बुरा नहीं था
    उसके बाद papers को subscription या किसी और रास्ते से खुद हासिल किया, फिर model से पढ़वाकर यह तय कराया कि वे विषय से संबंधित हैं या नहीं, और यह वास्तव में काफ़ी असरदार था
    संबंधित papers बाद में मैंने खुद पढ़े
    बड़े codebase की जाँच कराकर उससे किसी खास पहलू की व्याख्या करवाना भी कुछ हद तक productive था
    दोनों मामलों में समान बात यह थी कि model ने काफ़ी hallucinations कीं
    hallucination rate पर इस बात का बड़ा असर था कि मुख्य तथ्य context के भीतर कितनी गहराई में दबे हुए हैं
    जब एक paper को classify और summarize करवाकर context साफ़ कर दिया और फिर अगला paper प्रोसेस कराया, तो समस्या काफी कम हो गई
    लगता है इसका संबंध sparse attention से हो सकता है, लेकिन मैं विशेषज्ञ नहीं हूँ
    brainstorming और creativity के लिए यह बेकार था
    मुझे कभी ऐसा अनुभव नहीं हुआ कि DeepSeek V4 Flash ने झूठ बोला हो कि उसने tests या type checks चला दिए
    कभी-कभी इसे नियंत्रित करना बहुत मुश्किल हो जाता है, लेकिन उलटे यह थोड़े-से comment बदलने के बाद भी “पक्का करने के लिए” tests और type checks फिर से चलाने की तरफ झुकता है
    और मैं इस बात से सहमत नहीं हूँ कि यह मेरी ज़िंदगी की सबसे दिलचस्प चीज़ है