AIDive

मैंने Claude Code लैपटॉप मॉडल पर चलाया: 2 में से 1 पास

AIDive द्वारा · प्रकाशित

कोडिंग एजेंटAI मॉडल

परिचय

लैपटॉप पर चलने वाले मॉडल के साथ Claude Code ने हमारे दो असली टास्क में से एक पास किया। इस सेटअप के ज़्यादातर डेमो "hello" पर ही रुक जाते हैं। हमने एक छोटे लोकल मॉडल को Python पैकेज में दो काम दिए और जो हुआ, वह alias और वह नियम जो हमने रखा, सब यहाँ बताया है।

सेटअप सीधा है। किसी टास्क के बीच में जब आपके प्लान की लिमिट लग जाए, तो आप या तो रीसेट का इंतज़ार करते हैं, या वही Claude Code अपनी मशीन के मॉडल पर चलाकर काम उसे सौंप देते हैं। जिस काम में कई फ़ाइलें शामिल थीं, उसमें लोकल मॉडल ने बताया कि सारे टेस्ट पास हैं, जबकि उसके किए rename से एक import टूट चुका था। एक फ़्लैग, --bare, ने उसी टास्क पर कुछ भी न बदलने वाले लोकल रन को साफ़ पास में बदल दिया।

इस लेख में alias है, उसे ठीक करने वाला फ़्लैग है, context window का जाल है, कई फ़ाइलों वाला काम है, और वह नियम है कि कौन से काम लोकल जाएँ और कौन से आपके प्लान का इंतज़ार करें।

अपने मॉडल पर Claude Code

Claude Code दो हिस्सों से बना है। हार्नेस आपके टर्मिनल का वह प्रोग्राम है जो आपकी फ़ाइलें पढ़ता है, कमांड चलाता है और बदलाव करता है। मॉडल तय करता है कि आगे क्या करना है, और डिफ़ॉल्ट रूप से वह Anthropic के सर्वर पर रहता है और आपके प्लान से गिना जाता है।

एक सेटिंग, यानी base URL, हार्नेस को बताती है कि सवाल कहाँ भेजने हैं। Ollama एक प्रोग्राम है जो ओपन मॉडल डाउनलोड करता है और उन्हें आपकी अपनी मशीन के एक पते पर चलाता है। Claude Code में कुछ नहीं बदलता, बस वह पता बदलता है जिससे वह बात करता है, इसीलिए आपके शेल में एक लाइन काफ़ी है। यह ऐसा है जैसे आप अपना ऐप प्रोडक्शन की जगह लोकल डेटाबेस की ओर मोड़ दें।

सेटअप के लिए Homebrew से Ollama इंस्टॉल करें, फिर एक ऐसा मॉडल pull करें जो आपकी मेमोरी में आ जाए। हमारा मॉडल qwen3.5:9b था, 7.6 GB का, 16 GB वाले MacBook Pro M1 Pro पर। उसी मॉडल के बड़े वर्शन बिल्कुल नहीं समाते। कुछ भी pull करने से पहले मॉडल का आकार अपनी मेमोरी से मिलाइए, क्योंकि पूरा मॉडल उसमें बैठना चाहिए, उन सब चीज़ों के साथ जो आपने खोल रखी हैं।

Anthropic के अपने डॉक्स की एक चेतावनी: वह Claude Code को ऐसे मॉडलों तक रूट करने को सपोर्ट नहीं करता जो Claude नहीं हैं। इस सेटअप पर कुछ टूटे तो आप अकेले हैं, और जो मॉडल आप चला रहे हैं वह आपके प्लान वाले मॉडल से काफ़ी छोटा है।

claude-alt alias

alias एक छोटा नाम है जिसे आपका शेल लंबी कमांड में बदल देता है। पूरा स्विच एक alias में रखने से आपका रोज़ का claude आपका प्लान ही इस्तेमाल करता रहता है, क्योंकि ये सेटिंग्स तभी लागू होती हैं जब आप alias बुलाते हैं।

सेटिंग्स Ollama की अपनी गाइड से आती हैं: लोकल पता, एक प्लेसहोल्डर टोकन और एक API key। key पर ध्यान देना ज़रूरी है। Claude Code के डॉक्स कहते हैं कि आपकी सेट की हुई key सब्सक्रिप्शन की जगह इस्तेमाल होती है, भले ही आप लॉग इन हों, इसीलिए वह सिर्फ़ alias की लाइन में रहती है। आप अपनी शेल फ़ाइल खोलते हैं, मॉडल का नाम अंत में रखकर alias चिपकाते हैं, और फ़ाइल दोबारा लोड करते हैं।

