Deep Agents: запуск ненадёжного кода без песочницы — риски и изоляция
В небольшом офисе команда разработчиков обсуждает новый инструмент.
Один из коллег говорит: «LangChain выпустил Deep Agents, которые позволяют писать скрипты, которые выполняются без полной песочницы».
Это значит, что можно быстро интегрировать динамические подагенты, не открывая целый контейнер, и при этом сохранить контроль над тем, что может делать код.
Проверьте, как быстро запускается интерпретатор и какие возможности доступны, прежде чем включать его в продакшн.
Источник: langchain.com
Что предоставляет репозиторий
Deep Agents включают в себя code interpreter – компонент, в котором агент пишет и запускает короткие скрипты.
Репозиторий содержит два ключевых пакета:
- quickjs‑rs – рантайм QuickJS, собранный в WebAssembly, который обеспечивает изоляцию памяти.
- langchain‑quickjs – middleware, который связывает интерпретатор с остальной частью Deep Agents.
Эти пакеты позволяют агенту выполнять JavaScript‑код внутри безопасного окружения, не выходя за пределы процесса.
Как это вписывается в рабочий процесс
В обычном процессе разработки вы обычно запускаете агента в отдельном контейнере, чтобы изолировать его от хоста.
Deep Agents делают то же самое, но внутри процесса:
1. Агент генерирует скрипт.
2. Скрипт передаётся в интерпретатор.
3. Интерпретатор запускает код в WebAssembly‑контейнере, где доступ к памяти ограничен.
Таким образом, вы экономите ресурсы, избегаете необходимости управлять отдельными виртуальными машинами, но сохраняете ту же степень безопасности.
Как проверить без превращения в игрушку
- Запустите пример – скачайте репозиторий и выполните
cargo run(или аналогичную команду). - Проверьте изоляцию памяти – убедитесь, что код не может обратиться к переменным хоста.
- Тестируйте доступные capabilities – в настройках агента укажите, какие данные и действия разрешены, и проверьте, что скрипт не выходит за эти границы.
- Проверьте паузы – запустите скрипт, который делает
awaitи убедитесь, что он корректно приостанавливается и возобновляется. - Оцените производительность – сравните время выполнения скрипта в интерпретаторе с аналогичным кодом, запущенным в обычном контейнере.
Если все тесты пройдены, вы можете использовать Deep Agents в продакшн‑окружении.
Какие риски стоит проверить
- Экспериментальность пакетов –
quickjs‑rsиlangchain‑quickjsотмечены как экспериментальные. Не используйте их в критичных системах без дополнительного тестирования. - Prompt‑инъекции – пока решение не полностью защищено от инъекций, агент может генерировать код, который нарушит ограничения.
- Лицензирование и поддержка – проверьте, какие лицензии применяются к репозиториям и как быстро обновляются пакеты.
- Сложность интеграции – если ваша команда не знакома с WebAssembly, потребуется время на обучение.
Учитывая эти факторы, решите, подходит ли решение для вашего проекта.
Что делать дальше
Если вы решили протестировать Deep Agents, начните с небольшого пилота:
- Создайте один подагент, который выполняет простую задачу (например, чтение файла).
- Запустите его в интерпретаторе и проверьте, что он не выходит за пределы разрешённых capabilities.
- Оцените время выполнения и стабильность.
Если результаты удовлетворительны, постепенно расширяйте использование, добавляя более сложные сценарии. Если же возникнут проблемы, рассмотрите альтернативы, такие как полноценные контейнеры или другие решения для изоляции кода.
Дополнительные рекомендации по безопасности
При работе с ненадёжным кодом важно учитывать несколько дополнительных аспектов. Во-первых, всегда ограничивайте время выполнения скрипта, чтобы избежать бесконечных циклов или зависаний. Во-вторых, настройте лимиты на использование памяти и количество операций, чтобы предотвратить DoS-атаки. В-третьих, регулярно обновляйте пакеты quickjs-rs и langchain-quickjs, так как в них могут быть исправлены уязвимости. Наконец, ведите логи выполнения скриптов для последующего анализа инцидентов.
Примеры использования в реальных проектах
Deep Agents уже применяются в нескольких сценариях. Например, в чат-ботах для генерации и выполнения пользовательских запросов, в системах автоматизации для обработки данных на лету, а также в образовательных платформах для выполнения учебных заданий. В каждом из этих случаев важно настроить capabilities таким образом, чтобы агент имел доступ только к необходимым ресурсам. Например, для чат-бота можно разрешить только чтение определённых файлов и выполнение математических операций, запретив сетевые запросы.
Заключение
Deep Agents от LangChain предлагают инновационный подход к выполнению ненадёжного кода без традиционной песочницы, используя WebAssembly для изоляции. Это решение позволяет экономить ресурсы и упрощает интеграцию, но требует тщательного тестирования и настройки безопасности. Начните с пилотного проекта, оцените риски и постепенно внедряйте в более сложные сценарии. Помните, что экспериментальные пакеты нуждаются в дополнительном контроле, особенно в критичных системах.
Источники
- LangChain Blog: Running Untrusted Agent Code Without a Sandbox
- Репозиторий quickjs‑rs на GitHub
- Репозиторий langchain‑quickjs на GitHub
- Документация WebAssembly (WASM)
- QuickJS — компактный JavaScript‑движок
- Руководство по безопасности WebAssembly
Что почитать дальше
- Claude Code атака через DNS: как AI-агент запускает вредоносный скрипт из GitHub
- Aside: браузер-агент, который не бросает задачу на логине
- Code-as-policy для робототехники: как AI-агент удешевляет пилот и где проверить риск перед стартом
- ZCode 3.0: стоит ли заменить Claude Code — обзор для разработчиков
- Динамические саб-агенты Deep Agents: как обработать 300 страниц без потери