Най-добрите пясъчници за агенти през 2026 г.: студен старт при burst натоварване, ценообразуване на секунда и мрежови политики в E2B, Daytona, Modal, Cloudflare и Vercel
Всеки агент, който пише код, се нуждае от място, където да го изпълнява. Това „място“ вече е продуктова категория с поне дузина доставчици, четири несъвместими модела на таксуване и маркетингови страници, които цитират времена за студен старт, измерени при условия, които никой не публикува.
Това сравнение уеднаквява мерните единици. То обхваща петте платформи, които повечето екипи включват в краткия си списък — E2B, Daytona, Modal Sandboxes, Cloudflare Sandbox SDK и Vercel Sandbox — както и Runloop, Fly.io Sprites и Northflank, когато те променят отговора.
Четирите въпроса, които всъщност решават избора
Матриците с функции за тази категория са предимно шум. Четири свойства променят архитектурата, а всичко останало е въпрос на предпочитание:
- Студен старт при конкурентно изпълнение: Цикъл на агент, който създава пясъчна кутия при всяко извикване на инструмент, плаща тази цена хиляди пъти дневно.
- Постоянство на файловата система между ходовете: Вижда ли ход 2
pip installот ход 1, или агентът трябва да изгради света си отново? - Политика за изходящия трафик: Може ли пясъчната кутия да достигне интернет, можете ли да изключите това и можете ли да промените решението си по време на сесията?
- Таксуване при престой: Агентите прекарват по-голямата част от реалното време в изчакване на модел. Някой плаща за тези секунди.
1. Студен старт: какво всъщност показват числата
Твърденията на доставчиците не могат да се сравняват директно. Страницата с цени на Daytona рекламира създаване на пясъчна кутия за под 90 мс. E2B често се цитира с приблизително 150 мс. Modal рекламира студен старт за под секунда при предварително кеширани контейнери. Никое от тези твърдения не посочва конкурентността, региона, размера на образа или дали часовникът спира при потвърждение от API, или при изпълнението на първата команда.
Най-полезният публичен набор от данни е класацията на ComputeSDK за пясъчни кутии, която е с отворен код и се изпълнява по график. Тя измерва времето до интерактивност (TTI): изминалото време от create() до първата успешна команда в пясъчната кутия, при 100 итерации за всеки доставчик, стартирани конкурентно в един пакет от хост с 4 vCPU в Северна Вирджиния.
Резултати от изпълнението на 21 август 2026 г.:
| Доставчик | Медианно TTI | P95 | P99 | Процент успешни изпълнения |
|---|---|---|---|---|
| Vercel Sandbox | 0.67s | 1.04s | 1.12s | 100% |
| Modal | 0.88s | 1.00s | 1.08s | 100% |
| Runloop | 0.89s | 3.27s | 3.50s | 100% |
| E2B | 1.61s | 1.77s | 1.81s | 100% |
| Cloudflare | 5.06s | 6.04s | 6.48s | 100% |
| Daytona | 0.27s | 0.43s | 0.44s | 37% |
Три неща в тази таблица са по-важни от самото класиране.
- Пакетното изпълнение не е същият тест като последователното: Най-бързата публикувана медиана на Daytona е реална, а при по-ранно изпълнение на страницата на доставчика тя създаваше пясъчни кутии с медиана от 0.10s, когато бяха стартирани една по една. При пакетното изпълнение през август тя постигна най-бързата медиана в полето, но завърши 37 от 100 опита. Медиана, която достигате само при една трета от извикванията, не е число за латентност, а число за капацитет. Логиката за повторен опит не е опционална при никоя от тези платформи.
- Опашката на латентността е числото, спрямо което трябва да проектирате: Медианите на Runloop и Modal се различават с 10 мс. P95 на Runloop е 3.3 пъти по-голям от този на Modal. Ако бюджетът за потребителското изживяване на агента е една секунда, медианата ви казва почти нищо.
- Cloudflare измерва различен продукт: Sandbox SDK работи върху Cloudflare Containers, който планира инстанция на контейнер и зарежда образ. Архитектурно това е по-тежка операция от възобновяването на предварително загрята Firecracker виртуална машина и медианите от 5 секунди го отразяват. Собствената публикация на Cloudflare за общата наличност откровено описва формата на проблема: стартирането на пясъчна кутия, клонирането на хранилище и изпълнението на
npm installотнемат около 30 секунди, докато възстановяването на същата среда от резервно копие отнема около две.
Как да възпроизведете теста сами
Задачата, която си струва да измерите, е тази, която вашият агент изпълнява, а не echo hello. Полезен тестов инструмент изпълнява една и съща работа навсякъде: инсталира pandas, прочита CSV файл, визуализира го и връща PNG файл. Измерете отделно четири момента.
# checkpoints: t_create -> t_ready -> t_deps -> t_result
# run 100 iterations sequential, then 100 concurrent, report median/P95/P99
import time, statistics
def one_run(provider):
t0 = time.perf_counter()
sbx = provider.create() # API acknowledged
t1 = time.perf_counter()
sbx.exec("python -c 'print(1)'") # first command returns: TTI
t2 = time.perf_counter()
sbx.exec("pip install pandas matplotlib")
t3 = time.perf_counter()
sbx.exec("python /work/plot.py") # writes /work/out.png
png = sbx.read_file("/work/out.png")
t4 = time.perf_counter()
sbx.kill()
return dict(create=t1-t0, tti=t2-t0, deps=t3-t2, task=t4-t3, bytes=len(png))Отчитайте tti и task отделно. Доставчиците оптимизират първото, а читателите се интересуват от второто. Фиксирайте региона, фиксирайте образа и публикувайте както последователната, така и конкурентната серия, защото те отговарят на различни въпроси.
2. Ценообразуване на секунда, нормализирано
Публикувани цени към 27 август 2026 г., преобразувани към обща мерна единица. Modal таксува на физическо ядро, което определя като 2 vCPU, затова за сравнение е показан еквивалентът във vCPU.
| Платформа | CPU | Памет | Основа за таксуване | Минимален план |
|---|---|---|---|---|
| E2B | $0.0504 / vCPU-hr | $0.0162 / GiB-hr | Реално време, на секунда | Безплатен Hobby; $150/mo Pro |
| Daytona | $0.0504 / vCPU-hr | $0.0162 / GiB-hr | Реално време, на секунда | Няма; кредит от $200 |
| Modal Sandbox | $0.1419 / core-hr (~$0.0710 / vCPU-hr) | $0.0240 / GiB-hr | max(request, actual), на секунда | Безплатен Starter; $250/mo Team |
| Vercel Sandbox | $0.128 / vCPU-hr само активно CPU | $0.0212 / GB-hr заделена памет | Разделено: активно CPU, памет в реално време | Квота за Hobby; кредит за Pro |
| Cloudflare Sandbox | $0.072 / vCPU-hr само активно CPU | $0.009 / GiB-hr заделена памет | Активно CPU + заделена памет/диск | $5/mo Workers Paid |
| Fly.io Sprites | $0.07 / CPU-hr | $0.04375 / GB-hr | Само при активно използване; заспива при престой | Абонаментни нива |
| Runloop | $0.108 / CPU-hr | $0.0252 / GB-hr | Състояние „работи“; при спиране се таксува само хранилището | Безплатен Basic; $250/mo Pro |
| Northflank | $0.01667 / vCPU-hr | $0.00833 / GB-hr | Заделени ресурси, на секунда | Безплатно ниво Sandbox |
Две бележки под линия, които често се разбират погрешно.
- Нивото за пясъчни кутии на Modal е приблизително 3 пъти по-скъпо от стандартната му Function тарифа ($0.00003942 срещу $0.0000131 на core-секунда), а изборът на регион добавя още 1.5–1.75 пъти. Ценообразуването на пясъчните кутии не е водещото ценообразуване на Modal за изчислителни ресурси.
- Тарифите на Daytona за GPU често се възпроизвеждат като $3.95/час за H100. Нейната актуална страница с цени посочва H100 при заявка на $2.27/час, а H200 — на $2.61/час. Таблиците за сравнение от трети страни в тази категория остаряват в рамките на едно тримесечие.
3. Цена за 1000 изпълнения
Тарифите не са разходи. Моделът по-долу фиксира работното натоварване и го прилага към всяка тарифна карта.
Допускания: пясъчна кутия с 2 vCPU / 4 GiB, 1000 изпълнения, без включен минимален план, без изходящ трафик, регион по подразбиране (Vercel iad1, Cloudflare standard-3 при 2 vCPU / 8 GiB / 16 GB диск, тъй като размерите на инстанциите са фиксирани).
Сценарий A: кратък пик — активна 90 секунди, средно 50% CPU
| Платформа | Цена / 1000 | Състав |
|---|---|---|
| Northflank | $1.67 | $0.83 CPU + $0.83 памет |
| Cloudflare | $3.70 | $1.80 CPU + $1.80 памет + $0.10 диск |
| E2B / Daytona | $4.14 | $2.52 CPU + $1.62 памет |
| Vercel | $5.32 | $3.20 активно CPU + $2.12 памет |
| Modal | $5.95 | $3.55 CPU + $2.40 памет |
| Fly Sprites | $7.88 | $3.50 CPU + $4.38 памет |
| Runloop | $7.92 | $5.40 CPU + $2.52 памет |
Сценарий B: преобладаващ престой — активна 10 минути, средно 5% CPU
Така изглежда реалният цикъл на агент. Пясъчната кутия е отворена, моделът мисли, нищо не се изпълнява.
| Платформа | Цена / 1000 | Промяна спрямо A |
|---|---|---|
| Northflank | $11.11 | 6.7x |
| Cloudflare | $13.87 | 3.7x |
| Vercel | $16.27 | 3.1x |
| E2B / Daytona | $27.60 | 6.7x |
| Modal | $39.66 | 6.7x |
| Fly Sprites (поддържани активни) | $52.50 | 6.7x |
| Runloop (поддържан в работещо състояние) | $52.80 | 6.7x |
Vercel преминава от четвъртото най-евтино място на третото, а разходът за CPU спада от $3.20 на $2.13, докато при всички останали се мащабира линейно. Разходът за активно CPU при Cloudflare спада до $1.20. Това е целият аргумент в полза на таксуването за активно CPU и при това работно натоварване си струва приблизително два пъти.
Сценарий B със спиране
Платформите, които губят при Сценарий B, могат да наваксат, ако оркестрацията ви спира между ходовете, вместо да държи машината отворена. Същото работно натоварване, 30 секунди активност на изпълнение:
| Платформа | Цена / 1000 | Механизъм |
|---|---|---|
| E2B (автоматично поставяне на пауза) | ~$2.16 | Поставянето на пауза струва ~4s на GiB RAM, възобновяването ~1s (документация) |
| Fly Sprites | $2.62 | Мониторът за престой приспива sprite-а в рамките на секунди |
| Runloop | $2.64 | Спирането преустановява таксуването за изчисления; хранилището продължава да се таксува |
Числото за E2B включва около 17 секунди допълнителни разходи за поставяне на пауза и възобновяване при пясъчна кутия с 4 GiB. Именно тези разходи са определящата променлива: поставянето на пауза е икономично само когато интервалът между ходовете е осезаемо по-дълъг от самото поставяне на пауза.
Детекторът за престой на Fly конкретно определя какво се счита за активност: текуща HTTP или API заявка, изход към стандартния изход на сесията, отворена TCP връзка или активна задача (sprites.dev). Агент, който държи връзка отворена, докато чака, е агент, за който се начислява такса. Пренасочването на изхода към файл не се брои, което е реален инструмент за оптимизация.
4. Постоянство на файловата система между ходовете
Тук платформите се различават най-много и именно тук грешният избор се проявява като повторно изграждане на node_modules при всеки ход.
| Платформа | По подразбиране при спиране/престой | Състояние на паметта | Механизъм |
|---|---|---|---|
| E2B | onTimeout по подразбиране е kill | Паузата запазва RAM и работещите процеси | pause() / connect(), поставените на пауза кутии се пазят безсрочно |
| Daytona | Постоянство по подразбиране; автоматично спиране след 15 минути (контейнери), автоматична пауза след 60 минути (VM) | Само VM пясъчни кутии, чрез пауза/възобновяване | Спиране, архивиране, пауза, разклоняване, томове |
| Modal | Прекратява се при timeout (по подразбиране 5 минути, максимум 24 часа) | Снимки на паметта, изтичане след 7 дни | Снимките на файловата система са Images, TTL по подразбиране 30 дни |
| Cloudflare | Заспива след 10 минути; дискът се връща към състоянието от образа | Не | createBackup() / restoreBackup(), R2 монтирания, снимките се въвеждат поетапно |
| Vercel | Постоянните пясъчни кутии правят снимка на файловата система при спиране | Не | Снимки, изтичане по подразбиране след 30 дни, $0.08/GB-mo |
| Runloop | Спирането запазва състоянието | Да, чрез спиране/възобновяване | Спиране/възобновяване и разклоняване на снимки; само план Pro |
| Fly Sprites | Кореновата файлова система от 100 GB се запазва безсрочно | Контролна точка/възстановяване | Диск, поддържан от обектно хранилище, без образ на контейнер |
Три детайла, които си струва да запомните:
- По подразбиране E2B унищожава работата ви:
onTimeoutеkill, освен ако при създаването не зададетеlifecycle: { onTimeout: 'pause' }. Унищоженото състояние е окончателно, а документацията не описва сигнал за изключване преди прекратяването. Приемайте незаписаната работа за изгубена. - Дискът на Cloudflare е временен след заспиване: Документацията за контейнерите ясно посочва, че заспалата инстанция се рестартира с нов диск от своя образ. Архивирането и възстановяването в R2 работят днес; автоматичната снимка на диска
persistAcrossSessions, обявена при общата наличност, все още се въвеждаше поетапно към момента на писане. - Daytona разделя постоянството според класа на пясъчната кутия: Контейнерните пясъчни кутии запазват файловата система при спиране/стартиране, но не поддържат пауза, така че паметта се изчиства всеки път. Linux VM пясъчните кутии поддържат и двете. GPU пясъчните кутии са временни и се изтриват при спиране; резултатите трябва да се записват в том.
5. Политика за изходящия трафик
Всяка платформа в това сравнение вече може да изпълнява пясъчна кутия без достъп до интернет. Разликите са в приоритета, детайлността и възможността политиката да се променя без рестартиране.
| Платформа | По подразбиране | Блокиране на всичко | Списък с разрешени | Промяна по време на изпълнение |
|---|---|---|---|---|
| E2B | Отворен изходящ трафик | allowInternetAccess: false | Домейни, IP адреси, CIDR; заместващи символи | Да, updateNetwork() заменя цялата политика |
| Daytona | Зависи от нивото | networkBlockAll | domainAllowList (макс. 20), networkAllowList (10 CIDR, само IPv4) | Да, само нива 3/4 |
| Modal | Отворен изходящ трафик, без входящ | block_network=True | outbound_cidr_allowlist, outbound_domain_allowlist (бета) | Алфа, и само ако списъците са зададени при създаването |
| Cloudflare | Отворен изходящ трафик | enableInternet = false | allowedHosts / deniedHosts, glob шаблони | Да, обработчиците и правилата за хостове се прилагат на живо |
| Vercel | allow-all | deny-all, включително DNS | Домейни чрез SNI, плюс резервен вариант с IP/CIDR | Да, без рестартиране |
| Runloop | Мрежови политики за всеки devbox | Да | Да | Документирано за всеки devbox |
Капанът с приоритета
E2B и Vercel разрешават конфликтите в противоположни посоки. При E2B правилата за разрешаване имат предимство пред правилата за забрана: IP адрес, който присъства и в двата списъка, е разрешен. При Vercel Sandbox забранените диапазони имат предимство пред разрешените. Политика, пренесена от едната платформа към другата без пренаписване, не означава същото.
Капанът с начина на отказ
E2B документира, че блокираните TCP връзки могат да изглеждат успешни отвътре на пясъчната кутия. Защитната стена приема връзката, преди да реши дали дестинацията е разрешена, така че сокетът се отваря, но пакети не пристигат. Проверявайте изходящия трафик с отговор на ниво приложение — HTTP статус, TLS ръкостискане — а не чрез успешно connect(). Всеки тестов пакет, който потвърждава, че „мрежата е блокирана“, като проверява за грешка при свързване, ще премине успешно при неблокирана пясъчна кутия.
Инжектирането на идентификационни данни е истинският отличителен фактор
Блокирането на изходящия трафик е базово изискване. Позволяването на пясъчна кутия да направи удостоверено извикване, без никога да съхранява идентификационните данни, е нещо различно.
Cloudflare изпълнява обработчиците за изходящ трафик в средата на Workers, извън пясъчната кутия, с достъп до обвързванията на Workers. Пясъчната кутия изпраща обикновена заявка, обработчикът добавя тайната, а ctx.containerId ограничава идентификационните данни до конкретната инстанция (документация). Vercel посредничи за идентификационните данни при изходящия трафик чрез съпоставители, ограничени по път, метод, низ на заявката или заглавки, и посочва, че защитната стена работи на хоста, извън микроVM, където кодът на пясъчната кутия не може да я изключи (Vercel). E2B предоставя трансформации на заявки за всеки хост в публична бета версия, които инжектират заглавки в проксито за изходящ трафик, включително токени за идентичност на работното натоварване, които пясъчната кутия никога не вижда. Runloop предлага Credential Gateway с инжектиране на непрозрачни токени.
За агенти, които обработват ненадежден вход, този дизайн е по-важен от студения старт. Агент, чиято заявка е манипулирана чрез prompt injection и който има GitHub токен в средата си, води до различен инцидент от агент, който може да достигне GitHub само чрез прокси, съхраняващо токена.
6. Изолация, ограничения и дребният шрифт
| Платформа | Изолация | Максимална сесия | Конкурентност | GPU в пясъчната кутия | Собствен хостинг / BYOC |
|---|---|---|---|---|---|
| E2B | Firecracker микроVM | 1 ч. Hobby, 24 ч. Pro; нулира се след пауза | 20 Hobby, 100 Pro, до 1100 | Не | Инфраструктурно хранилище Apache-2.0, Terraform + Nomad + Consul |
| Daytona | Контейнери, плюс VM и Windows класове | Конфигурируема, TTL в реално време по избор | Зависи от нивото | Да (временен) | BYOC, за предприятия |
| Modal | gVisor | 5 минути по подразбиране, максимум 24 часа | 100 Starter, 5000 Team | Да, пълна тарифна карта | Не |
| Cloudflare | Контейнери върху Workers | Заспива след 10 минути престой, наличен е keepAlive | 15 000 lite, 1000+ standard-2 | Не | Не |
| Vercel | Firecracker микроVM | 45 мин. Hobby, 24 ч. Pro | 10 Hobby, 10 000 Pro | Не | AWS BYOC в частна бета версия |
| Runloop | микроVM | Спиране/възобновяване | Демонстрирани 10 000 | Не | Разполагане във VPC |
| Fly Sprites | Firecracker микроVM | Постоянна | Абонаментни нива | Не | Не |
| Northflank | микроVM (Kata, Firecracker, gVisor) | Постоянна или временна | На ниво платформа | Да | Самообслужващ се BYOC |
7. Как да изберете
- Изберете Vercel Sandbox, ако агентът ви чака моделите повече, отколкото изчислява, и искате най-евтиния измерен студен старт при пакетно изпълнение в този набор. Таксуването за активно CPU струва приблизително два пъти при цикли с преобладаващ престой, защитната стена за изходящ трафик с посредничество за идентификационни данни вече е налична във всеки план, а медианата от 0.67s с P99 от 1.12s беше най-стегнатото разпределение при изпълнението през август.
- Изберете E2B, ако се нуждаете от изолация на ядрото за всяка сесия при враждебен код, искате запазване на състоянието на паметта между ходовете или ви е необходим път към собствен хостинг. Задайте
onTimeout: 'pause'още от първия ден. Предвидете минималната цена от $150/mo за Pro веднага щом надхвърлите 20 конкурентни пясъчни кутии или едночасови сесии. - Изберете Daytona, ако постоянството е самият продукт и можете да приемете вариации в капацитета. Жизненият цикъл със спиране/архивиране/пауза/разклоняване е най-развитият в категорията, разклоняването на работеща VM със запазена памет няма точен еквивалент другаде, а тарифата за изчисления съвпада с тази на E2B без минимален абонаментен план.
- Изберете Modal, ако която и да е част от работата на агента използва GPU. Това е единствената платформа тук с пълна тарифна карта за GPU вътре в пясъчната кутия — от T4 до B300. Изчислете 3-кратния множител за пясъчни кутии и регионалните множители, преди да се ангажирате.
- Изберете Cloudflare Sandbox, ако приложението ви вече работи върху Workers и моделът за сигурност на изходящия трафик е по-важен от студения старт. Програмируемите обработчици за изходящ трафик, които работят извън пясъчната кутия с достъп до обвързванията, са наистина отличителни. Медианите от пет секунди при пакетно изпълнение не са, затова поддържайте пясъчните кутии отворени за всяка сесия, вместо да създавате по една при всяко извикване на инструмент, и планирайте за диск, който се нулира при заспиване.
- Изберете Runloop, ако изграждате агент за писане на код и се нуждаете от оценяване в стил SWE-Bench в същата платформа. Имайте предвид, че спирането/възобновяването — функцията, която решава икономическия проблем при престой — е заключено зад плана Pro на стойност $250/mo.
- Изберете Fly Sprites, ако искате постоянен компютър за всеки потребител, а не временен за всяко извикване, и Northflank, ако се нуждаете от най-ниската публикувана тарифа, поддръжка на GPU и самообслужващ се BYOC в една платформа.
Основни изводи
- Измереният студен старт при пакетно изпълнение се различава 7 пъти между доставчиците: Vercel 0.67s, Modal 0.88s, E2B 1.61s, Cloudflare 5.06s.
- Твърденията на доставчиците за „под 90 мс“ и „~150 мс“ описват последователни създавания, а не конкурентните пакети, които агентите действително генерират.
- Моделът на таксуване е по-важен от водещата тарифа: най-евтиният доставчик се променя в зависимост от това колко дълго пясъчната ви кутия стои в престой.
- Само Vercel и Cloudflare таксуват CPU при активно използване; E2B, Daytona, Modal и Runloop таксуват реалното време, докато машината е активна.
- Всяка платформа тук вече може да забранява изходящия трафик по подразбиране, но приоритетът на разрешаването/забраняването и поведението при TCP отказ се различават по начини, които нарушават предположенията.
Източници: цени на E2B, постоянство в E2B, достъп до интернет в E2B, цени на Daytona, постоянство в Daytona, мрежови ограничения на Daytona, таксуване на Daytona, цени на Modal, мрежи на пясъчните кутии на Modal, ресурси на пясъчните кутии на Modal, снимки на пясъчните кутии на Modal, цени на Cloudflare Containers, изходящ трафик на Cloudflare, Cloudflare Sandboxes GA, цени на Vercel Sandbox, защитна стена на Vercel Sandbox, цени на Runloop, Sprites и цени на Northflank
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.