Diff menunjukkan apa yang diklaim sebuah patch. Diff tidak menunjukkan apakah bug benar-benar hilang, apakah cabang baru sebuah if pernah dijalankan, atau apakah kenaikan versi dependensi merusak import pada instalasi bersih. Reviewer tahu hal ini, itulah sebabnya begitu banyak review berakhir dengan "LGTM, asalkan tesnya lolos".
Dengan patch tulisan AI, celahnya makin lebar. Model menghasilkan kode yang tampak masuk akal dengan cepat, dan yang tampak masuk akal justru jenis yang lolos dari reviewer yang lelah. Solusi murahnya adalah menjalankan perubahan sebelum ada yang menyetujuinya — di tempat yang tidak bisa merusak apa pun.
Pemeriksaannya: base, head, tes
Bukti paling meyakinkan yang bisa diberikan sebuah patch adalah reproduksi yang gagal di kode lama dan lolos di kode baru. Sandbox mengubahnya menjadi skrip 20 baris. Ini adalah microVM Firecracker dengan Python 3.12, Node.js 22, git, dan curl, yang menyala dalam sekitar satu detik:
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 adalah cuplikan dari laporan bug. Jika keluar dengan kode bukan nol di base dan nol di head, patch memperbaiki apa yang diklaimnya. Kirim baris itu beserta ringkasan tes sebagai komentar di pull request, dan reviewer mulai dari fakta.
Test suite berjalan sebagai tugas latar belakang karena satu perintah sinkron berhenti di 55 detik. TTL 30 menit membatasi seberapa lama eksekusi yang macet bisa menagih Anda.
Agen review yang menjalankan kode
Ide yang sama berlaku untuk reviewer AI. Terhubung lewat server MCP, agen memiliki alat sandbox: membuat sandbox, menjalankan perintah, mengunggah dan mengunduh file. Alih-alih menulis "ini mungkin merusak kompatibilitas dengan Python 3.8", ia mengambil branch, menjalankan kode, dan mengutip traceback — atau melaporkan bahwa semuanya baik-baik saja.
Beri agen seperti itu batas pengeluaran dan token hanya-baca, lalu tentukan alat mana yang boleh dipanggilnya tanpa bertanya. Pengaman MCP mencantumkan setiap alat berdasarkan tingkat risikonya.
Tarif mana
| Repositori | Tarif | Putaran umum | Perkiraan biaya |
|---|---|---|---|
| Library kecil, Python atau JS murni | small (0.5 vCPU, 1 GB) | 2 mnt | $0.0011 |
| Aplikasi web dengan test suite | standard (1 vCPU, 2 GB) | 5 mnt | $0.0055 |
| Ekstensi native, dependensi yang dikompilasi | plus (2 vCPU, 4 GB) | 15 mnt | $0.033 |
Sandbox sementara ditagih per detik dengan minimum 60 detik. Jika reviewer ingin kembali ke lingkungan yang sama selama beberapa hari, buatlah sebagai persistent: ia menyimpan disknya hingga 30 hari dan ditagih per jam yang dimulai, sehingga sandbox standard yang dipertahankan untuk review dua hari berbiaya sekitar $3.17. Hapus setelah pull request di-merge.
Batas yang perlu diketahui
- Dua perintah sekaligus per akun. Lebih dari cukup untuk review, yang berjalan satu per satu. Jika Anda memeriksa puluhan pull request sekaligus, semuanya mengantre.
- Tanpa port masuk. Anda tidak bisa membuka aplikasi di browser. Jalankan di dalam dan uji dengan
curl localhostdari perintah kedua. - Tanpa Docker di dalam. Tes yang menjalankan kontainer tempatnya di runner pada VPS.
- Internet keluar terbuka. Itulah yang membuat
pip installberfungsi. Jangan masukkan apa pun ke sandbox yang tidak akan Anda berikan kepada penulis patch.
Memulai
Akun baru mendapat $1 waktu sandbox, cukup untuk lebih dari seratus putaran review pada tarif standard. Halaman sandbox memuat tarif, referensi SDK setiap metode yang dipakai di atas, dan SDK Python dalam 5 menit penyiapannya.
Terkait: eksekusi tes CI terisolasi untuk seluruh pipeline, dan sandbox untuk agen AI untuk agen yang menulis kodenya sejak awal.
Komentar
Belum ada komentar. Jadilah yang pertama.