−25%

Windows के सालाना भुगतान पर, 31 अक्टूबर तक। प्लान देखें

EQVPS
शुरू करें

कोड रिव्यू और PR जाँच के लिए सैंडबॉक्स: मंज़ूरी देने से पहले साबित करें कि पैच काम करता है

diff पढ़कर पता चलता है कि पैच क्या दावा करता है। उसे चलाकर पता चलता है कि दावा सच है या नहीं। pull request को एक-बार-इस्तेमाल microVM में लाएँ, बदलाव से पहले और बाद में बग दोहराएँ, टेस्ट चलाएँ और सबूत के साथ रिव्यू करें — हर बार लगभग आधे सेंट में।

diff दिखाता है कि पैच क्या करने का दावा करता है। यह नहीं दिखाता कि बग सच में चला गया या नहीं, if की नई शाखा कभी चलती भी है या नहीं, या डिपेंडेंसी का नया संस्करण साफ़ इंस्टॉलेशन पर import तोड़ देता है या नहीं। रिव्यूअर यह जानते हैं, इसीलिए इतने रिव्यू "LGTM, अगर टेस्ट पास हो जाएँ" पर ख़त्म होते हैं।

AI के लिखे पैच के साथ यह अंतर और बढ़ जाता है। मॉडल जल्दी से विश्वसनीय दिखने वाला कोड बना देता है, और विश्वसनीय दिखने वाला कोड ही थके हुए रिव्यूअर की नज़र से फिसल जाता है। सस्ता उपाय है कि किसी के मंज़ूरी देने से पहले बदलाव को चलाया जाए — ऐसी जगह जहाँ वह कुछ नुक़सान न कर सके।

जाँच: base, head, टेस्ट

कोई पैच जो सबसे भरोसेमंद सबूत दे सकता है, वह है ऐसा दोहराव जो पुराने कोड पर असफल हो और नए पर पास हो। सैंडबॉक्स इसे 20 लाइन की स्क्रिप्ट बना देता है। यह Python 3.12, Node.js 22, git और curl वाला Firecracker microVM है, जो लगभग एक सेकंड में शुरू होता है:

import os
from eqvps import Sandbox

REPO, BASE, HEAD = os.environ["REPO_URL"], os.environ["BASE_SHA"], os.environ["HEAD_SHA"]

def repro(sb, ref):
    sb.exec(f"cd /root/app && git checkout -q {ref}", timeout=55)
    return sb.exec("cd /root/app && python3 /root/repro.py", timeout=55).exit_code

with Sandbox.create(tariff="standard", ttl=1800) as sb:
    sb.exec(f"git clone -q {REPO} /root/app", timeout=55)
    sb.exec("cd /root/app && pip install -q -r requirements.txt", timeout=55)
    sb.upload("/root/repro.py", open("repro.py").read())
    before, after = repro(sb, BASE), repro(sb, HEAD)
    tests = sb.exec("cd /root/app && python3 -m pytest -q", background=True).wait()
    print(f"repro on base: {before}, on head: {after}; tests: {tests.state}, exit {tests.exit_code}")

repro.py बग रिपोर्ट का कोड टुकड़ा है। अगर यह base पर शून्य से अलग कोड और head पर शून्य के साथ ख़त्म होता है, तो पैच वही ठीक करता है जिसका वह दावा करता है। वह लाइन और टेस्ट का सारांश pull request पर टिप्पणी के रूप में डालें, और रिव्यूअर तथ्यों से शुरुआत करेगा।

टेस्ट सूट बैकग्राउंड टास्क के रूप में चलता है क्योंकि एक सिंक्रोनस कमांड 55 सेकंड पर रुक जाती है। 30 मिनट का TTL तय करता है कि अटका हुआ रन ज़्यादा से ज़्यादा कितनी देर तक बिल बना सकता है।

कोड चलाने वाले रिव्यू एजेंट

यही विचार AI रिव्यूअर पर भी लागू होता है। MCP सर्वर से जुड़े एजेंट के पास सैंडबॉक्स टूल होते हैं: सैंडबॉक्स बनाना, कमांड चलाना, फ़ाइलें अपलोड और डाउनलोड करना। "यह Python 3.8 के साथ संगतता तोड़ सकता है" लिखने के बजाय वह ब्रांच लाता है, कोड चलाता है और traceback उद्धृत करता है — या बताता है कि सब ठीक है।

ऐसे एजेंट को ख़र्च की सीमा और सिर्फ़-पढ़ने वाला टोकन दें, और तय करें कि वह बिना पूछे कौन-से टूल बुला सकता है। MCP सुरक्षा उपाय हर टूल को जोखिम के स्तर के हिसाब से सूचीबद्ध करते हैं।

कौन-सा टैरिफ़

रिपॉज़िटरीटैरिफ़सामान्य बारअनुमानित लागत
छोटी लाइब्रेरी, शुद्ध Python या JSsmall (0.5 vCPU, 1 GB)2 मिनट$0.0011
टेस्ट सूट वाला वेब ऐपstandard (1 vCPU, 2 GB)5 मिनट$0.0055
नेटिव एक्सटेंशन, कंपाइल होने वाली डिपेंडेंसीplus (2 vCPU, 4 GB)15 मिनट$0.033