alias claude-alt='CLAUDE_CODE_ATTRIBUTION_HEADER=0 ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_API_KEY=ollama ANTHROPIC_BASE_URL=http://localhost:11434 claude --bare --model qwen3.5:9b'

यह अंतिम वर्शन है, जिसमें --bare पहले से है (अगला सेक्शन बताता है क्यों)। CLAUDE_CODE_ATTRIBUTION_HEADER=0 वह सेटिंग है जिसकी लोकल मॉडल वाली गाइड सिफ़ारिश करती हैं। हमने कभी नहीं मापा कि वह क्या करती है, इसलिए इसे वैकल्पिक मानिए।

हमने --bare के बिना शुरू किया। इस टेस्ट के लिए हमारे लिखे एक छोटे Python पैकेज में पहला असली टास्क था: एक फ़ाइल में एक विकल्प जोड़ना और उसे चलाना। Claude Code शुरू हुआ, उसने चेतावनी दी कि वह इस मॉडल को नहीं जानता, और घड़ी चलती रही और वह काम करता रहा। 15 मिनट बाद भी उसने एक भी लाइन नहीं बदली थी, तो हमने उसे रोक दिया, और विकल्प मौजूद नहीं था।

अगर आप alias को ऐसे ही आज़माएँगे, तो शायद वही दिखेगा: एक सेशन जो काम करता रहता है और एक फ़ाइल जो कभी नहीं बदलती। alias Claude Code को आपके मॉडल की ओर मोड़ता है, लेकिन छोटे मॉडल पर टास्क पूरा करने के लिए यह काफ़ी नहीं है।

वह फ़्लैग जो जवाब दिलवाता है: --bare

हर Claude Code सेशन निर्देशों के एक लंबे सेट से खुलता है: आपकी मेमोरी फ़ाइल और आपके टूल। Claude के लिए यह ठीक है, पर लैपटॉप पर छोटे मॉडल के लिए भारी। --bare फ़्लैग Claude Code का मिनिमल मोड है। वह hooks, plugins, मेमोरी और प्रोजेक्ट फ़ाइल को छोड़ देता है, इसलिए मॉडल को हैंडबुक की जगह एक छोटा पन्ना मिलता है।

आप alias के अंत में --bare जोड़ते हैं और ANTHROPIC_API_KEY में शब्द ollama रखते हैं, क्योंकि मिनिमल मोड में Claude Code अपनी key सिर्फ़ वहीं से पढ़ता है। उसी अनुरोध, उसी छोटे मॉडल और उसी छोटी context window के साथ, इस बार रन ने फ़ाइल पढ़ी, उसे एडिट किया और कमांड चलाई। वह 93 सेकंड में पूरा हुआ, एक फ़ाइल बदली, और कमांड ने prefix को आगे लगाकर slug छापा, ठीक वैसा जैसा माँगा गया था: blog-hello-world।

आप इसे वैसे ही जाँचते हैं जैसे किसी सहकर्मी का बदलाव जाँचते हैं: एक छोटा diff पढ़िए और कमांड ख़ुद चलाइए।

क़ीमत असली है। मिनिमल मोड आपके hooks और प्रोजेक्ट के नियम भी छोड़ देता है, इसलिए लोकल मॉडल आपके लिखे conventions कभी नहीं देखता। अगर आपका प्रोजेक्ट किसी ख़तरनाक चीज़ को रोकने के लिए किसी hook पर निर्भर है, तो वह काम प्लान पर ही रखिए, जहाँ आपके hooks सचमुच चलते हैं।

4k का जाल और 64k का हल

दूसरा जाल आसानी से छूट जाता है क्योंकि Ollama मॉडल की मेमोरी का आकार आपके लिए ख़ुद चुन लेता है। वह मेमोरी context window है, यानी बातचीत का कितना हिस्सा मॉडल एक साथ नज़र में रख सकता है। Ollama के डॉक्स कहते हैं कि हमारे जैसी मशीन पर डिफ़ॉल्ट window छोटी होती है, 24 GiB VRAM से कम पर 4k टोकन, जो कोडिंग टूल के लिए सुझाए गए 64,000 से बहुत कम है। हमारे सारे पहले रन इसी डिफ़ॉल्ट पर थे, और जाँचे बिना आपको पता भी नहीं चलेगा।

