−25%

auf Windows bei Jahreszahlung, bis 31.10. Zu den Tarifen

EQVPS
Loslegen

Sandbox für Code-Review und PR-Prüfungen: Beweisen Sie, dass ein Patch funktioniert, bevor Sie ihn freigeben

Ein Diff sagt, was ein Patch behauptet. Ein Lauf sagt, ob es stimmt. Checken Sie einen Pull Request in einer Wegwerf-microVM aus, reproduzieren Sie den Bug vorher und nachher, lassen Sie die Tests laufen und reviewen Sie mit Belegen – für etwa einen halben Cent pro Durchgang.

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

RepositoryTarifTypischer DurchgangUngefähre Kosten
Kleine Bibliothek, reines Python oder JSsmall (0.5 vCPU, 1 GB)2 Min.$0.0011
Web-App mit Testsuitestandard (1 vCPU, 2 GB)5 Min.$0.0055
Native Erweiterungen, kompilierte Abhängigkeitenplus (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 localhost aus 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.

Bereit zum Bereitstellen? Zahle in Krypto, ohne KYC — online in etwa einer Minute.

Bereitstellen →

FAQ

Worin unterscheidet sich das von CI auf dem Pull Request?

CI beantwortet, ob die vorhandenen Tests bestehen. Eine Review-Prüfung beantwortet, ob der Patch tut, was er verspricht: Sie führt die Reproduktion aus dem Bug-Report auf dem alten und auf dem neuen Code aus, probiert den Randfall, der dem Reviewer Sorgen macht, und hält eine Sandbox bereit, in der der Reviewer stöbern kann. Beides ergänzt sich gut.

Kann ein KI-Review-Agent das nutzen?

Ja, und dort lohnt es sich am meisten. Über MCP bekommt der Agent Werkzeuge, um eine Sandbox anzulegen, Befehle auszuführen und Dateien zu lesen. Statt zu raten, ob eine Änderung etwas kaputt macht, führt er den Code aus und zitiert die Ausgabe im Review.

Ist es sicher, einen Pull Request von Fremden auszuchecken?

Genau dafür ist die Sandbox da. Der Code läuft in einer eigenen microVM mit eigenem Kernel, und darin liegt nichts von Ihnen außer dem, was Sie hineinlegen. Übergeben Sie kein Token mit Schreibrechten auf Ihr Repository; für private Repositories reicht ein Nur-Lese-Token.

Kann ich die App aus dem Pull Request im Browser öffnen?

Nein. Sandboxes haben keine eingehenden Ports, von außen kann sich also nichts mit ihnen verbinden. Sie können die App darin starten und mit curl aus einem anderen Befehl testen oder Previews auf einen VPS deployen, wenn Reviewer sich durch eine Oberfläche klicken müssen.

Was kostet ein Review-Durchgang?

Ein typischer Durchgang – klonen, installieren, zweimal reproduzieren, Tests – dauert im Tarif standard ein paar Minuten und kostet etwa $0.005. Sie zahlen pro Sekunde mit 60 Sekunden Minimum aus einem Prepaid-Guthaben.

Kommentare

Noch keine Kommentare. Sei der Erste.

Kommentar hinterlassen

Kommentare werden vor der Anzeige moderiert.