4 पॉइंट द्वारा GN⁺ 6 일 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 2 दिनों के प्रयोग के नतीजे में Claude Fable 5 को "relentlessly proactive" कहना उपयुक्त लगा
  • सिर्फ स्क्रीनशॉट और एक-पंक्ति प्रॉम्प्ट से इसने local development server चलाया, असली browser को operate किया, और measurement code insert करके CSS bug के कारण का पता लगाया
  • Fable ने Playwright, Firefox, WebKit, Safari के बीच जाकर bug को reproduce करने की कोशिश की, और असफल होने पर असली browser window खोजकर खुद screenshot automation तैयार किया
  • / key से खुलने वाले modal dialog को test करने के लिए इसने Datasette template में JavaScript insert किया और window load होने के बाद keyboard event trigger करके ज़रूरी state बनाई
  • page के अंदर के measurement values पाने के लिए इसने Python http.server आधारित CORS collection server बनाया और Web Component के shadow DOM के अंदर <textarea> की जानकारी JSON में save की
  • शक्तिशाली coding agents terminal में वह सब कर सकते हैं जो कोई user कर सकता है, इसलिए sandbox के बाहर execution prompt injection और data leak के जोखिम को बढ़ाता है

Claude Fable 5 की debugging प्रक्रिया

  • Datasette Agent के jump menu chat prompt में आए अनावश्यक horizontal scrollbar की जाँच शुरू की गई
  • Claude Fable 5 ने लक्ष्य हासिल करने के लिए कई तरह की techniques को सक्रिय रूप से इस्तेमाल किया
  • input एक screenshot और Look at dependencies to help figure out why there is a horizontal scrollbar here वाला एक-पंक्ति prompt था
  • यह मानते हुए कि समस्या का कारण Datasette Agent की dependencies, खासकर Datasette itself में हो सकता है, पहले dependency code देखने को कहा गया
  • Claude Code ने browser automation के लिए कोई स्पष्ट निर्देश न होने पर भी सामान्य Firefox window खोली और उस dialog तक पहुँचा, फिर Safari window भी खोलकर जाँच जारी रखी

Browser screenshot automation

  • Fable ने uv run --with pyobjc-framework-Quartz का उपयोग करके browser window screenshots लेने का अपना तरीका तैयार किया
  • Python से मशीन की सभी windows को iterate किया गया और window name में "textarea" जैसी अपेक्षित string वाली Safari windows को filter किया गया
  • window number जैसे integer identifier 153551 को खोजने के बाद screencapture CLI से PNG save किया गया
  • /tmp/textarea-scrollbar-test.html जैसे temporary HTML page लिखे गए और Safari में खोलकर screenshot लिया गया
  • उदाहरण command screencapture -x -o -l 153551 /tmp/safari-cases.png था

Modal dialog का automatic execution

  • test किया जा रहा modal सिर्फ click या keyboard shortcut से खुल सकता था, और Safari में mouse movement या keyboard shortcut चलाने का कोई स्पष्ट mechanism नहीं दिख रहा था
  • Claude application source code वाले folder में चल रहा था और Datasette local development server चलाने लायक उसकी structure समझ चुका था
  • इसने Datasette template में JavaScript जोड़ा ताकि window खुलने के बाद / key input simulate किया जा सके
  • यह code window load होने के 1.2 सेकंड बाद / key का keydown event trigger करके modal dialog खोलने वाला shortcut चलाता था
<script>  
window.addEventListener("load", function () {  
  setTimeout(function () {  
    document.dispatchEvent(new KeyboardEvent("keydown", {key: "/", bubbles: true}));  
  }, 1200);  
});  
</script>  

Page के अंदर measurement values इकट्ठा करना

  • Claude को page पर JavaScript चलाकर सीधे measurements लेने थे, और इसके लिए इसने CORS के ज़रिए जानकारी प्राप्त करने वाला अपना web application लिखा
  • Python standard library http.server का उपयोग करके 127.0.0.1:9999 पर local server चलाया गया
  • server JSON वाले POST requests लेकर उन्हें /tmp/diag.json में लिखता था, और Access-Control-Allow-Origin: * header भेजता था ताकि दूसरे domain का code भी उससे communicate कर सके
  • Claude ने browser में load होने वाले template में JavaScript insert किया और <navigation-search> Web Component के अंदर <textarea> को ढूँढा
  • insert किए गए code ने devicePixelRatio, scrollWidth, clientWidth, whiteSpace, width को measure करके local server पर भेजा