इसे ठीक करने के लिए Ollama को रोकिए और context length 64,000 पर सेट करके दोबारा शुरू कीजिए (OLLAMA_CONTEXT_LENGTH=65536), फिर ollama ps चलाकर CONTEXT कॉलम पढ़िए। यह आपको हर बार सर्वर शुरू करते समय सेट करना होता है, और ollama ps ही वह जगह है जो दिखाती है कि यह लागू हुआ। कॉलम 4096 से 65536 हो गया, और मॉडल ने बस थोड़ी ही ज़्यादा मेमोरी ली: पहले 7.6 GB, बाद में 7.7 GB।

रन Context --bare नतीजा समय
a-4k-nobare (--bare के बिना alias) 4096 नहीं FAIL: 15 मिनट की सीमा पर रोका गया, शून्य एडिट, कोई जवाब नहीं 900 s
a-4k (alias) 4096 हाँ PASS, blog-hello-world 93 s
a-64k (alias) 65536 हाँ PASS, blog-hello-world 35 s

एक-फ़ाइल वाला टास्क 35 सेकंड में पास हुआ, छोटी window की तुलना में बहुत तेज़। अगला सेक्शन जिस कई फ़ाइलों वाले काम को देखेगा, वह भी कई मिनट से घटकर कुछ ही मिनट में हो गया। छोटा डिफ़ॉल्ट सिर्फ़ मेमोरी सीमित नहीं करता, वह हर टर्न को धीमा भी करता है, और आप दोष मॉडल को देंगे जबकि कारण सेटिंग है।

Claude Code एक चेतावनी भी छापता है कि वह इस मॉडल को नहीं जानता, और auto-compact के लिए 200k टोकन की window मानता है, जो Ollama जो देता है उससे बहुत बड़ी है। CLAUDE_CODE_MAX_CONTEXT_TOKENS असली मान सेट करता है। यह बेमेल हमारे छोटे टास्क पर नहीं चुभा, और हमने इसे लंबे सेशन पर नहीं आज़माया। सीमा मेमोरी है, क्योंकि बड़ी window ज़्यादा मेमोरी लेती है, और 16 GB के लैपटॉप पर यही लगभग आख़िरी हद है।

कई फ़ाइलों वाला काम: हरे टेस्ट, टूटा कोड

लोकल मॉडल के जल्दी जवाब देने पर असली काम उसे सौंपने का मन होता है। तो हमने उसे कई फ़ाइलों में फैला एक काम दिया: पैकेज में हर जगह smart_truncate का नाम बदलकर truncate_words करो, और slugkit/truncate.py में smart_truncate को alias के रूप में रखो। कोड में alias पुराने नाम को नए फ़ंक्शन के पॉइंटर के रूप में रखना है, ताकि पुराने नाम का इस्तेमाल करने वाला कोई भी कोड चलता रहे।

लोकल मॉडल ने कुछ मिनट काम किया, फ़ाइलें एडिट कीं, टेस्ट चलाए, और हर टेस्ट पास हुआ। फिर उसने बताया कि काम पूरा हो गया।

रन Context --bare नतीजा समय
b-plan (प्लान, Claude) n/a नहीं PASS: 12 टेस्ट OK, पुराने और नए दोनों import चलते हैं, टेस्ट का भी नाम बदला 38 s
b-4k (alias) 4096 हाँ BROKE: "All 12 unit tests pass", पर from slugkit import truncate_words से ImportError आता है; टेस्ट अब भी import truncate_words as smart_truncate के ज़रिए smart_truncate को कॉल करते हैं 464 s
b-64k (alias) 65536 हाँ BROKE: 12 टेस्ट OK, पूरा होने की रिपोर्ट दी, पर alias __init__.py में चला गया, इसलिए from slugkit.truncate import smart_truncate से ImportError आता है (निर्देश में truncate.py कहा गया था) 142 s

