Sakhanda Wire
NVDA MSFT GOOGL META AMZN
← К новостям

Лучшие песочницы для агентов в 2026 году: холодный старт при всплесковой нагрузке, посекундная тарификация и сетевые политики в E2B, Daytona, Modal, Cloudflare и Vercel

Каждому агенту, который пишет код, нужно место для его запуска. Это «место» теперь представляет собой отдельную категорию продуктов, в которой есть как минимум дюжина поставщиков, четыре несовместимые модели биллинга и маркетинговые страницы, где приводятся значения времени холодного старта, измеренные в условиях, которые никто не публикует.

Это сравнение приводит единицы измерения к общему виду. В нём рассматриваются пять платформ, которые большинство команд включает в шорт-лист, — E2B, Daytona, Modal Sandboxes, Cloudflare Sandbox SDK и Vercel Sandbox, — а также Runloop, Fly.io Sprites и Northflank, если они меняют итоговый выбор.

Четыре вопроса, которые действительно определяют выбор

Таблицы функций в этой категории в основном создают информационный шум. Архитектуру меняют четыре свойства, а всё остальное — вопрос предпочтений:

  1. Холодный старт при конкурентном запуске: агентский цикл, создающий песочницу для каждого вызова инструмента, платит эту цену тысячи раз в день.
  2. Сохранение файловой системы между шагами: видит ли шаг 2 результат pip install из шага 1 или агент заново создаёт весь свой мир?
  3. Политика исходящего трафика: может ли песочница обращаться к интернету, можно ли это отключить и можно ли изменить решение в середине сессии?
  4. Биллинг за простой: большую часть времени агент ждёт ответа модели. Кто-то платит за эти секунды.

1. Холодный старт: что на самом деле говорят цифры

Заявления поставщиков нельзя напрямую сравнивать друг с другом. На странице цен Daytona рекламируется создание песочницы менее чем за 90 мс. Для E2B часто приводится значение около 150 мс. Modal рекламирует холодный старт менее чем за секунду для предварительно кэшированных контейнеров. Ни в одном случае не указано, о какой конкурентности, регионе и размере образа идёт речь, а также останавливается ли отсчёт после подтверждения API или после выполнения первой команды.

Наиболее полезный общедоступный набор данных — это рейтинг песочниц ComputeSDK, проект с открытым исходным кодом, запускаемый по расписанию. Он измеряет время до интерактивности (TTI): время от create() до первой успешно выполненной команды внутри песочницы; для каждого поставщика выполняется 100 итераций, запущенных одновременно одним пакетом, с хоста с 4 vCPU в Северной Вирджинии.

Результаты запуска от 21 августа 2026 года:

ПоставщикМедианный TTIP95P99Доля успешных запусков
Vercel Sandbox0.67 с1.04 с1.12 с100%
Modal0.88 с1.00 с1.08 с100%
Runloop0.89 с3.27 с3.50 с100%
E2B1.61 с1.77 с1.81 с100%
Cloudflare5.06 с6.04 с6.48 с100%
Daytona0.27 с0.43 с0.44 с37%

В этой таблице важнее рейтинга три момента.

  • Пакетный запуск — не то же самое, что последовательный: опубликованное Daytona минимальное медианное значение реально, а в более раннем запуске на странице поставщика песочницы создавались с медианой 0.10 с при последовательном запуске. В августовском пакетном запуске сервис показал лучшую медиану среди всех участников, но завершил 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. Замеряйте отдельно четыре контрольные точки.

Копировать кодСкопированоИспользовать другой браузер
# контрольные точки: t_create -> t_ready -> t_deps -> t_result
# 100 последовательных, затем 100 конкурентных итераций; вывести median/P95/P99
import time, statistics

def one_run(provider):
    t0 = time.perf_counter()
    sbx = provider.create()              # API подтверждён
    t1 = time.perf_counter()
    sbx.exec("python -c 'print(1)'")     # возвращается первая команда: TTI
    t2 = time.perf_counter()
    sbx.exec("pip install pandas matplotlib")
    t3 = time.perf_counter()
    sbx.exec("python /work/plot.py")     # записывает /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·ч$0.0162 / GiB·чНастенное время, посекундноБесплатный Hobby; Pro за $150/мес.
