diff מראה מה התיקון טוען שהוא עושה. הוא לא מראה אם הבאג באמת נעלם, אם הענף החדש של if רץ אי פעם, או אם עדכון תלות שובר את ה-import בהתקנה נקייה. סוקרים יודעים את זה, ולכן כל כך הרבה סקירות מסתיימות ב"LGTM, בתנאי שהבדיקות עוברות".
עם תיקונים שכתב AI הפער גדל. מודל מייצר מהר קוד שנראה סביר, וקוד שנראה סביר הוא בדיוק זה שחומק מעיניו של סוקר עייף. הפתרון הזול הוא להריץ את השינוי לפני שמישהו מאשר אותו — במקום שבו הוא לא יכול לפגוע בכלום.
הבדיקה: base, head, בדיקות
הראיה המשכנעת ביותר שתיקון יכול להציג היא שחזור שנכשל על הקוד הישן ועובר על החדש. ארגז חול הופך את זה לסקריפט של 20 שורות. זו Firecracker microVM עם 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, התיקון מתקן את מה שהוא טוען. פרסמו את השורה הזו יחד עם סיכום הבדיקות כתגובה ל-pull request, והסוקר יתחיל מעובדות.
חבילת הבדיקות רצה כמשימת רקע, כי פקודה סינכרונית אחת נעצרת אחרי 55 שניות. ה-TTL של 30 דקות מגביל כמה זמן הרצה תקועה יכולה לחייב אתכם.
סוכני סקירה שמריצים קוד
אותו רעיון עובד לסוקר AI. סוכן שמחובר דרך שרת ה-MCP מקבל כלי ארגז חול: יצירת ארגז חול, הרצת פקודה, העלאה והורדה של קבצים. במקום לכתוב "זה עלול לשבור תאימות ל-Python 3.8", הוא מושך את הענף, מריץ את הקוד ומצטט את ה-traceback — או מדווח שהכול תקין.
תנו לסוכן כזה תקרת הוצאות וטוקן לקריאה בלבד, והחליטו אילו כלים הוא רשאי להפעיל בלי לשאול. אמצעי ההגנה של MCP מפרטים כל כלי לפי רמת הסיכון.
איזה תעריף
| מאגר | תעריף | סבב טיפוסי | עלות משוערת |
|---|---|---|---|
| ספרייה קטנה, Python או JS טהור | small (0.5 vCPU, 1 GB) | 2 דקות | $0.0011 |
| אפליקציית ווב עם חבילת בדיקות | standard (1 vCPU, 2 GB) | 5 דקות | $0.0055 |
| הרחבות נייטיב, תלויות שעוברות הידור | plus (2 vCPU, 4 GB) | 15 דקות | $0.033 |
ארגזי חול זמניים מחויבים לפי שנייה עם מינימום של 60 שניות. אם סוקר רוצה לחזור לאותה סביבה לאורך כמה ימים, צרו אותה כ-persistent: היא שומרת את הדיסק שלה עד 30 יום ומחויבת על כל שעה שהתחילה, כך שארגז standard שנשמר לסקירה של יומיים עולה כ-3.17 דולר. מחקו אותו כשה-pull request מוזג.
מגבלות שכדאי להכיר
- שתי פקודות בו־זמנית לחשבון. מספיק בהחלט לסקירות, שמתבצעות אחת אחרי השנייה. אם תבדקו עשרות pull requests בבת אחת, הם ייכנסו לתור.
- אין פורטים נכנסים. אי אפשר לפתוח את האפליקציה בדפדפן. הפעילו אותה בפנים ובדקו אותה עם
curl localhostמפקודה שנייה. - אין Docker בפנים. בדיקות שמרימות קונטיינרים שייכות ל-runner על VPS.
- אינטרנט יוצא פתוח. זה מה שגורם ל-
pip installלעבוד. אל תכניסו לארגז החול שום דבר שלא הייתם מוסרים לכותב התיקון.
איך מתחילים
חשבונות חדשים מקבלים 1 דולר של זמן ארגז חול, שמספיק ליותר ממאה סבבי סקירה בתעריף standard. בדף ארגזי החול נמצאים התעריפים, במדריך ה-SDK כל שיטה שהשתמשנו בה למעלה, ובSDK של Python ב-5 דקות ההגדרה.
קשור: הרצות CI מבודדות ל-pipeline כולו, וארגז חול לסוכני AI לסוכנים שכותבים את הקוד מלכתחילה.
תגובות
אין עדיין תגובות. היו הראשונים.