जब हमने पुराना नाम वैसे import किया जैसे पुराना कोड करता, तो Python ने उसे नकार दिया। मॉडल ने alias उस मॉड्यूल की जगह पैकेज की सामने वाली फ़ाइल में रख दिया था जो हमने बताया था, इसलिए पुराना import पाथ चला गया। छोटी window के साथ वही टास्क अलग तरह से टूटा: नया नाम कभी export ही नहीं हुआ, और टेस्ट अब भी पुराने को कॉल करते रहे।

हर टेस्ट हरा होने पर भी कोड कैसे टूटा हो सकता है? टेस्ट सिर्फ़ वही जाँचते हैं जो वे जाँचते हैं, और पुराने import के लिए किसी ने टेस्ट नहीं लिखा था। लोकल मॉडल का हरा रन सिर्फ़ यह बताता है कि टेस्ट जिसे कवर करते हैं वह नहीं टूटा, और जिसे वे कवर नहीं करते उसके बारे में कुछ नहीं बताता।

प्लान पर Claude ने वही काम 38 सेकंड में किया, टेस्ट का नाम भी बदला, और पुराने और नए दोनों import चले। निष्पक्ष रहें तो प्लान के काम की भी जाँच बनती है, लेकिन यहाँ कई फ़ाइलों वाला काम लोकल मॉडल से दोनों बार ग़लत हुआ। हर लोकल रन के बाद diff ख़ुद पढ़िए और हरे टेस्ट पर भरोसा करने से पहले पुराने नाम हाथ से import कीजिए। यह जाँच रन से कम समय लेती है, और टूटे import को आपकी main ब्रांच तक पहुँचने से रोकती है।

स्विच का नियम

जब आपकी लिमिट लगती है, तब आपके पास कुछ ही सेकंड होते हैं यह तय करने के लिए कि काम लोकल जाए या इंतज़ार करे। स्विच का नियम कुछ लाइनें हैं जिन्हें आप alias के पास रखते हैं, ताकि फ़ैसला जल्दबाज़ी में पड़ने से पहले ही हो चुका हो। अपनी शेल फ़ाइल खोलिए और alias के ऊपर तीन कमेंट लिखिए:

# claude-alt: one-file jobs I can check in a glance
# plan: anything across files, or that I can't check by reading the diff
# always: read the diff before committing

लोकल मॉडल को वे काम मिलते हैं जो एक फ़ाइल में हों और जिन्हें आप एक नज़र में जाँच सकें, जैसे कोई विकल्प जोड़ना, किसी फ़ंक्शन को समझाना या एक फ़ंक्शन का टेस्ट करना। जो कुछ भी कई फ़ाइलों में फैला हो, या जिसे आप diff पढ़कर जाँच न सकें, वह आपके प्लान का इंतज़ार करता है। कोड किसी भी मॉडल ने लिखा हो, commit करने से पहले diff आप पढ़ते हैं।

नियम सीधे हमारे रन से निकला है: एक-फ़ाइल वाला टास्क दोनों बार पास हुआ, और कई फ़ाइलों में rename दोनों बार टूटा। पैटर्न तब समझ आता है जब आप उसे टूटते देख लेते हैं, क्योंकि एक फ़ाइल वाले काम में मॉडल को जो कुछ चाहिए वह सब उसके सामने रहता है।

इस सेटअप की सीमाएँ भी हैं जो Ollama अपने डॉक्स में बताता है। इसमें prompt caching नहीं है, जिसमें सर्वर बातचीत की शुरुआत तैयार रखता है, इसलिए लंबे सेशन में हर टर्न सब कुछ दोबारा पढ़ता है और आपको धीमा करता है। यह मॉडल को कोई ख़ास टूल इस्तेमाल करने के लिए मजबूर भी नहीं कर सकता। और Anthropic Claude Code को ऐसे मॉडलों पर सपोर्ट नहीं करता जो Claude नहीं हैं। हमारा नियम एक छोटे पैकेज पर दो टास्क से निकला है, इसलिए इसे शुरुआती बिंदु मानिए और अपने रन से इसे बढ़ाइए।

निष्कर्ष

जब टास्क के बीच आपके प्लान की लिमिट लगे, तो एक alias वही Claude Code आपके लैपटॉप के मॉडल पर चला देता है। हमारे टेस्ट में उसने एक-फ़ाइल वाला टास्क पास किया और कई फ़ाइलों वाला तोड़ दिया। टूटा हुआ रन ही ख़तरनाक है, क्योंकि उसने हर टेस्ट हरा बताया जबकि एक import फ़ेल हो रहा था।

