coder-leo
टर्मिनल के लिए कोडिंग एजेंट जो लोकल मॉडल पर चलता है। यह कोड पढ़ता, लिखता और बदलता है, कमांड चलाता है, प्रोजेक्ट में खोजता है और टास्क लिस्ट रखता है, और इसे चलाने वाला मॉडल Ollama या OpenAI चैट API वाले किसी भी सर्वर (LM Studio, llama-server, vLLM, mlx) के ज़रिए आपकी अपनी मशीन पर चलता है। यह Claude Code की तरह काम करता है, और छोटी कॉन्टेक्स्ट विंडो के लिए बना है: यह विंडो को नापता है, हर टूल के नतीजे को बजट में रखता है, पुराने नतीजे साफ़ करता है, ज़रूरत पड़ने पर बातचीत का हिस्सों में सारांश बनाता है, और मॉडल को ऐसे टूल देता है जो सब कुछ पढ़े बिना चीज़ें ढूँढ लें।
इंस्टॉल
macOS, Homebrew के साथ, दो कमांड, एक बार:
brew tap leonardoaguiar/coder-leo https://leonardoaguiar.com/apps/coder-leo/tap.git
brew install leonardoaguiar/coder-leo/coder-leo
brew upgrade नए वर्शन लाता है, और coder-leo update भी।
Linux (कोई भी डिस्ट्रीब्यूशन, x86_64 या ARM), Termux के अंदर Android, और WSL के अंदर Windows:
curl -fsSL https://leonardoaguiar.com/apps/coder-leo/install.sh | sh
यह मशीन के लिए सही बिल्ड चुनता है, उसका प्रकाशित SHA-256 जाँचता है और बाइनरी, मैन पेज और शेल कम्प्लीशन को /usr/local (ज़रूरत पड़ने पर sudo माँगकर), ~/.local या Termux के अपने फ़ोल्डर में रख देता है। दोबारा चलाने से अपडेट होता है; sh -s -- --uninstall हटा देता है।
आपको एक मॉडल सर्वर भी चाहिए, जिसमें टूल सपोर्ट करने वाला मॉडल हो:
- Ollama (डिफ़ॉल्ट):
ollama pull qwen2.5-coder:14b, याqwen3,devstral,gpt-oss,llama3.1,mistral। coder-leo127.0.0.1:11434से, याOLLAMA_HOSTसे बात करता है। - LM Studio, llama-server, vLLM, mlx-lm या कोई भी OpenAI-संगत सर्वर:
coder-leo --api openai --host http://127.0.0.1:1234।
शुरू करें
किसी प्रोजेक्ट में टर्मिनल खोलें और coder-leo चलाएँ। पहली बार लिस्ट से एक मॉडल चुनें; वह याद रहता है। जो चाहिए वह लिखें; /help सारे कमांड दिखाता है।
coder-leo इस डायरेक्टरी में एक सेशन
coder-leo "add tests for parser" पहले प्रॉम्प्ट के साथ एक सेशन
coder-leo -p "explain main.go" एक जवाब, फिर बाहर (stdin भी पढ़ता है)
coder-leo -c यहाँ का सबसे नया सेशन जारी रखें
coder-leo --sessions कोई पुराना सेशन चुनें
coder-leo --list इंस्टॉल किए गए मॉडल
स्वागत बॉक्स मॉडल, कॉन्टेक्स्ट विंडो, अनुमति मोड और डायरेक्टरी दिखाता है। प्रॉम्प्ट के नीचे की लाइन मोड, मॉडल, कॉन्टेक्स्ट कितना भरा है और git ब्रांच दिखाती है।
इसके साथ काम करना
- बदलाव माँगें, सलाह नहीं। यह फ़ाइलें ख़ुद बदलता है और बिल्ड या टेस्ट ख़ुद चलाता है; कभी आपके लगाने के लिए कोड पेस्ट नहीं करता।
- @पाथ किसी फ़ाइल या डायरेक्टरी को संदेश के साथ जोड़ता है (Tab पूरा करता है, फ़ज़ी)। विंडो के लिए बहुत बड़ी फ़ाइल रूपरेखा के रूप में जाती है, और मॉडल ज़रूरी हिस्से पढ़ लेता है।
- !कमांड शेल कमांड चलाता है और आउटपुट बातचीत में रखता है।
- #टेक्स्ट प्रोजेक्ट की
CLAUDE.mdमें एक नोट सेव करता है। - Esc या Ctrl+C जवाब रोक देता है। इस बीच आप जो टाइप करते हैं, वह अगले प्रॉम्प्ट पर इंतज़ार करता है।
- Shift+Tab अनुमति मोड बदलता है; Ctrl+O पूरा टूल आउटपुट चालू या बंद करता है; Ctrl+T टास्क लिस्ट दिखाता है; Esc Esc पीछे ले जाता है; Ctrl+R हिस्ट्री में खोजता है; Ctrl+J नई लाइन डालता है; बड़ा पेस्ट एक प्लेसहोल्डर में समेट दिया जाता है।
- प्रॉम्प्ट में think, think hard और ultrathink शब्द सोचने वाले मॉडल की रीज़निंग उस मोड़ के लिए बढ़ा देते हैं।
टूल
मॉडल इन टूल के ज़रिए काम करता है, नाम Claude Code जैसे ही हैं (यह दूसरे एजेंटों के नाम भी समझता है, जैसे read_file या run_command):
| टूल | क्या करता है |
|---|---|
| Read | एक फ़ाइल, लाइन नंबर के साथ, offset और limit के साथ; विज़न मॉडल के लिए इमेज; pdftotext के ज़रिए PDF; नोटबुक सेल के रूप में। पूरी पढ़ी गई बड़ी फ़ाइल अपनी रूपरेखा और शुरुआत लौटाती है |
| Write, Edit | फ़ाइल बनाना; एक सटीक टुकड़ा बदलना (कॉपी हुए लाइन नंबर और इंडेंटेशन के फ़र्क़ सह लेता है) |
| LS, Glob, Grep | लिस्ट करना, पैटर्न से फ़ाइलें ढूँढना, रेगुलर एक्सप्रेशन से कंटेंट खोजना (कंटेंट, फ़ाइल नाम या गिनती, कॉन्टेक्स्ट के साथ) |
| Search | सादी भाषा के सवाल के लिए सबसे प्रासंगिक फ़ाइलें और लाइनें, आइडेंटिफ़ायर के शब्दों से रैंक की हुई |
| Outline, RepoMap | किसी फ़ाइल के फ़ंक्शन और टाइप; रिपॉज़िटरी का नक़्शा, इस हिसाब से रैंक किया हुआ कि कोड हर फ़ाइल का कितना ज़िक्र करता है |
| Bash, BashOutput, KillShell | टाइमआउट के साथ कमांड चलाना; लंबे कमांड बैकग्राउंड में |
| WebFetch, WebSearch | पेज को पढ़ने लायक टेक्स्ट में; वेब खोज |
| TodoWrite | टास्क लिस्ट, बदलते ही दिखती है |
| Task | नई कॉन्टेक्स्ट विंडो वाला सब-एजेंट (explore, plan, general, review, या आपका अपना) जो सिर्फ़ अपनी रिपोर्ट लौटाता है |
| Recall | पूरी बातचीत में खोज, उसमें भी जो सारांश में समेट दी गई |
| AskUserQuestion, ExitPlanMode, Skill | आपसे कुछ पूछना; प्लान पेश करना; स्किल लोड करना |
| mcp__server__tool | आपके MCP सर्वरों के टूल |
कॉन्टेक्स्ट विंडो
लोकल मॉडलों की विंडो छोटी होती है (16 GB मशीन पर 8k से 32k टोकन आम है), और लंबा प्रॉम्प्ट दोबारा पढ़ने में हर मोड़ पर कई सेकंड लगते हैं। coder-leo विंडो को चालू रखता है:
- साइज़: मॉडल की सीमा और मशीन की मेमोरी से चुना जाता है (
/ctxदिखाता है,/ctx 32kया/ctx autoबदलता है)। गिनती एक अनुमान है जिसे सर्वर की रिपोर्ट से सुधारा जाता है। - स्थिर प्रीफ़िक्स: सिस्टम प्रॉम्प्ट सेशन के दौरान नहीं बदलता, इसलिए सर्वर सब कुछ दोबारा आँकने के बजाय अपना कैश दोबारा इस्तेमाल करता है।
- नतीजे बजट में: हर टूल का नतीजा उतना ही रखा जाता है जितना समाए; पूरा आउटपुट एक फ़ाइल में सेव होता है जिसका पाथ मॉडल को मिलता है, ताकि वह हिस्सों में Read करे या Grep करे।
- सफ़ाई 70% पर: पुराने टूल नतीजे एक-लाइन के स्टब बन जाते हैं (आख़िरी वाले पूरे रहते हैं)।
- सारांश 85% पर, या
/compact [क्या रखना है]: एक सुव्यवस्थित हैंडओवर सारांश बातचीत की जगह ले लेता है, ताज़ा मोड़ ज्यों के त्यों रहते हैं; जो बातचीत एक बार में समेटी न जा सके, उसका हिस्सों में सारांश बनाकर जोड़ा जाता है। ट्रांसक्रिप्ट डिस्क पर रहता है, और Recall उसमें खोजता है। - रिपॉज़िटरी का नक़्शा: जगह होने पर सबसे ज़्यादा ज़िक्र वाली फ़ाइलें और उनके सिंबल सिस्टम प्रॉम्प्ट में जाते हैं, ताकि मॉडल बिना पढ़े जाने कि चीज़ें कहाँ हैं।
- /context दिखाता है कि विंडो क्या इस्तेमाल कर रहा है: सिस्टम प्रॉम्प्ट, टूल स्कीमा, संदेश, नतीजे, साफ़ किए नतीजे, खाली जगह।
अनुमतियाँ
चार मोड: default बदलाव करने और कमांड चलाने से पहले पूछता है; acceptEdits प्रोजेक्ट के अंदर के बदलाव जाने देता है और कमांड के लिए पूछता है; plan सिर्फ़ पढ़ता है, और मॉडल मंज़ूरी के लिए प्लान पेश करता है; yolo बिना पूछे सब चलाता है, जैसे शुरुआती वर्शन करते थे, और जब तक आपकी सेटिंग्ज़ कुछ और न कहें, यही डिफ़ॉल्ट है। नुक़सान पहुँचाने वाले कमांड (बड़ी डायरेक्टरी हटाना, git का काम फेंकना, फ़ोर्स पुश, sudo, टेबल गिराना) yolo मोड में भी पूछते हैं; सेटिंग्ज़ में "guard": false इसे बंद कर देता है।
सेटिंग्ज़ के नियम मोड से पहले तय करते हैं: "allow": ["Bash(git *)", "Read"], "deny": ["Bash(rm *)"], "ask": ["Write"]। अनुमति के सवाल पर a जवाब देने से वह टूल सेशन भर के लिए खुल जाता है; शब्दों में जवाब देने से वे निर्देश बनकर मॉडल को चले जाते हैं।
सेशन
हर सेशन उसी वक़्त ~/.config/coder-leo/sessions/<प्रोजेक्ट>/ में सेव होता है। coder-leo -c सबसे नया जारी रखता है, --resume <id> या /resume कोई एक चुनता है, /rename नाम देता है, /export उसे Markdown में लिखता है। हर बदलाव से पहले फ़ाइल का चेकपॉइंट बनता है: /rewind (या Esc Esc) किसी पुराने मोड़ पर लौटता है, तब से बदली फ़ाइलें वापस लाता है और बातचीत वहीं काट देता है।
निर्देश, कमांड, स्किल, एजेंट
- प्रोजेक्ट की (और उसके ऊपर की डायरेक्टरियों,
~/.config/coder-leo/और~/.claude/की) CLAUDE.md या AGENTS.md सिस्टम प्रॉम्प्ट में जाती है: परंपराएँ, बिल्ड कमांड, क्या न करें। उनके अंदर की@पाथलाइनें दूसरी फ़ाइलें इम्पोर्ट करती हैं।/initमॉडल से एक लिखवाता है।/memoryबताता है क्या लोड है। - कस्टम कमांड:
.coder-leo/commands/(या.claude/commands/, प्रोजेक्ट या होम) में Markdown फ़ाइलें, जो/नाम आर्ग्युमेंटसे चलती हैं।$ARGUMENTS,$1, `!कमांडऔर@फ़ाइलफैलाए जाते हैं; फ़्रंट मैटर मेंdescription,argument-hint,allowed-toolsऔरmodel` तय किए जा सकते हैं। - स्किल:
.coder-leo/skills/<नाम>/SKILL.md(या.claude/skills/), विवरण के साथ मॉडल को बताई जाती हैं; काम मेल खाने पर वह Skill टूल से एक लोड करता है, या आप/नामचलाते हैं। - सब-एजेंट:
.coder-leo/agents/<नाम>.md(या.claude/agents/), फ़्रंट मैटर मेंname,description,toolsऔरmodel, और बॉडी में सिस्टम प्रॉम्प्ट; Task टूल इन्हें चलाता है। बिल्ट-इन: explore, plan, general, review। - हुक: इवेंट (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop, SubagentStop, PreCompact, SessionEnd) के इर्द-गिर्द चलने वाले शेल कमांड, इवेंट JSON के रूप में stdin पर; exit 2 कारण के साथ रोक देता है, और JSON जवाब अनुमति दे सकता है, मना कर सकता है या कॉन्टेक्स्ट जोड़ सकता है। प्रोटोकॉल Claude Code जैसा ही।
- MCP:
.mcp.json(प्रोजेक्ट या होम) या सेटिंग्ज़ मेंmcpServersसे सर्वर, stdio या HTTP पर; उनके टूलmcp__server__toolके रूप में दिखते हैं और उनके प्रॉम्प्ट कमांड बन जाते हैं।/mcpउनकी लिस्ट देता है।
सेटिंग्ज़
~/.config/coder-leo/settings.json, फिर प्रोजेक्ट में .coder-leo/settings.json और .coder-leo/settings.local.json, हर एक पिछले के ऊपर; फिर एनवायरनमेंट (CODER_MODEL, CODER_API, CODER_HOST या OLLAMA_HOST, CODER_API_KEY)।
{
"model": "qwen2.5-coder:14b",
"api": "ollama",
"numCtx": 16384,
"think": "low",
"permissions": { "mode": "default", "allow": ["Bash(git *)"], "guard": true },
"compact": { "micro": 0.7, "full": 0.85, "keepRecent": 6 },
"repoMap": { "enabled": true, "budget": 3000 },
"tools": { "minimal": false, "disabled": ["WebSearch"] },
"hooks": { "PreToolUse": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "./check.sh" }] }] },
"mcpServers": { "fs": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] } },
"statusLine": { "command": "~/.config/coder-leo/status.sh" },
"notify": "bell"
}
/config दिखाता है कि क्या लागू है और कहाँ से आया; /doctor सर्वर, मॉडल, मेमोरी और सेटअप जाँचता है।
हेडलेस
coder-leo -p "प्रॉम्प्ट" एक बार जवाब देता है: जवाब stdout पर, बाक़ी सब stderr पर। --output-format json नतीजे, सेशन id और टोकन गिनती के साथ एक ऑब्जेक्ट छापता है; --output-format stream-json जैसे-जैसे चीज़ें होती हैं, हर लाइन पर एक JSON इवेंट छापता है। --max-turns, --allowedTools, --disallowedTools, --system-prompt, --append-system-prompt और --mode रन को आकार देते हैं; -c या --resume कोई सेशन जारी रखते हैं।
गोपनीयता
सब कुछ आपकी मशीन पर चलता है: मॉडल, फ़ाइलें, बातचीत। प्रोग्राम नेटवर्क तक सिर्फ़ तब जाता है जब मॉडल आपके काम के लिए WebFetch या WebSearch चलाता है (yolo मोड के बाहर अनुमति पूछकर), जब आप बाहर जुड़ने वाला MCP सर्वर सेट करते हैं, और जब आप coder-leo update चलाते हैं। न अकाउंट, न टेलीमेट्री, कहीं कुछ नहीं भेजा जाता।
अपडेट
coder-leo update साइट पर नया वर्शन देखता है और उसे इंस्टॉल करता है (Homebrew वाली कॉपी के लिए Homebrew के ज़रिए); coder-leo update --check सिर्फ़ बताता है। प्रोग्राम कभी अपने आप नहीं देखता।
मदद और बग रिपोर्ट
समस्याएँ और सुझाव: coder-leo पेज के अंत में दिया सपोर्ट पता। मॉडल, सर्वर, coder-leo version और /doctor का आउटपुट साथ भेजें।