−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS
Zacznij

Sandbox do code review i sprawdzania PR: udowodnij, że poprawka działa, zanim ją zatwierdzisz

Diff mówi, co poprawka obiecuje. Uruchomienie mówi, czy to prawda. Pobierz pull request do jednorazowej microVM, odtwórz błąd przed i po, uruchom testy i rób review z dowodami — za mniej więcej pół centa za przebieg.

Diff pokazuje, co poprawka twierdzi, że robi. Nie pokazuje, czy błąd naprawdę zniknął, czy nowa gałąź if kiedykolwiek się wykona ani czy podbicie zależności nie psuje importu przy czystej instalacji. Recenzenci o tym wiedzą, dlatego tyle review kończy się słowami „LGTM, o ile testy przejdą”.

Przy poprawkach pisanych przez AI ta luka rośnie. Model szybko produkuje wiarygodnie wyglądający kod, a wiarygodnie wyglądający to dokładnie taki, który prześlizguje się obok zmęczonego recenzenta. Tanie rozwiązanie: uruchomić zmianę, zanim ktokolwiek ją zatwierdzi — tam, gdzie niczego nie zepsuje.

Sprawdzenie: base, head, testy

Najbardziej przekonujący dowód, jaki może dać poprawka, to odtworzenie, które pada na starym kodzie i przechodzi na nowym. Sandbox zamienia to w skrypt na 20 linii. To microVM Firecracker z Pythonem 3.12, Node.js 22, git i curl, uruchamiana w około sekundę:

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 to fragment z raportu błędu. Jeśli kończy się kodem różnym od zera na base i zerem na head, poprawka naprawia to, co deklaruje. Opublikuj tę linię razem z podsumowaniem testów jako komentarz w pull requeście, a recenzent zaczyna od faktów.

Zestaw testów działa jako zadanie w tle, bo pojedyncze polecenie synchroniczne zatrzymuje się po 55 sekundach. TTL 30 minut ogranicza, ile może kosztować zawieszony przebieg.

Agenci review, którzy uruchamiają kod

Ten sam pomysł działa dla recenzenta AI. Podłączony przez serwer MCP agent ma narzędzia sandboxów: utworzyć sandbox, wykonać polecenie, wysłać i pobrać pliki. Zamiast pisać „to może zepsuć zgodność z Pythonem 3.8”, pobiera gałąź, uruchamia kod i cytuje traceback — albo informuje, że wszystko jest w porządku.

Daj takiemu agentowi limit wydatków i token tylko do odczytu oraz zdecyduj, które narzędzia może wywoływać bez pytania. W zabezpieczeniach MCP każde narzędzie jest opisane według poziomu ryzyka.

Która taryfa

RepozytoriumTaryfaTypowy przebiegPrzybliżony koszt
Mała biblioteka, czysty Python lub JSsmall (0.5 vCPU, 1 GB)2 min$0.0011
Aplikacja webowa z zestawem testówstandard (1 vCPU, 2 GB)5 min$0.0055
Rozszerzenia natywne, kompilowane zależnościplus (2 vCPU, 4 GB)15 min$0.033

Sandboxy efemeryczne są rozliczane za sekundę z minimum 60 sekund. Jeśli recenzent chce wracać do tego samego środowiska przez kilka dni, utwórz je jako persistent: zachowuje dysk do 30 dni i jest rozliczane za każdą rozpoczętą godzinę, więc sandbox standard trzymany na dwudniowe review kosztuje około $3.17. Usuń go po scaleniu pull requestu.

Limity, które warto znać

  • Dwa polecenia naraz na konto. W zupełności wystarcza na review, które idą jedno po drugim. Jeśli sprawdzasz dziesiątki pull requestów jednocześnie, ustawią się w kolejce.
  • Brak portów przychodzących. Nie otworzysz aplikacji w przeglądarce. Uruchom ją w środku i przetestuj przez curl localhost z drugiego polecenia.
  • Brak Dockera w środku. Testy, które uruchamiają kontenery, należą na runner na VPS.
  • Ruch wychodzący jest otwarty. Dzięki temu działa pip install. Nie wkładaj do sandboxa niczego, czego nie dałbyś autorowi poprawki.

Jak zacząć

Nowe konta dostają $1 czasu sandboxów, co wystarcza na ponad sto przebiegów review na taryfie standard. Strona sandboxów pokazuje taryfy, dokumentacja SDK każdą użytą wyżej metodę, a SDK dla Pythona w 5 minut konfigurację.

Powiązane: izolowane przebiegi testów CI dla całego pipeline'u i sandbox dla agentów AI dla agentów, którzy ten kod w ogóle piszą.

Gotowy na wdrożenie? Płać kryptowalutą, bez KYC — online w około minutę.

Wdróż teraz →

FAQ

Czym to się różni od uruchomienia CI na pull requeście?

CI odpowiada, czy istniejące testy przechodzą. Sprawdzenie w ramach review odpowiada, czy poprawka robi to, co deklaruje: uruchamia odtworzenie z raportu błędu na starym i nowym kodzie, próbuje przypadku brzegowego, który niepokoi recenzenta, i utrzymuje sandbox, w którym recenzent może pogrzebać. Razem działają dobrze.

Czy może z tego korzystać agent AI do review?

Tak, i tam opłaca się to najbardziej. Przez MCP agent dostaje narzędzia do tworzenia sandboxa, wykonywania poleceń i czytania plików. Zamiast zgadywać, czy zmiana coś psuje, uruchamia kod i cytuje wyjście w review.

Czy pobranie pull requestu od nieznajomego jest bezpieczne?

Właśnie do tego służy sandbox. Kod działa w osobnej microVM z własnym jądrem, a w środku nie ma niczego twojego poza tym, co tam umieścisz. Nie przekazuj tokenu z prawem zapisu do repozytorium; do prywatnych repozytoriów wystarczy token tylko do odczytu.

Czy mogę otworzyć aplikację z pull requestu w przeglądarce?

Nie. Sandboxy nie mają portów przychodzących, więc nic z zewnątrz nie może się z nimi połączyć. Możesz uruchomić aplikację w środku i przetestować ją curlem z innego polecenia albo wdrażać podglądy na VPS, jeśli recenzenci muszą przeklikać interfejs.

Ile kosztuje jeden przebieg review?

Typowy przebieg — klonowanie, instalacja, dwa odtworzenia, testy — trwa kilka minut na taryfie standard i kosztuje około $0.005. Płacisz za sekundę z minimum 60 sekund, z przedpłaconego salda.

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.