−25%

στα Windows με ετήσια χρέωση, έως 31/10. Δείτε τα πακέτα

EQVPS
Ξεκινήστε

Sandbox για έλεγχο κώδικα και ελέγχους PR: αποδείξτε ότι ένα patch δουλεύει πριν το εγκρίνετε

Η ανάγνωση ενός diff σας λέει τι ισχυρίζεται ένα patch. Η εκτέλεσή του σας λέει αν ισχύει. Φέρτε ένα pull request σε ένα microVM μίας χρήσης, αναπαράγετε το σφάλμα πριν και μετά, τρέξτε τις δοκιμές και κάντε έλεγχο με αποδείξεις — για περίπου μισό σεντ ανά πέρασμα.

Ένα diff δείχνει τι ισχυρίζεται ότι κάνει ένα patch. Δεν δείχνει αν το σφάλμα έφυγε πραγματικά, αν ο νέος κλάδος ενός if εκτελείται ποτέ ή αν η αναβάθμιση μιας εξάρτησης σπάει το import σε καθαρή εγκατάσταση. Οι ελεγκτές το ξέρουν, γι' αυτό τόσοι έλεγχοι τελειώνουν με «LGTM, εφόσον περάσουν οι δοκιμές».

Με τα patches που γράφει η AI το κενό μεγαλώνει. Ένα μοντέλο παράγει γρήγορα κώδικα που φαίνεται αληθοφανής, και ο αληθοφανής είναι ακριβώς αυτός που ξεγλιστρά από έναν κουρασμένο ελεγκτή. Η φθηνή λύση είναι να τρέξει η αλλαγή πριν την εγκρίνει κανείς — κάπου όπου δεν μπορεί να βλάψει τίποτα.

Ο έλεγχος: base, head, δοκιμές

Η πιο πειστική απόδειξη που μπορεί να δώσει ένα patch είναι μια αναπαραγωγή που αποτυγχάνει στον παλιό κώδικα και περνά στον νέο. Ένα sandbox το κάνει script 20 γραμμών. Είναι ένα microVM Firecracker με Python 3.12, Node.js 22, git και curl, που ξεκινά σε περίπου ένα δευτερόλεπτο:

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 είναι το απόσπασμα από την αναφορά σφάλματος. Αν τερματίζει με μη μηδενικό κωδικό στο base και με μηδέν στο head, το patch διορθώνει ό,τι λέει ότι διορθώνει. Δημοσιεύστε αυτή τη γραμμή μαζί με τη σύνοψη των δοκιμών ως σχόλιο στο pull request, και ο ελεγκτής ξεκινά από γεγονότα.

Η σουίτα δοκιμών τρέχει ως εργασία παρασκηνίου, επειδή μία σύγχρονη εντολή σταματά στα 55 δευτερόλεπτα. Το TTL των 30 λεπτών περιορίζει πόσο μπορεί να σας χρεώσει μια κολλημένη εκτέλεση.

Πράκτορες ελέγχου που τρέχουν κώδικα

Η ίδια ιδέα λειτουργεί για έναν ελεγκτή AI. Συνδεδεμένος μέσω του διακομιστή MCP, ένας πράκτορας έχει εργαλεία sandbox: δημιουργία sandbox, εκτέλεση εντολής, αποστολή και λήψη αρχείων. Αντί να γράψει «αυτό ίσως σπάσει τη συμβατότητα με Python 3.8», φέρνει το branch, τρέχει τον κώδικα και παραθέτει το traceback — ή αναφέρει ότι όλα είναι εντάξει.

Δώστε σε έναν τέτοιο πράκτορα ένα όριο δαπανών και ένα token μόνο ανάγνωσης, και αποφασίστε ποια εργαλεία μπορεί να καλεί χωρίς να ρωτά. Οι δικλείδες ασφαλείας MCP καταγράφουν κάθε εργαλείο ανά επίπεδο κινδύνου.

Ποιο τιμολόγιο

ΑποθετήριοΤιμολόγιοΤυπικό πέρασμαΚατά προσέγγιση κόστος
Μικρή βιβλιοθήκη, καθαρή Python ή JSsmall (0.5 vCPU, 1 GB)2 λεπτά$0.0011
Web εφαρμογή με σουίτα δοκιμώνstandard (1 vCPU, 2 GB)5 λεπτά$0.0055
Native επεκτάσεις, μεταγλωττιζόμενες εξαρτήσειςplus (2 vCPU, 4 GB)15 λεπτά$0.033