इसे तब इस्तेमाल कीजिए जब आप अटके हों, काम एक फ़ाइल में समा जाए, और commit से पहले आप पूरा diff पढ़ सकें। कई फ़ाइलों वाले किसी भी काम के लिए, लंबे सेशन के लिए, या उस काम के लिए जिसकी आप समीक्षा नहीं करेंगे, इसे इस्तेमाल मत कीजिए, क्योंकि वहीं यह चुपचाप फ़ेल होता है।

प्लान पर हर टास्क 40 सेकंड से कम में हुआ (21 s और 38 s), इसलिए जब आपका रीसेट पास हो, तो इंतज़ार करना अक्सर तेज़ रहता है। alias आपके प्लान का विकल्प नहीं है। प्लान लौटने तक यह आपको छोटे कामों पर चलता रखता है, और अगर आप इसे आज सेट कर लें, तो अगली बार लिमिट लगने पर यह तैयार मिलेगा।

याद रखने का नियम: लोकल मॉडल उन कामों के लिए है जिन्हें आप एक नज़र में जाँच सकें।

मुफ़्त संसाधन

  • वीडियो पैक

    Ollama पर Claude Code: claude-alt alias और स्विच का नियम

    claude-alt alias ब्लॉक, एक पन्ने का स्विच नियम, Monday चेकलिस्ट और 16 GB लैपटॉप पर qwen3.5:9b के साथ Claude Code का हमारा रन टेबल।

    6 मिनट पढ़ें · मैंने Claude Code लैपटॉप मॉडल पर चलाया: 2 में से 1 पास

स्रोत

अक्सर पूछे जाने वाले सवाल

क्या आप Claude Code को लोकल Ollama मॉडल के साथ चला सकते हैं?
हाँ। base URL को अपने Ollama के पते पर सेट कीजिए, एक प्लेसहोल्डर टोकन और API key दीजिए, और मॉडल का नाम पास कीजिए। Anthropic Claude Code को non-Claude मॉडलों तक रूट करने को सपोर्ट नहीं करता, इसलिए कुछ टूटे तो आप अकेले हैं।
Claude Code में --bare फ़्लैग क्या करता है?
`--bare` Claude Code का मिनिमल मोड है। यह hooks, plugins, मेमोरी और प्रोजेक्ट फ़ाइल को छोड़ देता है, इसलिए छोटे मॉडल को छोटा prompt मिलता है। हमारे रन में इसने शून्य एडिट वाले 15 मिनट के सेशन को 93 सेकंड के पास में बदल दिया।
Ollama के साथ Claude Code में मेरा लोकल मॉडल धीमा क्यों है?
Ollama 24 GiB VRAM से कम पर डिफ़ॉल्ट रूप से 4k context window देता है। सर्वर को `OLLAMA_CONTEXT_LENGTH=65536` के साथ शुरू कीजिए और `ollama ps` में `CONTEXT` कॉलम देखिए। हमारा एक-फ़ाइल वाला टास्क 35 सेकंड पर आ गया।
क्या लोकल मॉडल आपके प्लान वाले Claude Code की जगह ले सकता है?
नहीं। हमारे टेस्ट में उसने एक-फ़ाइल वाला टास्क पास किया पर कई फ़ाइलों वाला rename तोड़ दिया, जबकि सारे 12 टेस्ट हरे बताए। इसे उन कामों के लिए इस्तेमाल कीजिए जिन्हें आप एक diff में जाँच सकें, और कई फ़ाइलों वाला काम अपने प्लान के लिए रखिए।
लोकल मॉडल के काम पूरा करने के बाद मुझे क्या जाँचना चाहिए?
diff पढ़िए और पुराने नाम हाथ से import कीजिए। हरे टेस्ट सिर्फ़ वही कवर करते हैं जो टेस्ट जाँचते हैं, और जिस पुराने import को rename ने तोड़ा उसका टेस्ट किसी ने नहीं लिखा था।
Ollama का Anthropic endpoint क्या सपोर्ट नहीं करता?
Ollama के डॉक्स में prompt caching और forced tool choice सपोर्टेड नहीं हैं। caching के बिना लंबे सेशन का हर टर्न पूरी बातचीत दोबारा पढ़ता है, जो आपको धीमा करता है।

मिलते-जुलते वीडियो