const host = document.querySelector("navigation-search");  
const ta   = host.shadowRoot.querySelector("textarea");  
const cs   = getComputedStyle(ta);  
fetch("http://127.0.0.1:9999/diag";, {  
  method: "POST",  
  body: JSON.stringify({  
    dpr: window.devicePixelRatio,  
    scrollWidth: ta.scrollWidth, clientWidth: ta.clientWidth,  
    whiteSpace: cs.whiteSpace, width: cs.width,  
  }),  
});  

Opus में switch और fix verification

  • कई techniques खोज निकालने के बाद Fable किसी अदृश्य guardrail से टकराया और Opus पर downgrade हो गया
  • Opus को पूरी conversation history की access थी और उसने Fable द्वारा खोजी गई techniques का उपयोग जारी रखा
  • इसके बाद Opus ने समस्या ढूँढी, test किया, verify किया और fix commit पूरा किया
  • Opus ने session में असली browsers के लिए इस्तेमाल की गई automation techniques और executable code examples को /tmp/automation-report.md में संक्षेपित किया
  • यह report अलग gist के रूप में share की गई, और पूरा Claude Code terminal log भी public किया गया

किए गए पूरे काम की समीक्षा

  • Claude Fable 5 और Claude Code ने local development server चलाने का तरीका खोज लिया और execution के लिए ज़रूरी fake environment variables भी सेट किए
  • Playwright Chrome session चलाया गया, और Chrome की visible scrollbar setting को defaults write com.google.chrome.for.testing AppleShowScrollBars Always से चालू करके बाद में फिर बंद किया गया
  • Playwright के Firefox और WebKit भी आज़माए गए, लेकिन bug reproduce नहीं हुआ
  • यह पता लगाया गया कि default browser Safari है, और textarea-scrollbar-test.html HTML document बनाया गया
  • असली Firefox में test document खोला गया, और osascript access को “osascript is not allowed assistive access” के कारण block कर दिया गया
  • pyobjc-framework-Quartz workaround खोजकर window-number आधारित screenshot flow बनाया गया
  • site template में JavaScript जोड़कर / key trigger की गई, और Python CORS server से JSON data प्राप्त किया गया
  • Web Component के shadow DOM के भीतर जाकर ज़रूरी जानकारी खोजी गई और Safari में bug के कारण की पुष्टि की गई
  • custom template में संभावित fix लागू करके उसका behavior verify किया गया, फिर समस्या के समाधान की report दी गई

लागत का अनुमान

  • इस्तेमाल किया जा रहा plan प्रति माह $100 वाला Claude Max plan है, और Anthropic ने कहा कि 22 जून तक Fable के लिए उदार allowance दिया जाएगा, उसके बाद पूरा API pricing charge किया जाएगा
  • AgentsView का उपयोग खर्च track करने के लिए किया गया, और यदि पूरी कीमत दी जाती तो उस session की लागत लगभग $12.11 निकलती
  • session output 68606, maximum context 113178, और उपयोग किए गए models claude-fable-5 तथा claude-opus-4-8 थे
  • Fable, यदि लागत पर नज़र न रखी जाए, तो CSS debugging के लिए नए तरीके बनाते हुए लगभग $12 का token cost आसानी से खर्च कर सकता है

Sandbox की ज़रूरत

  • सिर्फ दो पंक्तियों के CSS fix के लिए ज़रूरी जानकारी पाने में Fable ने आखिरकार चरम तरीके तक अपना लिए, यह प्रभावशाली था
  • coding agents वह सब कर सकते हैं जो कोई user terminal में command डालकर कर सकता है, और frontier models को बहुत सारी techniques पता होती हैं
  • अगर malicious instructions, code या issue thread के अंदर prompt injection, या terminal में लापरवाही से paste की गई सामग्री होती, तो यह data leak या दूसरे नुकसान में बदल सकता था
  • sandbox के बाहर coding agent चलाना हमेशा बुरा विचार है, और इसे coding agent security incidents के प्रमुख कारणों में गिना जाना चाहिए
  • Fable अधिक smart होने के कारण malicious instructions पर ज़्यादा शक कर सकता है, लेकिन एक बार फँसने पर उसकी लगातार proactive प्रकृति नुकसान को बड़ा बना सकती है