Daytona$0.0504 / vCPU·ч$0.0162 / GiB·чНастенное время, посекундноБез минимального тарифа; кредит $200
Modal Sandbox$0.1419 / core·ч (~$0.0710 / vCPU·ч)$0.0240 / GiB·чmax(request, actual), посекундноБесплатный Starter; Team за $250/мес.
Vercel Sandbox$0.128 / vCPU·ч только активный CPU$0.0212 / GB·ч выделенной памятиРаздельно: активный CPU, память — по настенному времениЛимит Hobby; кредит Pro
Cloudflare Sandbox$0.072 / vCPU·ч только активный CPU$0.009 / GiB·ч выделенной памятиАктивный CPU + выделенные память/дискWorkers Paid за $5/мес.
Fly.io Sprites$0.07 / CPU·ч$0.04375 / GB·чТолько активное использование; засыпает при простоеУровни подписки
Runloop$0.108 / CPU·ч$0.0252 / GB·чСостояние запущено; при приостановке — только хранилищеБесплатный Basic; Pro за $250/мес.
Northflank$0.01667 / vCPU·ч$0.00833 / GB·чВыделенные ресурсы, посекундноБесплатный уровень 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. Стоимость 1 000 выполнений

Тарифы — это не расходы. Приведённая ниже модель фиксирует рабочую нагрузку и применяет к ней тарифную сетку каждого сервиса.

Допущения: песочница с 2 vCPU / 4 GiB, 1 000 выполнений, без учёта минимальной платы тарифа, без исходящего трафика, регион по умолчанию (Vercel iad1, Cloudflare standard-3 с 2 vCPU / 8 GiB / диском 16 GB, поскольку размеры экземпляров фиксированы).

Сценарий A: короткий всплеск — 90 секунд работы, средняя загрузка CPU 50%

ПлатформаСтоимость / 1 000Состав
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 минут работы, средняя загрузка CPU 5%

Именно так выглядит реальный агентский цикл. Песочница открыта, модель размышляет, ничего не выполняется.

ПлатформаСтоимость / 1 000Изменение относительно A
Northflank$11.116,7 раза
Cloudflare$13.873,7 раза
Vercel$16.273,1 раза
E2B / Daytona$27.606,7 раза
Modal$39.666,7 раза
Fly Sprites (не переводится в режим сна)$52.506,7 раза
Runloop (остаётся запущенным)$52.806,7 раза

Vercel перемещается с четвёртого по дешевизне места на третье, а стоимость CPU снижается с $3.20 до $2.13, тогда как у остальных она растёт линейно. Строка активного CPU Cloudflare снижается до $1.20. В этом и состоит весь аргумент в пользу биллинга за активный CPU; в данной рабочей нагрузке это даёт примерно двукратную экономию.

Сценарий B с приостановкой

Платформы, проигрывающие в сценарии B, могут отыграться, если ваша оркестрация приостанавливает работу между шагами, а не оставляет машину открытой. Та же рабочая нагрузка, 30 секунд активной работы на каждое выполнение:

ПлатформаСтоимость / 1 000Механизм
E2B (автопауза)~$2.16Пауза занимает около 4 с на GiB ОЗУ, возобновление — около 1 с (документация)
Fly Sprites$2.62Мониторинг простоя переводит спрайт в режим сна за несколько секунд
Runloop$2.64Приостановка прекращает тарификацию вычислений; хранилище продолжает тарифицироваться

Значение для E2B включает около 17 секунд накладных расходов на паузу и возобновление песочницы с 4 GiB. Эти накладные расходы — определяющая переменная: пауза экономически оправдана только тогда, когда промежуток между шагами существенно длиннее самой паузы.

Детектор простоя Fly точно определяет, что считается активностью: выполняющийся HTTP- или API-запрос, вывод в stdout сессии, открытое TCP-соединение или активная задача (sprites.dev). Агент, который сохраняет соединение открытым во время ожидания, — это агент, за которого взимается плата. Перенаправление вывода в файл активностью не считается, и это даёт реальный рычаг для оптимизации.

4. Сохранение файловой системы между шагами

Именно здесь платформы расходятся сильнее всего, и именно здесь неправильный выбор проявляется в повторной сборке node_modules на каждом шаге.

