dirac-run/dirac
(github.com/dirac-run)- लंबे context में reasoning performance के डगमगाने की समस्या को कम करने के लिए घनी context curation और tool efficiency के मुकाबले performance optimization पर फोकस करने वाला एक open source coding agent है
gemini-3-flash-previewके आधार पर इसने Terminal-Bench-2 65.2% दर्ज किया, और public GitHub repositories में complex refactoring tasks के 8 मामलों में 8/8 success हासिल किया- Hash-Anchored Edits, Multi-File Batching, और structure-aware editing को मिलाकर यह कम round trips में कई files को संभालता है, और TypeScript·Python·C++ जैसी भाषाओं की syntax structure को ध्यान में रखकर बदलाव करता है
- यह file read/write, terminal commands, और headless browser को support करता है, साथ ही approval-based workflow और Plan Mode·Yolo Mode·task history resume जैसे CLI flows भी देता है
- औसत लागत $0.18 और competing tools की तुलना में 64.8% cost reduction का दावा करते हुए, benchmark-only जानकारी के बिना real-world tasks में performance और cost दोनों को बेहतर बनाना इसकी खास बात है
मुख्य प्रदर्शन
-
बेंचमार्क परिणाम
- 8 tasks में इसने 8/8 सही परिणाम दर्ज किए, और comparison group में सिर्फ Opencode ही समान 8/8 तक पहुंचा
- औसत लागत $0.18 थी, जो Cline $0.49, Kilo $0.73, Ohmypi $0.51, Opencode $0.44, Pimono $0.38, और Roo $0.60 से कम है
- README के अनुसार Dirac competing tools की तुलना में 64.8% सस्ता है, और cost के आधार पर 2.8x reduction देता है
- विस्तृत task descriptions और methodology को evals/README.md में देखा जा सकता है
-
task-वार लागत विशेषताएं
transformers,vscode, औरdjangorepositories सहित हर refactoring task में इसने अधिकतर मामलों में सबसे कम या लगभग सबसे कम लागत दर्ज की- उदाहरण के लिए
transformersका DynamicCache task $0.13,djangoका datadict task $0.08, औरvscodeका sendRequest task $0.25 के स्तर पर था - कुछ competing tools ने Incomplete या Failure दर्ज किया, लेकिन Dirac तालिका में दिखाए गए सभी 8 tasks में Success के रूप में चिह्नित है
approach और design
-
context और editing strategy
- Hash-Anchored Edits stable line hashes के आधार पर edit locations को target करता है, जिससे पारंपरिक line-number-based editing में आने वाली "lost in translation" समस्या से बचा जा सके
- Multi-File Batching कई files को एक ही LLM round trip में पढ़ने और edit करने देता है, जिससे latency और API cost घटती है
- High-Bandwidth Context optimization सबसे प्रासंगिक जानकारी को ही बनाए रखता है, जिससे token waste कम होता है और agent हल्का व तेज बना रहता है
-
structure-aware editing
- यह AST-Native Precision को built-in रूप में शामिल करता है, जिससे TypeScript, Python, C++ जैसी भाषाओं की syntax structure को समझते हुए काम करता है
- इसका दावा है कि function extraction या class refactoring जैसे structural manipulations को 100% accuracy के साथ किया जा सकता है
-
tool usage model
- यह file reading/writing, terminal command execution, और headless browser usage को support करता है
- task flow एक approval-based workflow बनाए रखता है ताकि user के पास control बना रहे
- model support केवल उन मामलों तक सीमित है जहां native tool calling उपलब्ध हो, ताकि reliability और performance सुनिश्चित की जा सके
- README के अनुसार MCP supported नहीं है
उपयोग का तरीका और customization
-
project-विशिष्ट behavior control
AGENTS.mdfile के जरिए project-specific instructions लागू करके behavior को customize किया जा सकता है- यह
.ai,.claude,.agentsdirectories को अपने-आप पढ़ता है और Claude skills का भी उपयोग करता है
-
CLI usage flow
dirac authसे authenticate करने के बादdirac "Analyze the architecture of this project"जैसी commands से task चलाया जा सकता हैdirac -p "prompt"Plan Mode में पहले strategy देखने का तरीका हैdirac -y "prompt"Yolo Mode में सभी actions को auto-approve करता हैgit diff | dirac "Review these changes"की तरह pipe input से context सीधे भेजा जा सकता हैdirac historyसे पुराने tasks को देखकर उन्हें फिर से जारी रखा जा सकता है
-
VS Code integration
- VS Code Marketplace से extension install किया जा सकता है
- VS Code sidebar खोलकर Anthropic, OpenAI, OpenRouter जैसे preferred AI providers सेट करने के बाद नया task शुरू किया जा सकता है
runtime environment और provider integration
-
API keys और environment variables
- authentication step को छोड़ने के लिए
ANTHROPIC_API_KEY,OPENAI_API_KEY,OPENROUTER_API_KEY,GEMINI_API_KEY,GROQ_API_KEY,MISTRAL_API_KEY,XAI_API_KEY,HF_TOKENआदि को environment variables के रूप में लिया जा सकता है - पूरी सूची
src/shared/storage/env-config.tsमें है
- authentication step को छोड़ने के लिए
-
AWS Bedrock support
AWS_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKENके साथAWS_BEDROCK_MODELयाAWS_BEDROCK_MODEL_ACT,AWS_BEDROCK_MODEL_PLANसेट करने पर यह अपने-आप Bedrock provider पर switch हो जाता है- इसमें aws-vault के साथ इस्तेमाल किया जा सकने वाला execution example भी शामिल है
- Sonnet 4.6 या उससे नए Claude models के लिए
us.,eu.,ap.जैसे cross-region inference profile prefix की जरूरत होती है, और supported model IDs के लिए AWS docs का संदर्भ दिया गया है
project background
-
open source और lineage
- यह Apache License 2.0 पर आधारित open source project है
- इसे Cline का fork किया गया project बताया गया है
-
reference resources
1 टिप्पणियां
Hacker News की राय
Dirac में मुझे ये हिस्से दिलचस्प लगे
यह Hash-Anchored edits के optimized version से फ़ाइल एडिट करता है, और भाषा के AST का इस्तेमाल करके तय करता है कि कौन-सा कोड context में डालना है, इसलिए बड़े code file को पूरा पढ़ने की ज़रूरत नहीं पड़ती
काम को पूरी तरह batches में बाँधकर bulk read/modify एक साथ संभालता है, और ज़रूरत पड़ने पर मॉडल bash/python/perl scripts सीधे चलाकर तुरंत analysis भी कर लेता है
साथ ही context को काफ़ी बारीकी से manage करता है, ताकि अगली बार मॉडल लगभग पक्का जो जानकारी माँगेगा, उसे पहले से ही शामिल करके update किया जा सके
पहले एक लेख में किसी ने कहा था कि
grepभी काफ़ी हद तक उतना ही असरदार है, और उस context में वह बात कुछ हद तक समझ में आई थीHash अगर सिर्फ़ एक token का भी हो, तब भी ऐसा ही है, और code में reading writing से ज़्यादा होती है, इसलिए cumulative cost भी बढ़ती है
पहले जब मैंने लंबे stable anchors के साथ experiment किया था, तो वह उल्टा regression जैसा लगा, और Dirac की efficiency शायद मूलतः फ़ाइल का skeleton ही दिखाने से ज़्यादा आती है
Batches all operationsका मतलब समझ नहीं आया, इसलिए source देखा; वहाँ ऐसा लगा कि मॉडल से parallel tool calls अच्छे से करवाने की उम्मीद करने के बजाय tool API को ही इस तरह design किया गया है कि वह कई targets की list ले सकेमेरे अनुभव में भी मॉडल bulk parallel calls एक साथ करने में अच्छे नहीं होते, और model जितना weak हो, यह रुझान उतना ज़्यादा दिखता है
ऐसा भी संभव लगता है कि top-tier model सिर्फ़ एक सस्ता editing model बनाकर उसे call करे
यह वाकई दिलचस्प है कि AI harness performance पर कितना बड़ा असर डालता है
Google के official result में 48% से 65% तक जाना बहुत बड़ा फ़र्क है, लेकिन model comparisons तो बहुत देखे हैं, उसी model पर सिर्फ़ harness बदलने के नतीजे लगभग कभी नहीं देखे
जिज्ञासा है कि क्या उसी model पर harness performance compare करने वाला कोई leaderboard है
काफ़ी हैरानी की बात है कि Opus 4.6 में Claude Code सबसे नीचे है; यह Claude Code की सीमा भी हो सकती है, या benchmark खुद क्या दिखा रहा है, इसकी ओर इशारा भी हो सकता है
तब असली बात मॉडल से ज़्यादा harness को स्मार्ट बनाना होगी
अगर benchmark है, तो कम-से-कम किसी दूसरे model family का एक model और शामिल होना चाहिए, तभी पता चलेगा कि यह generalize करता है या नहीं
लागत को देखते हुए Minimax 2.7 ठीक विकल्प लगता है, और तब तक यह तय करना मुश्किल है कि नतीजे Gemini 3 Flash पर overfit तो नहीं हैं
Landing page पर भी साफ़ लिखना चाहिए कि मौजूदा सारे numbers Gemini 3 Flash पर आधारित हैं, और अगर सस्ता होने का मतलब उसी model पर तेज़ होना है, तो completion time को भी benchmark में शामिल करना बेहतर होगा
इसके अलावा skills, nested AGENTS.md, और MCP support भी migration सोच रहे लोगों के लिए अहम हैं
sedसे फ़ाइल बदलने की तरफ़ ढह गयायह स्वाभाविक लगता है कि मॉडल मनमाने tools पर पूरी तरह generalize नहीं करते, और ख़ासकर file editing जैसे आम कामों में training data में मौजूद tool bias का असर आता है
उस लिहाज़ से Gemini family agentic tasks में आम तौर पर कम मज़बूत है, इसलिए शायद उसमें किसी खास tool bias भी कम हो
open-weights models के benchmark की भी कोशिश की थी, लेकिन inference धीमा होने के कारण बार-बार timeout हो गया, और terminal bench में timeout बदला नहीं जा सकता था
इससे जुड़ी शिकायत यहाँ भी लिखी है https://www.reddit.com/r/LocalLLaMA/comments/1stgt39/the_frustrating_inference_capacity_issue_with/
Gemini वाली marking GitHub README में जोड़ दी है, और average completion time कम था, लेकिन कभी-कभी output speed random तरीके से धीमी हो जाती थी, इसलिए उसे सख़्त benchmark में शामिल नहीं किया
skills / AGENTS.md / MCP की जानकारी भी जोड़ दी है
मैंने अभी खुद इसे इस्तेमाल नहीं किया, लेकिन यह जिज्ञासा है कि पूरी नई harness बनाने के बजाय pi के ऊपर extension के रूप में जोड़ने का रास्ता क्यों नहीं चुना
pi का जो extension API मैंने देखा, वह काफ़ी व्यापक लगा, और Hash anchored edits जैसी चीज़ें भी उसमें काफ़ी हद तक implement की जा सकती थीं
project को public करने के लिए धन्यवाद, बाद में खुद देखना चाहूँगा
फिर मैं उसमें खिंचता चला गया, और लगभग 70 हज़ार lines changes, 40 हज़ार lines deletions जमा होने के बाद, दो महीने में यह आज की स्थिति तक आ गया
और इसे सबसे अच्छे से इस्तेमाल करने के लिए कौन-सा model और customization combination बेहतर है
कोड देखते हुए पता चला कि telemetry https://dirac.run/v1/event पर भेजी जाती है
ऐसा नहीं लगा कि यह खुलकर sensitive information भेज रहा है, और न ही यह malicious लगा, लेकिन API errors भी भेजे जा रहे हैं, इसलिए कुछ मामलों में sensitive content leak होने की गुंजाइश है
ऊपर से यह opt-out है और endpoint एक solo developer चला रहा है, इसलिए व्यक्तिगत तौर पर मुझे यही वजह इसे न इस्तेमाल करने के लिए काफ़ी लगती है
dirac.run/v1/eventपर machine ID, token usage, model info, events, error के पहले 500 characters, और platform info भेजे जाते हैंdirac.run/v1/event/decideपर feature flags हर 60 मिनट में machine ID के साथ fetch किए जाते हैं, और यह telemetry opt-out से अलग हमेशा on रहता है; code modify किए बिना इसे बंद नहीं किया जा सकताWeb search/web fetch tools requests की details और system headers api.dirac.run के रास्ते भेजते हैं
Model list भी, भले Anthropic provider इस्तेमाल हो, OpenRouter, HuggingFace, Groq वगैरह पर query भेजती है
यह Cline fork है, इसलिए telemetry mechanism वही विरासत में मिला हिस्सा है, और बस debugging में मदद मिले इस सोच से छोड़ा गया था
कोई malicious intent बिल्कुल नहीं है, और PII न generate किया जाता है, न store
harness कितना अहम है यही असली point है, और मुझे लगता है यह व्याख्या लंबे समय तक टिकेगी
मॉडल उधार लिए जा सकते हैं, prompts भी लगभग कॉपी किए जा सकते हैं, लेकिन benchmark numbers का बड़ा हिस्सा उसके आसपास के harness से तय होता है
उसी harness के तहत Gemini को Sonnet से बदलने से कम, उसी model में harness बदलने से ज़्यादा फ़र्क आ सकता है
cheating-agents पर जो लेख तुमने लिंक किया, वह भी आख़िर यही कहता है; वास्तव में जो मापा जा रहा है, वह harness है, और model उस सामग्री के कच्चे आधार जैसा है
हालाँकि context management कोई सार्वभौमिक गुण कम और मौजूदा पीढ़ी के models की कमजोरी को भरने वाली चीज़ ज़्यादा है, इसलिए कुछ generations बाद यह भी वैसे ग़ायब हो सकता है जैसे question-embedding-based RAG को tools ने पीछे छोड़ दिया
मॉडल को harness खुद बनाना पड़ता है
बधाई, यह सचमुच बहुत अच्छी तरह बना हुआ लगता है
पिछले कुछ हफ़्तों में मेरी तरफ़ भी harness बनाना सबसे मज़ेदार side project रहा है, और भले मैं चीज़ें अक्सर पूरी नहीं कर पाता, लेकिन खासकर दो अनुभवों पर जिज्ञासा है
context management में पुराने tool call responses को prune करना, output truncate करना, और automatic compaction काफ़ी असरदार रहे; सब कुछ याद रखने के फ़ायदे से ज़्यादा context घटाने का फ़ायदा मिला
हाँ, छोटे summaries हमेशा छोड़े
और subagents की तरफ़, मैं एक ऐसा setup आज़मा रहा हूँ जहाँ main agent को लगभग कोई tools expose नहीं करता, सिर्फ़
run_agentदेता हूँ, और नीचे के agents search/execute/fetch इस्तेमाल करते हैंअगर subagents सिर्फ़ concise summary लौटाएँ, तो ऊपर वाला context लंबे समय तक साफ़ रह सकता है; हालाँकि prompt design पर अभी और experiments चल रहे हैं
अगर API caching supported है, तो pruning को जहाँ तक हो सके छेड़ना नहीं चाहिए, क्योंकि हर prune cache तोड़ देता है और 90% discount caching का फ़ायदा उड़ जाता है
subagent Dirac में भी है, क्योंकि Cline feature को बेहतर बनाकर लिया गया है, लेकिन models के बीच delegation सीखने की क्षमता में काफ़ी फ़र्क है
खासकर जब subagent loop में फँस जाए या लौटकर न आए, तब main agent के पास control mechanism होना बहुत ज़रूरी है
यह सचमुच दिलचस्प है, और harness बनाते समय मेरे अनुभव से भी अच्छी तरह मेल खाता है
उसी model के साथ भी अभी काफ़ी बड़ी upside बाकी है
पिछले साल Anthropic यह narrative आगे बढ़ा रहा था कि नए models के साथ harness एक साधारण tool-wrapped while loop जैसा बनता जा रहा है, लेकिन अब उल्टा लगता है
harness की तरफ़ explore करने को बहुत कुछ है, और मेरे काम में rolling context window compaction से कहीं ज़्यादा ताकतवर साबित हुआ
इसके ऊपर अगर persistent high-level summaries और detailed automatic feedback pipeline भी जोड़ दी जाए, तो और बेहतर होता है; हालाँकि यह तब आसान है जब agent का goal साफ़ और consistent हो
harness वाला point खास तौर पर दिलचस्प लगा
जब credits लगभग ख़त्म होने लगते थे, तो छोटे model पर जाना और prompt को ज़्यादा structured करना कई बार gpt-5.4-mini को, अंदाज़े से चल रहे gpt-5.4 से बेहतर बना देता था
इसलिए मैंने
skill distilleryशुरू किया, जो अच्छे agent workflow ideas को छोटे, inspectable और installable skills में बदलता है https://github.com/ouatu-ro/skill-distilleryपहला skill
dirac-workflowहै, जो Dirac के structured code workflow पर आधारित है; यह Dirac की clone नहीं है, और इसमें runtime, persistent AST index, hash-anchor editing engine, या benchmark harness नहीं हैइसकी जगह मैंने छोटे AST helpers और workflow discipline को portable skill के रूप में रखा है, और Dirac repository पर इसे लागू करके एक छोटा report भी जोड़ा है
मूल लेखक के नज़रिए से यह जानना चाहता हूँ कि prompts और tools कितने representative हैं
https://github.com/ouatu-ro/skill-distillery/blob/main/skills/dirac-workflow/scripts/ast_tool.py
मैं Kimi 2.6 और Dirac के साथ एक Rust codebase refactor कर रहा हूँ
दिशा Clean Architecture को और मज़बूत करने की है, और काम का दायरा Beads epic और उसके sub-issues में व्यवस्थित किया गया है
Planning gpt5.5 से की गई थी और completion verification भी gpt5.5 ही कर रहा है
बड़े codebase refactoring में Dirac, OpenCode से ज़्यादा productive रहा, जबकि OpenCode ने
.rsfiles बिगाड़ दीं और उन्हें वापस revert करना पड़ा