Что такое Agent Substrate?
Agent Substrate — это среда выполнения агентов с безопасностью по умолчанию, спроектированная для запуска миллионов изолированных окружений (sandbox) с плотностью в 10 раз выше, чем у стандартных контейнерных сред выполнения. Созданная специально для эпохи автономных агентов, платформа Substrate обеспечивает операции возобновления (resume) быстрее 500 мс при пропускной способности более 500 операций приостановки/возобновления в секунду, а также нативную сетевую изоляцию и изоляцию на уровне ядра по принципу нулевого доверия (zero-trust). Поддерживаются несколько технологий изолированных окружений, включая микровиртуальные машины (microVM) и gVisor, что обеспечивает единообразные операции жизненного цикла для всех типов sandbox.
В основе Agent Substrate лежит принцип отображения большого множества «актёров» (actors) — приложений, таких как агенты, — на меньшее множество готовых «рабочих процессов» (workers). Это достигается за счёт того, что приложения агентного типа большую часть времени простаивают, что позволяет добиться интенсивного мультиплексирования. Платформа предоставляет функциональность для управления жизненным циклом актёра (создание/удаление, приостановка/возобновление), назначения актёров рабочим процессам в режиме реального времени и маршрутизации входящего трафика к ним.
Agent Substrate намеренно спроектирован как система с минимальными ограничениями. Управляемые ею нагрузки не обязаны быть буквально ИИ-агентами, однако именно агенты — наилучший пример приложений, для которых она предназначена. Это не SDK для создания агентов, а система для их запуска в масштабе.
Agent Substrate использует Kubernetes для подготовки инфраструктуры и управления жизненным циклом рабочих процессов (Kubernetes Pods). Платформа строится поверх таких функций Kubernetes, как Pods и автомасштабирование Pod, тогда как сам Agent Substrate обеспечивает планирование и управление, специфичные для агентов, что позволяет снизить задержку. Использование Kubernetes в качестве базовой системы даёт единообразное управление инфраструктурой для всех типов нагрузок, необходимых при сквозных агентных развёртываниях, и открывает возможности для комплексной оптимизации инфраструктуры в сценариях обучения с подкреплением (RL), охватывающих агентные, инференс- и обучающие циклы.
Демонстрация
Посмотрите, как кластер Agent Substrate мультиплексирует ~250 состоятельных акторов всего на 8 физических Pod.
Эта демонстрация показывает основные возможности разработчика и функции «агентной инфраструктуры» (Agentic Infrastructure) платформы Substrate:
-
Телепортация актора (Actor Teleport): высокопроизводительная приостановка и возобновление акторов на любом доступном рабочем процессе в пуле с активацией быстрее одной секунды.
-
Сохранение состояния (State Persistence): постоянная рабочая память (энергозависимое ОЗУ) и состояние файловой системы полностью сохраняются между циклами гибернации через полные снимки состояния (full-state snapshots).
-
Мультиплексирование агентов (Agent Multiplexing): демонстрируется избыточная подписка более чем в 30 раз за счёт «жонглирования» большим реестром состоятельных акторов на небольшом пуле общих физических Pod.
Чтобы воспроизвести эту демонстрацию в собственном кластере, воспользуйтесь подробным руководством в разделе Counter Demo.
Для просмотра дополнительных видеоматериалов и руководств посетите наш YouTube-канал: agent-substrate.
Независимость от фреймворков и совместимость
Agent Substrate спроектирован как независимый от фреймворков и агентных окружений (framework and agent harness agnostic). Поскольку он управляет стандартными OCI-контейнерами на уровне ядра (через gVisor), он может запускать агентов, построенных на любом стеке.
-
Agent Development Kit (ADK): поддержка агентов ADK с сохранением состояния сессии между вызовами в виде состояния актора. Идеально для всех типов агентов, а также состоятельных вызовов инструментов и субагентов.
-
LangChain: идеальная среда выполнения для агентов LangChain и вызовов инструментов.
-
Claude Code, CodeX и Antigravity: поддержка высокоплотных, состоятельных сред разработки, сохраняющих состояние системы и файловой системы между сессиями.
-
Model Context Protocol (MCP): поддержка развёртывания защищённых, изолированных MCP-серверов в виде акторов Substrate для предоставления надёжных инструментов любой модели.
Экосистема и примеры
-
Agent Executor — распределённая среда выполнения агентов, демонстрирующая построение безопасного гиперпроизводительного агентного окружения на базе Agent Substrate (см. анонс в блоге и руководство по интеграции).
-
kagent — проект CNCF Sandbox и Kubernetes-нативный фреймворк для создания, развёртывания и управления ИИ-агентами, использующий Agent Substrate для запуска изолированных состоятельных агентных нагрузок (см. анонс в блоге).
Статус и совместимость
Agent Substrate в настоящее время находится на ранней стадии разработки. Он не готов к использованию в продакшен-окружении, а API практически гарантированно будут меняться. На данном этапе мы не даём никаких гарантий обратной совместимости, и любая часть этого проекта может быть изменена.
Поддерживаемые версии Kubernetes
В настоящее время мы стремимся поддерживать последний стабильный релиз Kubernetes и предыдущий минорный релиз.
Сообщество
Для получения анонсов, технических обсуждений и поддержки от сообщества, пожалуйста, вступите в Google Group ate-dev.
Мы проводим еженедельные встречи сообщества каждый четверг с 10:00 до 11:00 по PST.
-
Ссылка для видеозвонка: https://meet.google.com/uhq-cxvn-dhy
-
Или наберите: (US) +1 253-289-6971 PIN: 787 664 574 59#
-
Другие номера телефонов: https://tel.meet/uhq-cxvn-dhy?pin=9044088223662
-
Заметки встречи еженедельного синхронизационного совещания
-
Записи и транскрипции всех встреч сообщества
Также у нас есть каналы в CNCF Slack; запросите приглашение, если у вас нет доступа.
-
#substrate-users — обсуждение использования Substrate.
-
#substrate-dev — обсуждение разработки Substrate.
Разработка
Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения руководства по участию в проекте. Мы приветствуем вклад любого рода, однако проект очень молод. Наш непосредственный фокус — построение ядра системы и демонстраций, поэтому в ближайшее время мы можем не иметь возможности рассмотреть или принять вклады, не соответствующие этим целям.
Быстрый старт (разработка)
Для быстрого развёртывания полного окружения:
-
Убедитесь, что на вашей машине разработчика установлены и настроены Go,
kubectlиdocker. Остальные зависимости, включаяkind, будут управляться автоматически через Go. -
Выполните следующие шаги:
# создать кластер и локальный реестр (IPv4; IP_FAMILY=dual|ipv6 для переопределения) hack/create-kind-cluster.sh # установить ate, PostgreSQL, rustfs hack/install-ate-kind.sh --deploy-ate-system # установить демонстрацию счётчика hack/install-ate-kind.sh --deploy-demo-counter # установить kubectl-ate go install ./cmd/kubectl-ate # создать актор-счётчик в atespace демонстрации (--template задаёт имя # шаблона актора, разрешаемого в atespace актора) kubectl ate create actor my-counter-1 -a ate-demo-counter --template counter # перенаправить порт сетевого роутера на локальный порт `8000` kubectl port-forward -n ate-system svc/atenet-router 8000:80 -
В отдельном терминале отправьте HTTP-запрос для увеличения счётчика:
curl -X POST \ -H "ate-target-actor: ate-demo-counter/my-counter-1" \ -i http://localhost:8000/
Ёмкость рабочих процессов версионируется: плоскость данных (DaemonSet atelet и Pod рабочих процессов) планируется только на узлы, имеющие метку ate.dev/substrate-version, которую установка проставляет на каждый существующий на тот момент узел. Узел, добавленный позже, не будет иметь рабочих процессов, пока вы не пометите его установленной версией (kubectl label node <node> ate.dev/substrate-version=<build version>). Команда kubectl get ds -n ate-system -l app=atelet -L ate.dev/substrate-version выводит установленную версию из DaemonSet atelet, созданного при установке.
Быстрый старт на GKE (разработка)
-
Создайте и настройте файл окружения:
cp hack/ate-dev-env.sh.example .ate-dev-env.sh # Отредактируйте .ate-dev-env.sh под ваш проект и предпочтения, затем загрузите его: source .ate-dev-env.sh -
Включите учётные данные по умолчанию для gcloud:
gcloud auth application-default login --project=${PROJECT_ID} -
Подготовьте необходимые ресурсы GCP (кластер GKE, GCS и привязки IAM):
go run ./tools/setup-gcp bootstrapНа новом проекте этот шаг также создаёт разрешения IAM для Workload Identity atelet, от которых зависят снимки состояния — см. что фактически предоставляет
create iamдля аудита или ручного применения. Если вы используете собственный кластер, обратите внимание, что необходимые бета-API Kubernetes можно включить только при создании кластера — см. предупреждение Create Cluster. -
Разверните систему Agent Substrate в вашем кластере:
./hack/install-ate.sh --deploy-ate-systemУзлы, которые GKE добавляет позже (автомасштабирование, авторемонт, обновления узлов), создаются с метками пула узлов, поэтому пул также должен иметь метку
ate.dev/substrate-version; см. метки версий узлов. -
После этого можно развернуть примеры приложений. Подробные руководства см. в demos/counter/README.md или demos/sandbox/README.md.
./hack/install-ate.sh --deploy-demo-counter
Пользовательская настройка и развёртывание
Вы можете выполнять отдельные шаги настройки для создания ресурсов GCP по мере необходимости. Для просмотра доступных параметров выполните go run ./tools/setup-gcp --help. Например:
go run ./tools/setup-gcp create cluster
go run ./tools/setup-gcp create bucket
Чтобы запустить бэкенд хранилища PostgreSQL на Cloud SQL с аутентификацией через IAM и без паролей, см. tools/setup-gcp/cloud-sql.md.
Аналогичным образом можно развернуть или удалить отдельные компоненты Agent Substrate с помощью скрипта установки. Для просмотра всех параметров выполните ./hack/install-ate.sh --help.
# Повторно развернуть только ate-apiserver системы ATE
./hack/install-ate.sh --deploy-ate-apiserver
# Удалить всё (основную систему и все демонстрации)
./hack/install-ate.sh --delete-all
Удаление ресурсов (GCP)
Если вам нужно удалить ресурсы, созданные скриптом настройки, воспользуйтесь скриптом hack/teardown.sh. Этот скрипт удаляет ресурсы в порядке, обратном созданию, и корректно обрабатывает частичные сбои.
./hack/teardown.sh --all
Или выполняйте отдельные шаги удаления по мере необходимости (доступные параметры см. в ./hack/teardown.sh).
Удаление локальных ресурсов kind
Если вам нужно удалить локальный кластер kind и его реестр (если они были созданы скриптом hack/create-kind-cluster.sh):
./hack/delete-kind-cluster.sh
Демонстрации
Мы предоставляем несколько примеров приложений, демонстрирующих возможности Agent Substrate:
-
Counter Demo — состоятельный HTTP-сервер на Go, демонстрирующий сохранение состояния между приостановками/возобновлениями, а также возобновление актора по запросу и маршрутизацию через роутер Substrate.
-
Sandbox Demo (Antigravity) — защищённая изолированная среда выполнения (на базе Alpine Linux), позволяющая выполнять произвольные команды оболочки с сохранением состояния файловой системы между сессиями.
-
Claude Code Multiplex — демонстрирует избыточную подписку физического оборудования путём мультиплексирования нескольких агентов Claude Code на ограниченном пуле рабочих процессов.
-
Multi-Template — два
ActorTemplate, запускающих разные бинарные файлы, совместно используют одинWorkerPool, хотя шаблоны находятся в разных atespace. -
Request Parking — в перегруженном пуле роутер удерживает входящие запросы до освобождения рабочего процесса вместо того, чтобы возвращать
503. -
Autoscaled WorkerPool — масштабирует
WorkerPoolпо количеству назначенных рабочих процессов с помощью HPA, питаемого через prometheus-adapter.
Документация и руководства
-
Архитектура — как взаимодействуют плоскость управления, супервизор узла и сетевой стек.
-
Руководство по настройке API — подробный справочник по настройке WorkerPool, ActorTemplate, Secrets и Volumes.
-
Полная документация CLI — установка и использование
kubectl-ate. -
Глоссарий — основные термины (Actor, Atespace, ActorTemplate, WorkerPool, Worker, ate-api-server, atenet, atelet, ateom) и их взаимосвязь.
-
Репозитории интеграций — где находятся интеграции, как называются их репозитории и как исправления попадают обратно в ядро.
-
Руководство по наблюдаемости — ведение журналов акторов, метрики и распределённая трассировка.
-
Руководство по аутентификации — настройка доверенных провайдеров JWT и учётных данных пользователей.
-
Включение перехвата MITM для политики исходящего трафика актора — политики исходящего трафика, такие как внедрение заголовков, зависят от перехвата MITM трафика акторов. Это руководство объясняет, как настроить актор для включения перехвата.
-
Request Parking — как роутер удерживает запросы при кратковременном насыщении пула рабочих процессов.
-
Руководство по обновлению в режиме скользящего обновления — обновление работающего Substrate узел за узлом без потери состояния акторов.
-
Модель угроз — границы доверия, допущения и известные риски.
-
Дорожная карта — текущие ограничения и планы на будущее.
-
Руководство по бенчмаркингу — нагрузочные тесты на базе Locust, стек мониторинга и оркестрированный стенд для бенчмаркинга.
Обзор проекта
Команды
-
cmd/ateapi— основной API-сервер плоскости управления, предоставляющий gRPC-эндпоинты для управления жизненным циклом акторов и рабочих процессов. -
cmd/atelet— DaemonSet на уровне узла, который контролирует физические Pod рабочих процессов, координирует создание снимков состояния и управляет передачей состояния. -
cmd/atecontroller— контроллер Kubernetes, выполняющий согласование пользовательских ресурсов WorkerPool. -
cmd/atenet— комбинированный сетевой контроллер, обеспечивающий маршрутизацию Envoy и прокси-сайдкары. -
cmd/ateom-gvisor— вспомогательный процесс внутри Pod, работающий внутри изолированных Pod рабочих процессов для выполнения команд checkpoint и restore утилитыrunsc. -
cmd/ateom-microvm— аналогateom-gvisorдля микровиртуальных машин, запускающий акторов в виде виртуальных машин cloud-hypervisor. -
cmd/podcertcontroller— «полифил», предоставляющий подписчиков сертификатов Pod, которые в конечном счёте появятся в upstream Kubernetes (под другими именами). -
cmd/kubectl-ate— инструмент командной строки для управления ресурсами Agent Substrate. См. его README. -
cmd/benchmarking— синтетические нагрузки, используемые нагрузочными тестами, включаяglutton, который по требованию потребляет ОЗУ, дисковое пространство и файловые дескрипторы. -
tools/setup-gcp— утилита подготовки для настройки необходимых ресурсов инфраструктуры GCP (GKE, GCS, IAM). -
demos/— примеры приложений, демонстрирующих возможности Agent Substrate.