Τα προσωρινά sandboxes χρεώνονται ανά δευτερόλεπτο με ελάχιστο 60 δευτερόλεπτα. Αν ένας ελεγκτής θέλει να επιστρέφει στο ίδιο περιβάλλον για μερικές μέρες, δημιουργήστε το ως persistent: κρατά τον δίσκο του έως 30 ημέρες και χρεώνεται ανά ώρα που ξεκινά, οπότε ένα sandbox standard για διήμερο έλεγχο κοστίζει περίπου $3.17. Διαγράψτε το όταν γίνει merge το pull request.

Όρια που αξίζει να γνωρίζετε

  • Δύο εντολές τη φορά ανά λογαριασμό. Υπεραρκετές για ελέγχους, που γίνονται ο ένας μετά τον άλλον. Αν ελέγχετε δεκάδες pull requests ταυτόχρονα, μπαίνουν σε ουρά.
  • Χωρίς εισερχόμενες θύρες. Δεν μπορείτε να ανοίξετε την εφαρμογή σε browser. Ξεκινήστε τη μέσα και δοκιμάστε τη με curl localhost από δεύτερη εντολή.
  • Χωρίς Docker μέσα. Οι δοκιμές που σηκώνουν containers ανήκουν σε runner σε VPS.
  • Η εξερχόμενη σύνδεση είναι ανοιχτή. Αυτό κάνει το pip install να δουλεύει. Μη βάζετε στο sandbox τίποτα που δεν θα δίνατε στον συντάκτη του patch.

Για να ξεκινήσετε

Οι νέοι λογαριασμοί παίρνουν $1 χρόνου sandbox, που καλύπτει πάνω από εκατό περάσματα ελέγχου στο τιμολόγιο standard. Η σελίδα των sandboxes έχει τα τιμολόγια, η τεκμηρίωση του SDK κάθε μέθοδο που χρησιμοποιείται παραπάνω, και το SDK της Python σε 5 λεπτά τη ρύθμιση.

Σχετικά: απομονωμένες δοκιμές CI για ολόκληρο το pipeline, και sandbox για πράκτορες AI για τους πράκτορες που γράφουν τον κώδικα εξαρχής.

Έτοιμοι για ανάπτυξη; Πληρωμή με crypto, χωρίς KYC — έτοιμο σε περίπου ένα λεπτό.

Ανάπτυξη τώρα →

Συχνές ερωτήσεις

Σε τι διαφέρει από την εκτέλεση CI στο pull request;

Το CI απαντά αν περνούν οι υπάρχουσες δοκιμές. Ο έλεγχος κατά την αναθεώρηση απαντά αν το patch κάνει ό,τι λέει: τρέχει την αναπαραγωγή από την αναφορά σφάλματος στον παλιό και στον νέο κώδικα, δοκιμάζει την οριακή περίπτωση που ανησυχεί τον ελεγκτή και κρατά ένα sandbox διαθέσιμο για να ψάξει ο ελεγκτής. Τα δύο λειτουργούν καλά μαζί.

Μπορεί να το χρησιμοποιήσει πράκτορας ελέγχου AI;

Ναι, και εκεί αποδίδει περισσότερο. Μέσω MCP ο πράκτορας παίρνει εργαλεία για να δημιουργήσει sandbox, να εκτελέσει εντολές και να διαβάσει αρχεία. Αντί να μαντεύει αν μια αλλαγή χαλάει κάτι, τρέχει τον κώδικα και παραθέτει την έξοδο στον έλεγχό του.

Είναι ασφαλές να φέρω pull request από άγνωστο;

Γι' αυτό ακριβώς υπάρχει το sandbox. Ο κώδικας τρέχει σε ξεχωριστό microVM με δικό του πυρήνα, και μέσα δεν υπάρχει τίποτα δικό σας εκτός από όσα βάλετε. Μη δώσετε token που μπορεί να γράψει στο αποθετήριό σας· για ιδιωτικά αποθετήρια αρκεί token μόνο ανάγνωσης.

Μπορώ να ανοίξω την εφαρμογή του pull request στον browser μου;

Όχι. Τα sandboxes δεν έχουν εισερχόμενες θύρες, οπότε τίποτα εξωτερικό δεν μπορεί να συνδεθεί σε αυτά. Μπορείτε να ξεκινήσετε την εφαρμογή μέσα και να τη δοκιμάσετε με curl από άλλη εντολή, ή να ανεβάσετε προεπισκοπήσεις σε VPS αν οι ελεγκτές πρέπει να περιηγηθούν σε μια διεπαφή.

Πόσο κοστίζει ένα πέρασμα ελέγχου;

Ένα τυπικό πέρασμα — clone, εγκατάσταση, δύο αναπαραγωγές, δοκιμές — παίρνει λίγα λεπτά στο τιμολόγιο standard και κοστίζει περίπου $0.005. Πληρώνετε ανά δευτερόλεπτο με ελάχιστο 60 δευτερόλεπτα, από προπληρωμένο υπόλοιπο.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.