В 2026 году запустить AI-агента без песочницы — всё равно что оставить квартиру с открытой дверью в районе с высоким уровнем преступности. Prompt injection атаки, как та история с LiteLLM, стали нормой. Агенты, которым доверяют доступ к shell, — это бомбы замедленного действия. В предыдущих статьях (раз, два) мы разбирали слои изоляции и показывали, как правильно настроить Docker-контейнер. Но ручное создание песочницы под каждого агента — та ещё морока. Особенно если агентов много, и каждый со своими инструментами. Знакомьтесь: LLM Sandbox — open-source фреймворк, который автоматизирует всю эту кухню.
Что под капотом: архитектура, от которой не оторвать глаз
LLM Sandbox — не очередная обёртка над docker run. Это полноценный оркестратор для безопасного выполнения кода, который сгенерировала нейросеть. В основе — идея субагентов, о которой мы писали в методичке по Sub-agents. Каждый субагент получает свою песочницу с минимальными правами, а главный агент (оркестратор) управляет ими через API.
Ключевая фича — policy-as-code. Вы описываете правила безопасности в YAML: какие команды разрешены, какие порты открыты, можно ли писать в /tmp. Оркестратор на лету генерирует Dockerfile и seccomp-профиль. Никаких ручных флагов в командной строке.
- Изоляция на уровне контейнера — каждый вызов кода живёт в своей Docker-песочнице. Read-only rootfs, user namespaces, запрет монтирования.
- Встроенный мониторинг — логи stdout/stderr, метрики CPU/RAM, алерты при подозрительной активности (например, попытка открыть сокет на 127.0.0.1:6379).
- Интеграция с LLM-фреймворками — готовые адаптеры для LangChain и LlamaIndex. Вы говорите агенту "запусти код", а он сам решает, в какой песочнице это сделать.
- Субагентный режим — оркестратор может запускать параллельных субагентов в разных контейнерах. Идеально для multi-agent сценариев, о которых мы говорили в статье IN Sandbox против Sandbox as Tool.
Сравнение с альтернативами: где LLM Sandbox выигрывает, а где проигрывает
Рынок песочниц для AI-агентов в 2026 году насыщен. Давайте разложим по полочкам.
| Инструмент | Изоляция | Простота настройки | Субагенты | Локализация |
|---|---|---|---|---|
| LLM Sandbox | Средняя (Docker + seccomp) | Высокая (один YAML-файл) | Да (из коробки) | Локальный |
| Docker run с флагами | Низкая (человеческий фактор) | Низкая (ручное управление) | Нет | Локальный |
| gVisor | Высокая (изоляция ядра) | Средняя (требуется настройка системы) | Нет (один контейнер — одно приложение) | Локальный |
| Firecracker (микро-ВМ) | Максимальная | Низкая (сложно, медленный запуск) | Технически да, но тяжко | Локальный |
| LangSmith Sandboxes | Высокая (управляемый sandbox) | Очень высокая (через UI) | Да | Облачное (LangChain) |
| E2B (кодовые песочницы) | Средняя (облачные контейнеры) | Высокая (API) | Через API, но сложно | Облачное |
Вывод для прагматиков: если вам нужна абсолютная изоляция и вы готовы мириться с оверхедом — смотрите в сторону gVisor или Firecracker. Если хотите минимальный порог входа и не паритесь о приватности — берите LangSmith Sandboxes или E2B. Но если вам нужно локальное решение с гибкой настройкой, которое умеет в субагентов и не требует месячных подписок, LLM Sandbox — ваш вариант.
Будьте честны: 90% промптов не требуют доступа к /etc/passwd. LLM Sandbox запрещает всё, что не разрешено явно. Это как тотальный контроль, но без паранойи.
Как это работает: от policy до выполнения
Весь процесс строится вокруг YAML-политики. Вы описываете, что может делать агент, а LLM Sandbox собирает Docker-образ и запускает код.
Вот как выглядит минимальная конфигурация для кодинг-агента (этот пример мы также разбирали в статье про кодинг-агентов):
# sandbox-policy.yaml
version: "1.0"
name: code-sandbox
container:
image: python:3.12-slim
read_only: true
tmpfs:
/tmp: "size=100M,noexec,nosuid"
user_namespace: true
seccomp: default
network:
enabled: false
commands:
allow:
- "/usr/bin/python3"
- "/usr/bin/pip"
deny:
- "/bin/bash"
- "/bin/sh"
- "/usr/bin/wget"
resources:
cpu: "0.5"
memory: "256M"
timeout: 30
Агент (например, на базе LangChain) отправляет в песочницу код на Python. LLM Sandbox запускает контейнер, выполняет скрипт, возвращает результат и убивает контейнер. Если агент попытается запустить bash — получит ошибку.
1 Настройка оркестратора
Устанавливаете через pip или Docker Compose:
pip install llm-sandbox
# или
docker run -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock llmsandbox/orchestrator
Оркестратор принимает HTTP-запросы на выполнение кода. В ответ — JSON с stdout, stderr, exit code.
2 Интеграция с LLM-агентом
Пример на Python с использованием LangChain (адаптированный код из документации):
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import tool
from llm_sandbox import SandboxClient
client = SandboxClient(base_url="http://localhost:8080", policy="code-sandbox")
@tool
def run_python_code(code: str) -> str:
"""Execute Python code in a secure sandbox."""
response = client.execute(code)
return response["stdout"]
# ... дальше стандартная цепочка LangChain
Теперь любой код, который решит выполнить агент, отправляется в изолированную среду. Попытка прочитать /etc/shadow? Ничего не выйдет — контейнер read-only и без доступа к хосту.
Реальные сценарии: где LLM Sandbox спасает от катастрофы
Сценарий 1: Автоматический code review и тестирование. Агент получает PR, генерирует тесты и запускает их в песочнице. Если тест удаляет базу данных — не страшно, контейнер всё равно умрёт через 30 секунд. Мы писали об этом в контексте фреймворка офлайн-оценки.
Сценарий 2: Мультиагентная система с субагентами. Запускаете 10 субагентов, каждый анализирует свою часть данных. Оркестратор распределяет их по контейнерам, изолирует друг от друга. Если один агент скомпрометирован — остальные в безопасности.
Сценарий 3: Обучение с подкреплением для кодинг-агентов. Песочница позволяет безопасно симулировать среду. Агент может пробовать разные команды, падать, перезапускаться — без риска для хоста.
--tmpfs /sandbox:size=200M и ограничивать время жизни контейнера до 60 секунд. Это предотвращает "зависшие" процессы — частая проблема, когда агент зацикливается.Кому стоит установить LLM Sandbox прямо сейчас
- Инди-разработчикам AI-агентов, которые хотят запускать код локально, не доверяя облачным песочницам.
- Командам, которые строят multi-agent системы — субагентный режим сэкономит вам часы на написание собственного оркестратора.
- Исследователям безопасности, изучающим атаки на агентов — встроенный мониторинг позволяет логировать каждое действие внутри контейнера.
- Тем, кто переходит с LangSmith Sandboxes на self-hosted — LLM Sandbox даёт тот же уровень абстракции, но без привязки к облаку.
А кому не подойдёт? Если вам нужна is-it-just-me паранойя — изоляция на уровне ядра (gVisor/Firecracker). Если лень возиться с YAML — облачные сервисы вроде Code Interpreter от OpenAI или E2B. Но за удобство вы платите либо деньгами, либо контролем.
Пара слов напоследок
В 2026 году промпт-инъекции уже не экзотика — это рутина. LLM Sandbox не панацея, но он снижает порог для безопасного запуска агентов до одного YAML-файла. Советую интегрировать его в свой стек как обязательный компонент, особенно если ваши агенты работают с внешними данными. А если сомневаетесь, вспомните историю с supply-chain-атаками через prompt injection — лучше перебдеть, чем потом объяснять клиентам, почему их токены утекли.
Удачи в песочнице!