Ein Diff zeigt, was ein Patch zu tun behauptet. Er zeigt nicht, ob der Bug wirklich weg ist, ob der neue Zweig eines if jemals ausgeführt wird oder ob das Dependency-Update den Import bei einer sauberen Installation bricht. Reviewer wissen das, und deshalb enden so viele Reviews mit „LGTM, vorausgesetzt die Tests laufen durch“.
Bei KI-geschriebenen Patches wird die Lücke größer. Ein Modell produziert schnell plausiblen Code, und plausibel ist genau die Sorte, die an einem müden Reviewer vorbeirutscht. Die günstige Lösung: die Änderung ausführen, bevor jemand sie freigibt – an einem Ort, an dem sie nichts beschädigen kann.
Die Prüfung: base, head, Tests
Der überzeugendste Beleg, den ein Patch liefern kann, ist eine Reproduktion, die auf dem alten Code fehlschlägt und auf dem neuen besteht. Eine Sandbox macht daraus ein 20-Zeilen-Skript. Sie ist eine Firecracker-microVM mit Python 3.12, Node.js 22, git und curl, die in etwa einer Sekunde startet:
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 ist der Schnipsel aus dem Bug-Report. Endet er auf base mit einem Exit-Code ungleich null und auf head mit null, behebt der Patch, was er zu beheben behauptet. Posten Sie diese Zeile samt Testzusammenfassung als Kommentar im Pull Request, und der Reviewer startet mit Fakten.
Die Testsuite läuft als Hintergrund-Task, weil ein einzelner synchroner Befehl nach 55 Sekunden stoppt. Die TTL von 30 Minuten begrenzt, wie lange ein hängender Lauf Kosten verursachen kann.
Review-Agenten, die Code ausführen
Dieselbe Idee funktioniert für einen KI-Reviewer. Über den MCP-Server verbunden, hat ein Agent Sandbox-Werkzeuge: Sandbox anlegen, Befehl ausführen, Dateien hoch- und herunterladen. Statt „das könnte die Kompatibilität mit Python 3.8 brechen“ zu schreiben, checkt er den Branch aus, führt den Code aus und zitiert den Traceback – oder meldet, dass alles in Ordnung ist.
Geben Sie so einem Agenten ein Ausgabenlimit und ein Nur-Lese-Token und legen Sie fest, welche Werkzeuge er ohne Rückfrage aufrufen darf. Unter MCP-Schutzmaßnahmen sind alle Werkzeuge nach Risiko aufgelistet.
Welcher Tarif
| Repository | Tarif | Typischer Durchgang | Ungefähre Kosten |
|---|---|---|---|
| Kleine Bibliothek, reines Python oder JS | small (0.5 vCPU, 1 GB) | 2 Min. | $0.0011 |
| Web-App mit Testsuite | standard (1 vCPU, 2 GB) | 5 Min. | $0.0055 |
| Native Erweiterungen, kompilierte Abhängigkeiten | plus (2 vCPU, 4 GB) | 15 Min. | $0.033 |
Flüchtige Sandboxes werden pro Sekunde mit 60 Sekunden Minimum abgerechnet. Will ein Reviewer über ein paar Tage zur selben Umgebung zurückkehren, legen Sie sie als persistent an: Sie behält ihre Festplatte bis zu 30 Tage und wird pro angefangene Stunde abgerechnet, eine standard-Sandbox für ein zweitägiges Review kostet also etwa $3.17. Löschen Sie sie, wenn der Pull Request gemergt ist.
Grenzen, die man kennen sollte
- Zwei Befehle gleichzeitig pro Konto. Reichlich für Reviews, die nacheinander laufen. Prüfen Sie Dutzende Pull Requests zugleich, stellen sie sich an.
- Keine eingehenden Ports. Die App im Browser öffnen geht nicht. Starten Sie sie darin und testen Sie sie mit
curl localhostaus einem zweiten Befehl. - Kein Docker darin. Tests, die Container hochfahren, gehören auf einen VPS-Runner.
- Ausgehendes Internet ist offen. Nur deshalb funktioniert
pip install. Legen Sie nichts in die Sandbox, das Sie nicht auch dem Autor des Patches geben würden.
Der Einstieg
Neue Konten erhalten $1 Sandbox-Zeit, das reicht im Tarif standard für mehr als hundert Review-Durchgänge. Die Sandbox-Seite zeigt die Tarife, die SDK-Referenz jede oben genutzte Methode und Python-SDK in 5 Minuten die Einrichtung.
Verwandt: isolierte CI-Testläufe für die ganze Pipeline und Sandbox für KI-Agenten für die Agenten, die den Code überhaupt erst schreiben.
Kommentare
Noch keine Kommentare. Sei der Erste.