Bir diff, yamanın ne yaptığını iddia ettiğini gösterir. Hatanın gerçekten gidip gitmediğini, bir if'in yeni dalının hiç çalışıp çalışmadığını ya da bağımlılık güncellemesinin temiz kurulumda import'u bozup bozmadığını göstermez. İncelemeciler bunu bilir; bu yüzden pek çok inceleme "LGTM, testler geçerse" diye biter.
Yapay zekânın yazdığı yamalarda bu açık büyür. Bir model hızla makul görünen kod üretir ve makul görünen, tam da yorgun bir incelemecinin gözünden kaçan türdür. Ucuz çözüm, değişikliği kimse onaylamadan önce, hiçbir şeye zarar veremeyeceği bir yerde çalıştırmaktır.
Kontrol: base, head, testler
Bir yamanın sunabileceği en ikna edici kanıt, eski kodda başarısız olup yenisinde geçen bir yeniden üretimdir. Sandbox bunu 20 satırlık bir betiğe dönüştürür. Python 3.12, Node.js 22, git ve curl içeren, yaklaşık bir saniyede açılan bir Firecracker microVM'dir:
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, hata raporundaki kod parçasıdır. base üzerinde sıfırdan farklı, head üzerinde sıfır koduyla çıkıyorsa yama düzelttiğini iddia ettiği şeyi düzeltiyor demektir. Bu satırı test özetiyle birlikte pull request'e yorum olarak yazın; incelemeci olgularla başlasın.
Test paketi arka plan görevi olarak çalışır, çünkü tek bir senkron komut 55 saniyede durur. 30 dakikalık TTL, takılan bir koşunun size ne kadar fatura çıkarabileceğini sınırlar.
Kod çalıştıran inceleme ajanları
Aynı fikir yapay zekâ incelemecisi için de işler. MCP sunucusu üzerinden bağlanan bir ajanın sandbox araçları vardır: sandbox oluşturma, komut çalıştırma, dosya yükleme ve indirme. "Bu, Python 3.8 uyumluluğunu bozabilir" yazmak yerine branch'i alır, kodu çalıştırır ve traceback'i alıntılar — ya da her şeyin yolunda olduğunu bildirir.
Böyle bir ajana bir harcama limiti ve salt okunur bir token verin; hangi araçları sormadan çağırabileceğine karar verin. MCP güvenlik önlemleri her aracı risk düzeyine göre listeler.
Hangi tarife
| Depo | Tarife | Tipik geçiş | Yaklaşık maliyet |
|---|---|---|---|
| Küçük kütüphane, saf Python veya JS | small (0.5 vCPU, 1 GB) | 2 dk | $0.0011 |
| Test paketi olan web uygulaması | standard (1 vCPU, 2 GB) | 5 dk | $0.0055 |
| Yerel eklentiler, derlenen bağımlılıklar | plus (2 vCPU, 4 GB) | 15 dk | $0.033 |
Geçici sandbox'lar en az 60 saniyeyle saniye başına faturalanır. Bir incelemeci birkaç gün boyunca aynı ortama dönmek istiyorsa, onu persistent olarak oluşturun: diskini 30 güne kadar korur ve başlayan her saat için faturalanır; iki günlük bir inceleme için tutulan standard bir sandbox yaklaşık $3.17 tutar. Pull request birleştirildiğinde silin.
Bilinmesi gereken sınırlar
- Hesap başına aynı anda iki komut. Birbiri ardına yapılan incelemeler için fazlasıyla yeterli. Onlarca pull request'i aynı anda kontrol ederseniz sıraya girerler.
- Gelen port yok. Uygulamayı tarayıcıda açamazsınız. İçeride başlatın ve ikinci bir komuttan
curl localhostile test edin. - İçeride Docker yok. Konteyner başlatan testlerin yeri bir VPS runner'ıdır.
- Giden internet açık.
pip install'ı çalıştıran şey bu. Sandbox'a, yamanın yazarına vermeyeceğiniz hiçbir şeyi koymayın.
Başlarken
Yeni hesaplar $1 sandbox süresi alır; bu, standard tarifesinde yüzden fazla inceleme geçişine yeter. Sandbox sayfasında tarifeler, SDK başvurusunda yukarıda kullanılan her yöntem, 5 dakikada Python SDK'sı sayfasında ise kurulum var.
İlgili: tüm pipeline için izole CI test koşuları ve kodu en baştan yazan ajanlar için yapay zekâ ajanları için sandbox.
Yorumlar
Henüz yorum yok. İlk olun.