ПлатформаПоведение по умолчанию при остановке/простоеСостояние памятиМеханизм
E2BonTimeout по умолчанию имеет значение killПауза сохраняет ОЗУ и запущенные процессыpause() / connect(), приостановленные машины хранятся бессрочно
DaytonaСохранение включено по умолчанию; автоостановка через 15 мин. (контейнеры), автопауза через 60 мин. (ВМ)Только песочницы-ВМ через pause/resumeОстановка, архивирование, пауза, форк, тома
ModalЗавершается по timeout (по умолчанию 5 мин., максимум 24 ч.)Снимки памяти, срок хранения 7 днейСнимки файловой системы являются образами, срок хранения по умолчанию — 30 дней
CloudflareПереходит в режим сна через 10 мин.; диск сбрасывается до состояния образаНетcreateBackup() / restoreBackup(), монтирование R2, снимки постепенно внедряются
VercelПостоянные песочницы сохраняют снимок файловой системы при остановкеНетСнимки, срок хранения по умолчанию — 30 дней, $0.08/GB-месяц
RunloopПриостановка сохраняет состояниеДа, через suspend/resumeПриостановка/возобновление и ветвление снимков; только тариф Pro
Fly SpritesКорневая файловая система объёмом 100 GB сохраняется бессрочноКонтрольная точка/восстановлениеДиск на основе объектного хранилища, образ контейнера не используется

Три детали, которые стоит запомнить:

  • Настройка E2B по умолчанию уничтожает вашу работу: onTimeout имеет значение kill, если при создании не задать lifecycle: { onTimeout: 'pause' }. Уничтоженное состояние необратимо, а в документации не описан сигнал завершения перед остановкой. Считайте несохранённую работу потерянной.
  • Диск Cloudflare эфемерен при выходе из режима сна: в документации контейнеров прямо сказано, что уснувший экземпляр перезапускается со свежим диском из своего образа. Резервное копирование и восстановление в R2 уже работают; автоматический снимок диска persistAcrossSessions, анонсированный при выходе в общую доступность, на момент написания статьи всё ещё постепенно внедрялся.
  • Daytona разделяет сохранение по классам песочниц: контейнерные песочницы сохраняют файловую систему между остановкой и запуском, но не поддерживают паузу, поэтому память каждый раз очищается. Песочницы на базе Linux-ВМ поддерживают оба режима. GPU-песочницы эфемерны и удаляются при остановке; результаты необходимо записывать в том.

5. Политика исходящего трафика

Все платформы в этом сравнении теперь могут запускать песочницу без доступа к интернету. Различия заключаются в приоритетах правил, степени детализации и возможности изменять политику без перезапуска.

ПлатформаПо умолчаниюЗаблокировать всёСписок разрешенийИзменение во время работы
E2BИсходящий трафик открытallowInternetAccess: falseДомены, IP, CIDR; подстановочные символыДа, updateNetwork() заменяет всю политику
DaytonaЗависит от тарифаnetworkBlockAlldomainAllowList (макс. 20), networkAllowList (10 CIDR, только IPv4)Да, только уровни 3/4
ModalИсходящий трафик открыт, входящий отсутствуетblock_network=Trueoutbound_cidr_allowlist, outbound_domain_allowlist (бета)Альфа; только если списки разрешений заданы при создании
CloudflareИсходящий трафик открытenableInternet = falseallowedHosts / deniedHosts, шаблоны globДа, обработчики и правила для хостов применяются в реальном времени
Vercelallow-alldeny-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 передаёт учётные данные при исходящем запросе через сопоставители, область действия которых можно ограничить путём, методом, строкой запроса или заголовками; компания заявляет, что брандмауэр работает на хосте вне микроВМ, где код песочницы не может его отключить (Vercel). E2B предоставляет публичную бета-версию преобразований запросов для каждого хоста, которые добавляют заголовки на прокси исходящего трафика, включая токены идентификации рабочей нагрузки, невидимые для песочницы. Runloop предлагает шлюз учётных данных с внедрением непрозрачных токенов.

Для агентов, обрабатывающих ненадёжные входные данные, эта архитектура важнее холодного старта. Агент, подвергшийся атаке через внедрение промпта и имеющий токен GitHub в окружении, создаёт совсем другой инцидент по сравнению с агентом, который может обращаться к GitHub только через прокси, хранящий этот токен.

6. Изоляция, ограничения и мелкий шрифт