अस्थायी सैंडबॉक्स का बिल प्रति सेकंड बनता है, कम से कम 60 सेकंड। अगर रिव्यूअर कुछ दिनों तक उसी वातावरण में लौटना चाहता है, तो उसे persistent के रूप में बनाएँ: वह अपनी डिस्क 30 दिन तक रखता है और हर शुरू हुए घंटे का बिल बनता है, इसलिए दो दिन के रिव्यू के लिए रखा गया standard सैंडबॉक्स लगभग $3.17 का पड़ता है। pull request मर्ज होने पर उसे मिटा दें।

जानने लायक़ सीमाएँ

  • हर खाते में एक समय पर दो कमांड। एक के बाद एक होने वाले रिव्यू के लिए काफ़ी। अगर आप दर्जनों pull requests एक साथ जाँचते हैं, तो वे कतार में लगेंगे।
  • अंदर आने वाले पोर्ट नहीं। आप ऐप को ब्राउज़र में नहीं खोल सकते। उसे अंदर शुरू करें और दूसरी कमांड से curl localhost से टेस्ट करें।
  • अंदर Docker नहीं। कंटेनर चलाने वाले टेस्ट VPS पर runner में होने चाहिए।
  • बाहर जाने वाला इंटरनेट खुला है। इसी से pip install काम करता है। सैंडबॉक्स में ऐसा कुछ न रखें जो आप पैच के लेखक को न देते।

शुरुआत कैसे करें

नए खातों को $1 का सैंडबॉक्स समय मिलता है, जो standard टैरिफ़ पर सौ से ज़्यादा रिव्यू के लिए काफ़ी है। सैंडबॉक्स पेज पर टैरिफ़ हैं, SDK संदर्भ में ऊपर इस्तेमाल हुई हर विधि, और 5 मिनट में Python SDK में सेटअप।

संबंधित: पूरी पाइपलाइन के लिए अलग CI टेस्ट रन, और कोड लिखने वाले एजेंटों के लिए AI एजेंटों के लिए सैंडबॉक्स।

तैनात करने के लिए तैयार? क्रिप्टो से भुगतान करें, बिना KYC — लगभग एक मिनट में ऑनलाइन।

अभी तैनात करें →

FAQ

यह pull request पर CI चलाने से कैसे अलग है?

CI बताता है कि मौजूदा टेस्ट पास होते हैं या नहीं। रिव्यू जाँच बताती है कि पैच वही करता है जो वह कहता है: बग रिपोर्ट से दोहराने वाला कोड पुराने और नए दोनों कोड पर चलाती है, वह किनारे का मामला आज़माती है जिसकी रिव्यूअर को चिंता है, और एक सैंडबॉक्स रखती है जिसमें रिव्यूअर ख़ुद खोजबीन कर सके। दोनों साथ मिलकर अच्छा काम करते हैं।

क्या AI रिव्यू एजेंट इसका उपयोग कर सकता है?

हाँ, और सबसे ज़्यादा फ़ायदा वहीं है। MCP के ज़रिए एजेंट को सैंडबॉक्स बनाने, कमांड चलाने और फ़ाइलें पढ़ने के टूल मिलते हैं। यह अंदाज़ा लगाने के बजाय कि बदलाव कुछ तोड़ेगा या नहीं, वह कोड चलाता है और रिव्यू में आउटपुट उद्धृत करता है।

क्या किसी अनजान का pull request लाना सुरक्षित है?

सैंडबॉक्स इसी के लिए है। कोड अपने ख़ुद के कर्नेल वाले अलग microVM में चलता है, और उसमें आपकी डाली चीज़ों के अलावा आपका कुछ नहीं होता। ऐसा टोकन न दें जो आपकी रिपॉज़िटरी में लिख सके; निजी रिपॉज़िटरी के लिए सिर्फ़-पढ़ने वाला टोकन काफ़ी है।

क्या मैं pull request का ऐप अपने ब्राउज़र में खोल सकता हूँ?

नहीं। सैंडबॉक्स में अंदर आने वाले पोर्ट नहीं होते, इसलिए बाहर से कोई उनसे नहीं जुड़ सकता। आप ऐप को अंदर शुरू करके दूसरी कमांड से curl से टेस्ट कर सकते हैं, या अगर रिव्यूअर को इंटरफ़ेस पर क्लिक करना हो तो प्रीव्यू VPS पर डिप्लॉय कर सकते हैं।

एक रिव्यू की लागत कितनी है?

एक सामान्य बार — क्लोन, इंस्टॉल, दो बार दोहराना, टेस्ट चलाना — standard टैरिफ़ पर कुछ मिनट लेता है और लगभग $0.005 का पड़ता है। आप प्रीपेड बैलेंस से प्रति सेकंड भुगतान करते हैं, कम से कम 60 सेकंड।

टिप्पणियाँ

अभी तक कोई टिप्पणी नहीं। पहले बनें।

एक टिप्पणी छोड़ें

टिप्पणियाँ दिखने से पहले मॉडरेट की जाती हैं।