इस प्रोजेक्ट के बारे में

## अवलोकन `prod-code` AI कोडिंग एजेंटों के बेड़े के लिए डिज़ाइन किया गया एक रिमोट कोड इंटेलिजेंस सर्वर है। यह भाषा विश्लेषण, बिल्ड और टेस्ट को डेवलपर के लैपटॉप से हटाकर LAN नोड पर ले जाता है, जबकि संपादन अनुभव स्थानीय रहता है। सिस्टम चेकआउट को एक गेटवे पर मिरर करता है जो वार्म एनालाइज़र (इन-प्रोसेस rust-analyzer; gopls, clangd, TypeScript, pyright, sourcekit-lsp चाइल्ड के रूप में) बनाए रखता है और वहां कमांड निष्पादित करता है। एजेंट MCP टूल के माध्यम से इसे एक्सेस करते हैं, और संपादक इसे ड्रॉप-इन लैंग्वेज सर्वर के रूप में उपयोग कर सकते हैं। ## मुख्य विशेषताएं - **रिमोट विश्लेषण**: लैंग्वेज सर्वर LAN नोड पर चलते हैं, लैपटॉप पर नहीं, जिससे स्थानीय CPU और मेमोरी लोड कम होता है। - **MCP एकीकरण**: मॉडल कॉन्टेक्स्ट प्रोटोकॉल के माध्यम से AI एजेंटों (Claude, Codex, Gemini) को टूल उजागर करता है। - **संपादक समर्थन**: सेटिंग्स और सेव इवेंट के लिए प्रोटोकॉल ब्रिजिंग के साथ Zed जैसे संपादकों के लिए लैंग्वेज सर्वर के रूप में कार्य करता है। - **बहु-भाषा**: Rust, Go, C/C++, TypeScript/JavaScript, Python और Swift का समर्थन करता है। - **सुरक्षित रीफैक्टरिंग**: सिमेंटिक रीनाम, सिग्नेचर परिवर्तन, मूव, एक्सट्रैक्ट और अधिक के लिए टूल, दूसरे एनालाइज़र पर सत्यापन के साथ। - **बिल्ड/टेस्ट निष्पादन**: कमांड वार्म कैश के साथ नोड पर चलते हैं; परिणाम और फ़ाइल परिवर्तन वापस सिंक होते हैं। - **क्लस्टर समर्थन**: कई नोड गॉसिप कर सकते हैं और लोड और भाषा समर्थन के आधार पर वर्कस्पेस वितरित कर सकते हैं। ## एजेंटों के लिए टूल MCP सर्वर टूल का एक व्यापक सेट प्रदान करता है: - **कोड खोजें**: `code_search`, `code_symbols`, `code_definition`, `code_references`, `code_callers`, `code_callees`, `code_implementations`, `code_supertypes`, `code_outline`, `code_source`। - **समझें**: `code_slice`, `code_hover`, `code_type_at`, `code_impact`, `code_dead_code`, `code_prune_orphans`। - **सुरक्षित रूप से बदलें**: `code_validate_edit`, `code_diagnostics`, `code_rename`, `code_safe_delete`, `code_change_signature`, `code_move`, `code_extract_function`, `code_introduce_parameter_object`, `code_migrate_type`, `code_generify`, `code_invert_boolean`, `code_make_static`, `code_inline_parameter`, `code_extract_delegate`, `code_extract_trait`, `code_loop_to_iterator`, `code_introduce_variable`, `code_convert_to_method`, `code_wrap_return`, `code_extract_field`, `code_encapsulate_field`, `code_schema_rename`, `code_assists`, `code_codemod`, `code_generate_fixture`, `code_shadow_run`। - **चलाएं**: `code_check`, `code_lint`, `code_test`, `code_benchmarks`, `code_exec`, `code_diagnose_failure`। - **संचालित करें**: `code_status`, `code_sync`। सभी स्थिति-आधारित टूल फ़ाइल/लाइन के बजाय `symbol` तर्क भी स्वीकार करते हैं, ताकि एजेंटों को लाइन नंबरों के लिए grep करने की आवश्यकता न हो। ## यह कैसे काम करता है - **मिरर किए गए चेकआउट**: पहला संपर्क पथ, आकार और हैश का मैनिफेस्ट भेजता है; गेटवे मूल रेपो से एक वर्कट्री सीड करता है और केवल लापता फ़ाइलों को सिंक करता है। बाद के सिंक वॉटरमार्क और डिफ का उपयोग करते हैं। - **प्रति वर्कट्री एक एनालाइज़र**: प्रत्येक git वर्कट्री को अपना सर्वर वर्कस्पेस और डेटाबेस मिलता है, जो क्रॉस-संदूषण को रोकता है। इंजन 30 मिनट तक निष्क्रिय रहने तक निवासी रहते हैं। - **दूसरे एनालाइज़र पर सत्यापन**: मुख्य एनालाइज़र की स्थिति को दूषित करने से बचने के लिए संपादन प्रस्ताव एक अलग इंजन पर जांचे जाते हैं। - **नोड पर बिल्ड और टेस्ट**: कमांड वर्कस्पेस की अपनी `target/` निर्देशिका में चलते हैं, जिससे कैश गर्म रहते हैं। बदली गई फ़ाइलें चेकआउट में वापस लिखी जाती हैं। - **क्लस्टर गॉसिप**: नोड हर 5 सेकंड में गॉसिप करते हैं; एक क्लाइंट को एक सीड पता चाहिए। प्लेसमेंट मौजूदा होल्डिंग्स और लोड पर विचार करता है। ## स्थापना ```sh # क्लाइंट (एक बाइनरी; गेटवे उसी बाइनरी का सहोदर है) cargo install --path crates/prod-code-client # Claude के साथ पंजीकरण claude mcp add --scope user prod-code -e PROD_CODE_REMOTE=192.0.2.10:9400 -- prod-code mcp # Codex के साथ पंजीकरण codex mcp add prod-code --env PROD_CODE_REMOTE=192.0.2.10:9400 -- prod-code mcp # नोड पर prod-code-server --bind 0.0.0.0:9400 --storage /srv/prod-code/workspaces \ --advertise <this host>:9400 --peers <other nodes> ``` ## संपादक उपयोग `prod-code lsp` संपादक के लैंग्वेज सर्वर के रूप में कार्य करता है। भाषा का अपना सर्वर नोड पर चलता है, और ब्रिज प्रोटोकॉल को दोनों दिशाओं में ले जाता है। Zed के लिए, `editors/zed` में एक समर्पित एक्सटेंशन है, या आप Zed के rust-analyzer को `prod-code lsp --language rust` पर इंगित कर सकते हैं। ## कॉन्फ़िगरेशन प्रति-रिपॉजिटरी विकल्प चेकआउट रूट पर `prod-code.toml` में सेट किए जा सकते हैं, जैसे Rust फीचर फ्लैग, sysroot उपयोग और लक्ष्य चयन। ## मेट्रिक्स और संचालन प्रत्येक क्वेरी, कमांड और सिंक राउंड को एक JSONL फ़ाइल में इवेंट (एजेंट, होस्ट, वर्कस्पेस, विधि, अवधि, सफलता) के रूप में लॉग किया जाता है। `prod-code metrics` p50 और p95 के साथ क्लस्टर में एकत्रित करता है। macOS नोड्स के लिए एक डिप्लॉय स्क्रिप्ट हस्ताक्षर और launchd सेटअप संभालती है। ## फ़ील्ड मूल्यांकन परियोजना में प्रमुख ओपन-सोर्स रिपॉजिटरी (ripgrep, tantivy, tokio, polars, uv, bevy, prometheus, kubernetes, etcd, django, black) के खिलाफ मानकीकृत 67-टूल प्रोटोकॉल का उपयोग करके मूल्यांकन शामिल है, जिसमें विस्तृत ब्लॉग रिपोर्ट लिंक की गई हैं। ## आवश्यकताएं निर्माण के लिए Rust 1.95.0 या नया संस्करण आवश्यक है। rustup के साथ स्थापित करें: ```sh rustup toolchain install 1.95.0 --profile minimal -c rustfmt -c clippy ``` ## लाइसेंस MIT / Apache-2.0 दोहरी-लाइसेंस।