ПлатформаИзоляцияМаксимальная сессияКонкурентностьGPU в песочницеСобственный хостинг / BYOC
E2BМикроВМ Firecracker1 ч. Hobby, 24 ч. Pro; сбрасывается после паузы20 Hobby, 100 Pro, до 1 100Нетрепозиторий инфраструктуры Apache-2.0, Terraform + Nomad + Consul
DaytonaКонтейнеры, а также классы ВМ и WindowsНастраиваемая, опциональный TTL по настенному времениЗависит от тарифаДа (эфемерный)BYOC, корпоративный тариф
ModalgVisor5 мин. по умолчанию, максимум 24 ч.100 Starter, 5 000 TeamДа, полный прайс-листНет
CloudflareКонтейнеры в WorkersПереходит в режим сна через 10 мин. простоя, доступен keepAlive15 000 lite, 1 000+ standard-2НетНет
VercelМикроВМ Firecracker45 мин. Hobby, 24 ч. Pro10 Hobby, 10 000 ProНетAWS BYOC в закрытой бета-версии
RunloopМикроВМПриостановка/возобновлениеПродемонстрировано 10 000НетРазвёртывание в VPC
Fly SpritesМикроВМ FirecrackerПостояннаяУровни подпискиНетНет
NorthflankМикроВМ (Kata, Firecracker, gVisor)Постоянная или эфемернаяНа уровне платформыДаBYOC с самостоятельным подключением

7. Как выбрать

  • Выбирайте Vercel Sandbox, если ваш агент больше ждёт ответа моделей, чем выполняет вычисления, и вам нужен самый дешёвый измеренный холодный старт при пакетном запуске из представленных вариантов. Биллинг за активный CPU даёт примерно двукратную экономию в циклах с большим простоем, брандмауэр исходящего трафика с передачей учётных данных теперь доступен на каждом тарифе, а медиана 0,67 с и P99 1,12 с показали наиболее узкое распределение в августовском запуске.
  • Выбирайте E2B, если вам нужна изоляция ядра на уровне сессии для выполнения враждебного кода, сохранение состояния памяти между шагами или возможность самостоятельного хостинга. Установите onTimeout: 'pause' в первый же день. Будьте готовы к минимальной стоимости тарифа Pro в $150/мес., как только превысите 20 одновременно работающих песочниц или сессии длительностью более часа.
  • Выбирайте Daytona, если сохранение состояния — ключевая часть продукта и вы готовы принять вариативность доступной ёмкости. Жизненный цикл остановки, архивирования, паузы и форка здесь наиболее развит в категории; форк работающей ВМ с сохранением памяти не имеет полноценного аналога на других платформах, а вычислительный тариф совпадает с E2B без минимальной стоимости подписки.
  • Выбирайте Modal, если какая-либо часть работы агента связана с GPU. Это единственная представленная здесь платформа с полной тарифной сеткой GPU внутри песочницы — от T4 до B300. Перед началом работы учтите трёхкратный множитель для песочницы и региональные множители.
  • Выбирайте Cloudflare Sandbox, если ваше приложение уже работает в Workers, а модель безопасности исходящего трафика важнее холодного старта. Программируемые обработчики исходящего трафика, работающие вне песочницы и имеющие доступ к привязкам, действительно выделяют платформу. Медианные значения около пяти секунд при пакетном запуске — нет, поэтому удерживайте песочницы открытыми на протяжении сессии, а не создавайте по одной для каждого вызова инструмента, и учитывайте, что диск сбрасывается при переходе в режим сна.
  • Выбирайте Runloop, если создаёте coding-агента и хотите проводить оценку в стиле SWE-Bench на той же платформе. Учтите, что приостановка/возобновление — функция, исправляющая экономику простоя, — доступна только в тарифе Pro за $250/мес.
  • Выбирайте Fly Sprites, если вам нужен постоянный компьютер для каждого пользователя, а не одноразовый компьютер для каждого вызова, и Northflank, если вам нужны самый низкий опубликованный тариф, поддержка GPU и самостоятельное подключение BYOC на одной платформе.

Ключевые выводы

  • Измеренный холодный старт при пакетном запуске различается между поставщиками в 7 раз: Vercel — 0,67 с, Modal — 0,88 с, E2B — 1,61 с, Cloudflare — 5,06 с.
  • Заявления поставщиков «менее 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: общая доступность, цены Vercel Sandbox, брандмауэр Vercel Sandbox, цены Runloop, Sprites и цены Northflank

Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.

Впервые опубликовано изданием MarkTechPost

Читать оригинал на MarkTechPost ↗

Текст и изображения принадлежат MarkTechPost и приводятся здесь с указанием авторства и ссылкой на оригинальную публикацию.

← К новостям

Ещё новости

Все последние новости