Diff-ът показва какво твърди, че прави пачът. Не показва дали бъгът наистина е изчезнал, дали новият клон на if изобщо се изпълнява, нито дали обновяването на зависимост не чупи импорта при чиста инсталация. Рецензентите го знаят и затова толкова много прегледи завършват с „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 — всеки използван по-горе метод, а Python SDK за 5 минути описва настройката.
Свързано: изолирани CI тестове за целия pipeline и пясъчник за AI агенти за агентите, които пишат кода по принцип.
Коментари
Още няма коментари. Бъди първият.