1 टिप्पणियां

 
GN⁺ 6 일 전
Hacker News राय
  • यह मानवीय agency के घातक नुकसान का एक प्रभावशाली उदाहरण लगता है, और असल commits भी काफ़ी कुछ उजागर करते हैं [0]
    लेखक horizontal scrollbar छिपाना चाहता था। कोई ठीक-ठाक junior frontend developer तुरंत पूछता, “overflow-x: hidden; कहाँ डालना है?” पूरा समाधान बस इतना था कि browser में “Inspect element” दबाकर CSS class ढूँढो, फिर code में (rip)grep से उसकी location खोजो और एक लाइन जोड़ दो
    कोई ज़्यादा proactive programmer यह भी पूछता कि आखिर खाली textbox में ऐसा कौन-सा content है जो overflow कर रहा है, root cause के बजाय symptom छिपाने वाले workaround दो जगह क्यों डालने पड़ रहे हैं, और क्या textarea को सिर्फ़ एक बार style करना बेहतर नहीं होगा
    [0] https://github.com/datasette/datasette-agent/commit/a75a8b72...

    • CSS की बारीकियाँ ठीक करने से पहले, यह भी पूछा जा सकता था कि कई JavaScript के अंदर का static CSS __init__.py के अंदर छिपा क्यों है [0]
      Claude के साथ मेरे अनुभव में आम तौर पर अच्छी तरह structured code मिला है, इसलिए यह सच में थोड़ा चौंकाने वाला है। हालाँकि मैं इसे proper vibe coding से ज़्यादा, एक robot engineer के साथ दोस्ताना Socratic बहस जैसा मानता हूँ
      [0] https://github.com/datasette/datasette-agent/blob/main/datas...
    • यह model उस हिस्से में नतीजे देता दिखता है जो पहले से अच्छी तरह scale हो रहा था, यानी request किए गए काम की लंबाई और complexity। लेकिन जिस हिस्से में अब तक scaling नहीं हो रही थी, यानी common sense, discernment, judgment, वहाँ कोई बड़ा सुधार नहीं दिखता
    • बिल्कुल सही बात। Simon ने ऐसे छोटे काम LLM को देकर, अतिरिक्त जानकारी के आधार पर abstraction को evaluate और improve करने का मौका छोड़ दिया। इसके बजाय उसने agent को 12 डॉलर खर्च कर बदलाव करने दिया और खुद कुछ भी नहीं सीखा
    • Fable में अपने बदलाव verify करने की प्रवृत्ति दिखती है, और यह अपने आप में बहुत अच्छी बात है। Opus से वह काम करवाने के लिए जो Fable बिना prompt के कर लेता है, काफ़ी prompts देने पड़ते हैं
      मैं junior developer से भी ठीक यही उम्मीद करता हूँ: पहले verify करो कि bug सच में है, फिर उसे ठीक करने का तरीका ढूँढो, और उसके बाद confirm करो कि bug ठीक हुआ या नहीं
      समस्या, जैसा कि blog post ने भी सही पकड़ा, यह है कि ऊपर की permission चाहिए तो रुककर पूछने के बजाय यह लगातार अपने दम पर hacky workaround ढूँढता रहता है। अगर इसे human developer से तुलना करें, तो यह वैसा है जैसे किसी third-party sandbox की access चाहिए हो, लेकिन senior से credentials माँगने के बजाय वह खुद शुरू से अपना sandbox बनाने लगे
    • सच कहें तो यह किसी भी impulse की over-monetization जैसा लगता है
      मुझे वह समय याद आता है जब online दुनिया से जुड़ने पर प्रति मिनट पैसे लगते थे। तब meter चलते रहने देने की incentive बहुत होती थी; यह भी मुझे कुछ वैसा ही लगता है
  • यह कि लोग साफ़-साफ़ मानते हुए भी कि “coding agent को sandbox के बाहर चलाना हमेशा बुरा विचार था”, फिर भी ऐसा करते रहते हैं — यह बात लगातार उलझाने वाली और हैरान करने वाली लगती है
    यह वैसा है जैसे कोई passenger seat पर बैठकर पैर dashboard पर रखे हुए अपना वीडियो पोस्ट करे और कहे, “याद रखिए, अगर ऐसा करते हुए accident हो जाए तो airbag आपकी टांगें तोड़ सकता है या इससे भी बुरा कर सकता है! अच्छा हुआ मेरे साथ ऐसा नहीं हुआ!”

    • दिलचस्प उदाहरण चुना गया है। कार चलाना, सभी safety rules मानने पर भी, हमारी रोज़मर्रा की गतिविधियों में लगभग सबसे जोखिमभरी चीज़ों में से एक है। फिर भी हम आखिरकार यह मानते हैं कि फ़ायदा जोखिम से बड़ा है
    • आजकल हर किसी से कहा जाता है कि वह एक दिन में होने वाले काम को 10 गुना बढ़ाए। उस बिंदु पर safety checks खिड़की से बाहर फेंक दिए जाते हैं
    • मैंने कुछ महीनों से ऐसा करके देखा है, और ईमानदारी से कहूँ तो agent क्या करेगा यह अप्रत्याशित नहीं होता
      असली समस्या यह है कि लोग prompt देने के तरीके में बहुत अलग होते हैं
      उदाहरण के लिए, मैं कह सकता हूँ, “इस X cluster में इस service के k8s pod पर इस annotation के कई variants टेस्ट करो। इससे Y theory साबित होती है।” लेकिन मेरा सहकर्मी कहेगा, “Y theory टेस्ट करो।” अगर यही बात दो junior engineers से कही जाए, तो एक production environment में random कोशिशें कर सकता है, और दूसरा local tests चला सकता है। यह बिना निर्देश वाला अनुरोध है — “जो करना हो करो, बस पता लगाओ” — और agent इसे ऐसे पढ़ता है जैसे किसी junior पर “पता लगाओ” का दबाव तो बहुत डाला गया हो, लेकिन boundaries बताई ही न गई हों
    • यह भी उलझाने वाली बात है कि लोग सोचते हैं कि उनके पास effective sandbox है, जबकि उस sandbox के भीतर agent के पास अक्सर सारा code, GitHub, और unlimited web access होता है
    • मुझे पता है कि VM वाला समाधान मौजूद है, लेकिन मैं अलग OS username claude रखने वाले तरीके से संतुष्ट हूँ
      मेरे dotfiles जैसे ही हैं, बस secrets नहीं हैं। मेरी home directory 0700 है, claude की अलग SSH key है, उसे मैंने अपने GitHub profile में जोड़ा है लेकिन उस पर passphrase लगा है और push/pull मैं खुद करता हूँ। अलग Postgres dev/test user और database भी है, और वह superuser नहीं है
      यानी मैं उसे project के दूसरे developer की तरह treat करता हूँ। अगर उसे sudo से कुछ चलाना हो तो वह मुझसे पूछता है। कई बार हम दोनों parallel में एक ही काम भी कर सकते हैं। आखिर Unix मूल रूप से multi-user system होना ही था
      एक काम की तरकीब यह है कि उसके git repos में ऐसा एक extra remote रखा जाए:
      paul ssh://paul@localhost/~/src/example (fetch)
      paul ssh://paul@localhost/~/src/example (push)
      इससे उन चीज़ों पर साथ काम करना आसान हो जाता है जिन्हें मैं अभी share करने के लिए तैयार नहीं हूँ
      यह setup काफ़ी आरामदायक है। बस Linux privilege escalation bugs की चिंता रहती है। मुझे भरोसा नहीं कि AI यह समझता है कि vulnerability exploit करना allowed नहीं है। अपने पहले job में, जब काम बहुत urgent था, तब मुझे याद है कि मैंने आधिकारिक रूप से httpd.conf edit करने तक सीमित sudo permission बढ़ाने के लिए vim की :! सुविधा का गलत इस्तेमाल किया था। आजकल automatic security updates होने के बावजूद मैं packages को हाथ से और ज़्यादा बार upgrade करने लगा हूँ। नहीं लगता कि Opus security vulnerabilities ढूँढने की मेहनत करेगा, लेकिन Fable शायद करे, और हाल में ऐसी vulnerabilities बहुत रही हैं। भविष्य के models अपने-आप नई vulnerabilities ढूँढ सकते हैं या SSH key passphrase सीखने के लिए keylogger भी install कर सकते हैं
      अलग user रखना, अलग machine रखने के अलावा, मेरी सुनी हुई लगभग सबसे paranoid setup में से एक है। इसलिए कभी-कभी सोचता हूँ कि कहीं मैं speed और convenience बहुत ज़्यादा तो sacrifice नहीं कर रहा। फिर भी व्यवहार में यह अब भी बहुत सुविधाजनक है, और मुझे यह efficient तथा responsible तरीका लगता है। अगर इसमें कोई छेद दिखे तो सुनना चाहूँगा
  • Fable ऐसा लगता है जैसे “एक harness पर चल रहा Opus, जिसे तब तक रुकने नहीं दिया जाता जब तक उसे यक़ीन न हो जाए कि समस्या ठीक हो गई है।” अगर benchmark में बेहतर model चाहिए, तो यह दिशा समझ में आती है
    यह बहुत अच्छा model है, लेकिन premium काफ़ी बड़ा है। सिर्फ token महँगे नहीं हैं, model उन tokens को पूरा इस्तेमाल भी करना चाहता है। उदाहरण के लिए React Native के काम में Fable यह नहीं कहता, “ठीक है, हो गया, खत्म।” वह पूरे app को शुरू से फिर build करना, पूरा test suite चलाना, और सभी logs तथा warnings देखना चाहता है
    LLM इस्तेमाल करते हुए पहली बार मुझे लगा कि model upgrade, भले कंपनी allow करे, उसकी कीमत वसूल नहीं है। क्योंकि builds और tests मेरी machine और battery पर इतना ज़ोर डालते हैं कि मैं और कुछ कर ही नहीं पाता
    अभी तो Opus पर ultracode इस्तेमाल करना बेहतर लगता है। main context pollution कम है, और investigation भी ज़्यादा parallel होती है

    • क्या low/medium effort setting से यह हल नहीं हो जाता? Fable 5 low, Opus 4.8 high/xhigh से ज़्यादा बार बेहतर लगता है, और tokens भी काफ़ी कम खर्च करता है
    • मेरा अनुभव उल्टा रहा। हाँ, मैं sub-agents बहुत इस्तेमाल करता हूँ, लेकिन मैं इसे कई घंटों तक पहले के opus4.6-8 के मुकाबले बहुत कम tokens में चलाता रहा हूँ
    • जानना चाहूँगा कि आप इसे किस environment में, किस setting पर चला रहे हैं। मैं VSCode extension को Extra High पर इस्तेमाल करता हूँ, और मुझे लगता है कि वह बस वही करता है जो माँगे गए काम के लिए ज़रूरी है, फिर खत्म होते ही रुक जाता है। अतिरिक्त comments भी तभी आते हैं जब वे बदले गए code area से संबंधित हों
    • नई high effort setting इतनी aggressive है कि अगर काम के लिए ज़रूरी न होने पर उसे चुना जाए, तो लगता है कि वह output quality पर उल्टा नकारात्मक असर डालती है
    • इस तरह की proactiveness सैद्धांतिक रूप से मुझे पसंद है, लेकिन जैसा कहा गया, यह महँगी पड़ती है। सोचता हूँ क्या इसे सही prompt से हल किया जा सकता है। जैसे, “ये constraints हैं। सिर्फ x हल करो। अगर यक़ीन न हो कि काम constraints के बाहर है या नहीं, तो पहले मुझसे confirm करो”
  • Fable ने मेरे game के UI changes को verify करने की कोशिश की। मैं दूसरी window में काम कर रहा था, तभी मैंने taskbar में program खुलते देखा। Fable ने CLI में movie maker tool से game खोला, output रिकॉर्ड किया, और आख़िरी frame capture करके UI verify किया। जब game की welcome screen उस हिस्से को ढक रही थी जिसे वह देखना चाहता था, तो उसने temporary worktree बनाई, welcome screen हटाई, और फिर movie maker दोबारा चलाया
    वह सब देखते हुए मुझे लगा कि अगर उसने मुझसे बस screenshot माँग लिया होता तो tokens बच जाते। फिर भी प्रभावित हुए बिना रहना मुश्किल था। Opus ऐसा कभी नहीं करता

    • यह बात ठीक निशाने पर लगती है कि जब model अंतहीन रूप से proactive हो जाता है तो असली समस्या क्या होती है। इंसान से screenshot लेने या button दबाने को न कहने के लिए वह 5 डॉलर के tokens खुशी-खुशी जला देता है
    • उसे बस ऐसा बता दीजिए। मेरे साथ भी ऐसा हुआ था, लेकिन जब मैंने उसे कहा कि review मुझे करने दे, उसके बाद Fable बड़े token खर्च के बिना कई घंटों तक frontend iteration में उपयोगी रहा
  • ऐसे लेख पढ़कर लगता है जैसे ये किसी parallel universe से आए हों। मेरे निजी अनुभव और मेरे खुद बनाए, अभी भी कुछ हद तक subjective benchmark(https://pshirshov.github.io/llm-bench-pi-oneshot/) के हिसाब से Fable इतना भी प्रभावशाली नहीं है
    gpt-5.5 और opus 4.8 के स्तर पर यह कभी बेहतर होता है, कभी बदतर, और साफ़ तौर पर ज़्यादा महंगा है; यहाँ तक कि React सवालों पर यह यह कहकर मना भी कर देता है कि chemistry मदद नहीं कर सकती
    समझ नहीं आता कि यह सारा शोर सच में ठोस आधार पर है, या फिर IPO से पहले AGI का बढ़ा-चढ़ाकर प्रचार

    • रिलीज़ के बाद Fable के साथ मेरा अनुभव Simon के अनुभव से मेल खाता है
      मैं Fable से complex implementation coordinate करवा रहा हूँ। मैं उसे Linear के upper-level tickets देकर कहता हूँ, “इन tickets के sub-issues देखो, तय करो कि इनमें से कौन-से तुम खुद implement कर सकते हो, किस क्रम में करना चाहिए, और दूसरे team members जो इस समय काम कर रहे हैं उनके साथ इसे कैसे coordinate करना है।” ये tickets मामूली नहीं हैं; इनमें कई moving parts और dependencies हैं, और ये उसी project के भीतर और बाहर, जैसे backend, दोनों से जुड़े होते हैं
      फिर Fable tickets चुनता है और हर ticket को sub-agent (जो फिर Fable ही है) को delegate करता है। sub-agent उस ticket की Figma design देखता है, repository guidelines और conventions का सख्ती से पालन करते हुए उसे perfectly implement करता है, हर हिस्से के screenshots लेता है, detailed commit messages और PR description लिखता है, और सबूत के तौर पर screenshots भी जोड़ता है। आखिर में यह ऐसा summary देता है जैसे, “PR #1283 को पहले merge होना होगा। वैसे इस-उस screen के लिए Figma design नहीं था, इसलिए पहले से implement की गई मिलती-जुलती screen देखकर वही pattern apply किया गया।”
      शायद यह Fable की क्षमता का सिर्फ़ 20% होगा। यह सचमुच एक powerful model है
      Opus 4.8 भी इनमें से बहुत-सा काम कर सकता था, लेकिन उसे काफी hand-holding चाहिए होती थी, और जहाँ अटकता वहाँ अक्सर “मैं यहाँ तक कर पाया, लेकिन आगे नहीं बढ़ सकता” कहकर रुक जाता था
  • Fable थोड़ा ज़्यादा smart है, लेकिन शायद इसी वजह से कुल मिलाकर यह एक बदतर tool लगता है
    जो 50-line patch एक prompt में खत्म हो सकता है, उसे यह बार-बार 30 मिनट की exploration में बदल देता है, और अक्सर इसकी बिल्कुल ज़रूरत नहीं होती। ऊपर से यह अक्सर गलत भी होता है
    मैंने इसे एक काफ़ी simple task पर आज़माया। hash function बदलने पर redis deduplication cache को backfill करना था। करना बस इतना था कि सभी DB values पर नया hash function चलाकर cache को expand कर दिया जाए, लेकिन Fable ने एक ज़रूरत से ज़्यादा complex cache update implement कर दिया जो हर cache value के hash function version का अनुमान लगाकर सिर्फ़ पुराने hashes दोबारा calculate करने की कोशिश करता था। कुछ संदर्भों में यह ठीक लग सकता है, लेकिन 30 मिनट तक tokens जलाने का नतीजा वह code था जिसे मैंने 10-line for loop से बदल दिया
    programming के लिए कुल मिलाकर यह बुरी खबर लगती है। साफ़ दिख रहा है कि LLM technology intelligence के मामले में diminishing returns की दीवार से टकरा रही है, और अगर उसका जवाब सिर्फ़ यह है कि उन्हें और ज़्यादा persistent बना दिया जाए, तो इससे जुड़े लगभग सभी लोगों के लिए यह बहुत खराब समाधान है। हाँ, tokens बेचने वालों और उन लोगों को छोड़कर जो 0-day scan करने लायक tokens खरीद सकते हैं

    • मेरा मानना है कि LLMs और agents में शायद दो ऐसी समस्याएँ हैं जो कभी ठीक नहीं होंगी
      पहली, इनमें causal model नहीं है। ये बस trial-and-error search कर सकते हैं, जो कई समस्याओं पर ठीक-ठाक काम करती है, लेकिन बहुत-सी दूसरी समस्याओं में causal model की ज़रूरत होती है
      दूसरी, prompts precise नहीं होते। programming languages और machine models इसी समस्या को हल करने के लिए बनाए गए थे। English शानदार है, लेकिन यह programming language नहीं है
    • मुझे लगता है कि अंदर ही अंदर वे बहुत पहले से जानते थे कि वे diminishing returns तक पहुँच चुके हैं
      IPO से पहले उन्होंने strategic adoption और manipulation खूब किया, और उस लिहाज़ से यह असरदार भी रहा
    • कुछ दिन पहले मैं CC में 15~20 files में बिल्कुल एक जैसा बदलाव कर रहा था, यानी किसी खास function को component body के बाहर खींचना। बस files edit करनी थीं, लेकिन इसने कई agents चला दिए, जिनमें से एक ने सभी files ढूँढकर regex से replace करने के लिए perl script लिख दी। उसके बाद errors चेक करने के लिए सिर्फ़ tsc चलाना काफी था, लेकिन इसने हर sub-agent में tsc चलाया और फिर नतीजों को combine करने के लिए एक और script लिख दी
      सचमुच इतना गुस्सा आया कि क्या कहूँ। जो काम ज़्यादा से ज़्यादा 1~2 मिनट में खत्म हो जाता, वह इस रास्ते पर जाकर करीब 10 मिनट ले गया
      बाद में मैं इससे कहीं ज़्यादा complex काम आज़माऊँगा, लेकिन simple कामों में यह mailbox तक जाने के लिए Corvette चलाने जैसा लगा
  • अपने local machine पर terminal-based LLM न इस्तेमाल करने की जो हिचक मुझे रही है, वह बार-बार सही साबित होती लगती है
    malicious behavior न भी हो, तब भी ऐसी बहुत-सी चीज़ें हैं जो अच्छी-खासी मात्रा में काम बर्बाद कर सकती हैं या मेरी machine और मेरी काम करने की क्षमता को ही बिगाड़ सकती हैं

    • यह चौंकाने वाली बात है कि sandbox में चलाने का कोई default तरीका नहीं है
      1 trillion dollar company हो तो यह व्यवस्था अपेक्षाकृत आसानी से होनी चाहिए, है न? पूरे harness के मुकाबले यह तो छोटी-सी बात लगती है
  • security निश्चित रूप से बड़ा मुद्दा है, लेकिन इसे पढ़ते हुए मेरे दिमाग में बार-बार यही आता रहा कि 2 lines of CSS ठीक करने के लिए आखिर कितने tokens खर्च हुए होंगे

    • bug fix में code की lines की संख्या, ज़रूरी effort का अंदाज़ा लगाने के लिए सचमुच बहुत खराब proxy है
      अंदाज़ा इस बात का लगाना चाहिए कि किसी इंसान को इसमें कितना समय लगता
    • बात सीधी है। अगर सिर्फ़ 2 lines of CSS ठीक करनी हैं, तो Fable बिल्कुल नहीं इस्तेमाल करना चाहिए। इसे सिर्फ़ complex और time-consuming कामों में इस्तेमाल करना चाहिए
    • शायद इसकी लागत लगभग 12 dollars रही होगी
    • लेखक AI hype बेचने वाला है और अपने token costs खुद नहीं देता
    • मैं ऐसे LLM fanatics से तेज़ हूँ। मुझे यक़ीन नहीं कि LLM इस्तेमाल करना सच में ज़्यादा तेज़ है। boilerplate जैसे कुछ अपवाद हो सकते हैं, लेकिन उससे क्या खास फ़र्क पड़ता है
      लोगों को अब बस आलसी रहते हुए भी productive दिखने का तरीका मिल गया है, और यह फिर भी आलस ही है
      अब ऐसे लोग हैं जिन्हें एक email लिखने के लिए ही सैकड़ों हज़ार dollars के hardware तक पहुँच चाहिए। मैं ऐसी चीज़ों से दूर रहूँगा। मैं अपना दिमाग इसलिए नहीं जलाना चाहता कि किसी billionaire की thinking machine पर निर्भर हो जाऊँ
      और local “मेरे लिए सोचने वाली machine” से भी मैं अपना दिमाग नहीं जलाऊँगा। मैं उस hardware से ज़्यादा क़ीमती इंसान बनना चाहता हूँ, जितना hardware मेरी पहुँच में है
  • Fable 5 ने अपने तरीके से काम किया, यह मेरा निजी अनुभव काफ़ी सकारात्मक रहा
    यह ऐसे Python module crash के root cause को खोजने की कोशिश कर रहा था जो logs या console में कोई error छोड़े बिना होता था। Fable ने UI click को simulate करने वाला एक test harness लिखा, फिर मेरे code पर binary search करके वह बिंदु ढूंढा जहाँ crash शुरू होता था। Crash के कारण पर थोड़ा बढ़ाकर hypothesis बनाई, फिर /tmp के नीचे उस Python module के हर version के लिए virtual environment बनाने वाले bash one-liner commands लगातार चलाए और वह version खोज निकाला जिसमें crash नहीं होता था
    इसने मुझसे अकेले किए गए प्रयास की तुलना में root cause को कहीं ज़्यादा गहराई से ट्रेस किया, और कारण एक module regression था जो heap allocation overflow पैदा कर रहा था। इसने bug report दर्ज करने लायक पर्याप्त जानकारी और simplified example दिया, और मेरे application में यह न हो इसके लिए workaround भी लिखा
    इसे पूरी तरह खुली छूट नहीं दी गई थी। यह जो भी CLI command चलाने वाला होता, मैं पहले उसकी समीक्षा करता, और जब मैं “yes” कहकर आगे बढ़ाता, तब excessive token use रोकने के लिए उत्तर में अतिरिक्त निर्देश जोड़ता

    • मुझे लगता है Fable मुश्किल bug debugging में सचमुच बहुत अच्छा है
      Prompt या Markdown में boundaries सेट करना मददगार होता है। उदाहरण के लिए, अगर आप कहें कि web browser automation का इस्तेमाल न करे, तो मैंने देखा कि Fable उस नियम और उसके आशय—दोनों का पालन करता है। इसने कोई अजीब hack भी नहीं किया
      हालांकि, ऐसा लगता है कि यह कुछ simple debugging tasks को वास्तविकता से ज़्यादा complex मान लेता है। शायद मूल पोस्ट इसका अच्छा उदाहरण है
    • यह सवाल उठता है कि Python module के बिना logs या console errors छोड़े crash होने का कारण खोजने, UI click simulate करने वाला test बनाने, और git bisect loop चलाने के लिए क्या सचमुच किसी agent की ज़रूरत थी
      Test case और git bisect loop generate करने तक तो बात समझ आती है, लेकिन यह समझ नहीं आता कि उसे internet और GPU वगैरह के ज़रिए क्यों चलाना पड़े। यह तो ऐसा काम लगता है जो single-core Celeron पर भी चल सकता है, है न?