−25%

su Windows con pagamento annuale, fino al 31/10. Vai ai piani

EQVPS
Inizia

Sandbox per code review e controlli delle PR: dimostra che una patch funziona prima di approvarla

Leggere un diff ti dice cosa promette una patch. Eseguirla ti dice se è vero. Scarica una pull request in una microVM usa e getta, riproduci il bug prima e dopo, esegui i test e fai la review con le prove, per circa mezzo centesimo a passaggio.

Un diff mostra cosa una patch dichiara di fare. Non mostra se il bug è davvero sparito, se il nuovo ramo di un if viene mai eseguito o se l'aggiornamento di una dipendenza rompe l'import su un'installazione pulita. I revisori lo sanno, ed è per questo che tante review finiscono con «LGTM, a patto che i test passino».

Con le patch scritte dall'IA il divario si allarga. Un modello produce velocemente codice plausibile, e il plausibile è proprio quello che sfugge a un revisore stanco. La soluzione economica è eseguire la modifica prima che qualcuno la approvi, in un posto dove non può danneggiare nulla.

Il controllo: base, head, test

La prova più convincente che una patch possa offrire è una riproduzione che fallisce sul codice vecchio e passa su quello nuovo. Una sandbox la trasforma in uno script di 20 righe. È una microVM Firecracker con Python 3.12, Node.js 22, git e curl, avviata in circa un secondo:

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 è lo snippet dal bug report. Se esce con un codice diverso da zero su base e con zero su head, la patch corregge ciò che dichiara di correggere. Pubblica quella riga, insieme al riepilogo dei test, come commento sulla pull request, e il revisore parte dai fatti.

La suite di test gira come attività in background perché un singolo comando sincrono si ferma a 55 secondi. Il TTL di 30 minuti limita quanto può costare un'esecuzione bloccata.

Agenti di review che eseguono il codice

La stessa idea funziona per un revisore IA. Collegato tramite il server MCP, un agente ha a disposizione gli strumenti delle sandbox: creare una sandbox, eseguire un comando, caricare e scaricare file. Invece di scrivere «questo potrebbe rompere la compatibilità con Python 3.8», scarica il branch, esegue il codice e cita il traceback, oppure riferisce che va tutto bene.

Dai a un agente del genere un tetto di spesa e un token di sola lettura, e decidi quali strumenti può chiamare senza chiedere. Le protezioni MCP elencano ogni strumento per livello di rischio.

Quale tariffa

RepositoryTariffaPassaggio tipicoCosto indicativo
Piccola libreria, Python o JS purosmall (0.5 vCPU, 1 GB)2 min$0.0011
Web app con suite di teststandard (1 vCPU, 2 GB)5 min$0.0055
Estensioni native, dipendenze compilateplus (2 vCPU, 4 GB)15 min$0.033

Le sandbox effimere sono fatturate al secondo con un minimo di 60 secondi. Se un revisore vuole tornare allo stesso ambiente per un paio di giorni, crealo invece come persistent: conserva il disco fino a 30 giorni ed è fatturato per ora iniziata, quindi una sandbox standard tenuta per una review di due giorni costa circa $3.17. Eliminala quando la pull request viene unita.

Limiti da conoscere

  • Due comandi alla volta per account. Più che sufficienti per le review, che si susseguono una dopo l'altra. Se controlli decine di pull request contemporaneamente, finiscono in coda.
  • Nessuna porta in ingresso. Non puoi aprire l'app in un browser. Avviala all'interno e testala con curl localhost da un secondo comando.
  • Niente Docker all'interno. I test che avviano container vanno su un runner su VPS.
  • L'uscita verso internet è aperta. È ciò che fa funzionare pip install. Non mettere nella sandbox nulla che non daresti all'autore della patch.

Per iniziare

I nuovi account ricevono $1 di tempo sandbox, che copre più di cento passaggi di review sulla tariffa standard. La pagina delle sandbox riporta le tariffe, il riferimento dell'SDK ogni metodo usato sopra, e l'SDK Python in 5 minuti la configurazione.

Correlati: test CI isolati per l'intera pipeline e sandbox per agenti IA per gli agenti che il codice lo scrivono.

Pronto a fare il deploy? Paga in crypto, niente KYC — online in circa un minuto.

Fai il deploy ora →

FAQ

In cosa differisce dall'eseguire la CI sulla pull request?

La CI risponde se i test esistenti passano. Un controllo di review risponde se la patch fa ciò che dichiara: esegue la riproduzione dal bug report sul codice vecchio e su quello nuovo, prova il caso limite che preoccupa il revisore e tiene una sandbox a disposizione perché il revisore possa curiosare. Le due cose funzionano bene insieme.

Un agente di review IA può usarla?

Sì, ed è lì che rende di più. Tramite MCP l'agente ottiene strumenti per creare una sandbox, eseguire comandi e leggere file. Invece di indovinare se una modifica rompe qualcosa, esegue il codice e cita l'output nella sua review.

È sicuro scaricare la pull request di uno sconosciuto?

È proprio lo scopo della sandbox. Il codice gira in una microVM separata con il proprio kernel, e dentro non c'è niente di tuo tranne ciò che ci metti. Non passare un token con permessi di scrittura sul repository; per i repository privati basta un token di sola lettura.

Posso aprire l'app della pull request nel browser?

No. Le sandbox non hanno porte in ingresso, quindi niente dall'esterno può collegarsi. Puoi avviare l'app all'interno e testarla con curl da un altro comando, oppure pubblicare anteprime su un VPS se i revisori devono navigare un'interfaccia.

Quanto costa un passaggio di review?

Un passaggio tipico — clone, installazione, due riproduzioni, test — richiede pochi minuti sulla tariffa standard e costa circa $0.005. Paghi al secondo con un minimo di 60 secondi, da un credito prepagato.

Commenti

Ancora nessun commento. Sii il primo.

Lascia un commento

I commenti sono moderati prima di comparire.