یو diff ښيي چې پېچ د څه کولو ادعا کوي. دا نه ښيي چې ایا بګ په رښتیا له منځه تللی، ایا د if نوې څانګه کله هم چلېږي، یا ایا د یوې اړتیا نوې نسخه په پاک نصب کې import ماتوي. بیاکتونکي پر دې پوهېږي، له همدې امله ډېرې بیاکتنې په "LGTM، که ټېسټونه بریالي شي" پای ته رسېږي.
د AI لیکلو پېچونو سره دا تشه لا لویېږي. ماډل په چټکۍ داسې کوډ جوړوي چې د باور وړ ښکاري، او د باور وړ ښکارېدونکی کوډ همغه دی چې د ستړي بیاکتونکي له سترګو تېرېږي. ارزانه حل دا دی چې له دې مخکې چې څوک یې منظور کړي، بدلون وچلول شي — په داسې ځای کې چې هېڅ ته زیان ونه رسوي.
چک: base، head، ټېسټونه
تر ټولو قانع کوونکی ثبوت چې یو پېچ یې وړاندې کولی شي، داسې بیا رامنځته کول دي چې په زاړه کوډ ناکام او په نوي بریالی وي. sandbox دا د 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 سرور له لارې نښلول شوی، د sandbox وسایل لري: sandbox جوړول، کمانډ چلول، فایلونه پورته او ښکته کول. د دې پر ځای چې ولیکي "دا ښايي د Python 3.8 سره همغږي ماته کړي"، برانچ راوړي، کوډ چلوي او traceback راوړي — یا خبر ورکوي چې هر څه سم دي.
داسې اجنټ ته د لګښت حد او یوازې د لوستلو ټوکن ورکړئ، او وټاکئ چې کوم وسایل پرته له پوښتنې رابللی شي. د MCP خوندیتوب تدابیر هره وسیله د خطر د کچې له مخې لیست کوي.
کومه تعرفه
| ریپازیټوري | تعرفه | عادي ځل | اټکلي لګښت |
|---|---|---|---|
| کوچنۍ کتابتون، خالص Python یا JS | small (0.5 vCPU, 1 GB) | 2 دقیقې | $0.0011 |
| د ټېسټ مجموعې سره وېب اپلیکیشن | standard (1 vCPU, 2 GB) | 5 دقیقې | $0.0055 |
| اصلي توسیعونه، کمپایل کېدونکې اړتیاوې | plus (2 vCPU, 4 GB) | 15 دقیقې | $0.033 |
لنډمهاله sandboxes په ثانیه بیل کېږي، لږ تر لږه 60 ثانیې. که بیاکتونکی غواړي څو ورځې هماغه چاپېریال ته راستون شي، هغه د persistent په توګه جوړ کړئ: خپله ډیسک تر 30 ورځو ساتي او د هر پیل شوي ساعت بیل کېږي، نو د دوو ورځو بیاکتنې لپاره ساتل شوی standard sandbox شاوخوا 3.17 ډالر لګښت لري. کله چې pull request یوځای شي، ړنګ یې کړئ.
د پوهېدو وړ حدود
- په هر حساب کې په یو وخت دوه کمانډونه. د هغو بیاکتنو لپاره بس دي چې یو له بل وروسته کېږي. که لسګونه pull requests په یو وخت وګورئ، په کتار کې به ودرېږي.
- دننه ته پورټونه نشته. اپلیکیشن په براوزر کې نه شئ خلاصولی. دننه یې پیل کړئ او له دویمې کمانډ څخه یې په
curl localhostټېسټ کړئ. - دننه Docker نشته. هغه ټېسټونه چې کانټینرونه چلوي، په VPS کې پر runner ښه دي.
- بهر ته انټرنېټ خلاص دی. همدا
pip installکاروي. په sandbox کې داسې څه مه ږدئ چې د پېچ لیکوال ته به مو نه ورکول.
څنګه پیل وکړو
نوي حسابونه 1 ډالر د sandbox وخت ترلاسه کوي، چې د standard تعرفې پر سر له سلو ډېرو بیاکتنو لپاره بس دی. په د sandbox پاڼه کې تعرفې دي، په د SDK مرجع کې پورته کارول شوې هره طریقه، او په Python SDK په 5 دقیقو کې کې تنظیم.
اړوند: د ټول پایپلاین لپاره جلا CI ټېسټونه، او د هغو اجنټانو لپاره چې کوډ لیکي د AI اجنټانو لپاره sandbox.
تبصرې
لا تبصرې نشته. لومړی اوسئ.