ChatPaper.aiChatPaper

ЛАКУНА: Безопасные агенты как рекурсивные программные дыры

LACUNA: Safe Agents as Recursive Program Holes

May 27, 2026
Авторы: Yaoyu Zhao, Yichen Xu, Oliver Bračevac, Cao Nguyen Pham, Frank Zhengqing Wu, Martin Odersky
cs.AI

Аннотация

LLM-агенты все чаще действуют, создавая код, однако сохраняется разрыв между средой выполнения, управляющей агентом, и кодом, который пишет модель. Среда выполнения контролирует цикл, контекст и поток управления, и модель практически не влияет ни на один из них. Позволить написанному моделью коду формировать саму среду выполнения сделало бы агентов более выразительными, но также обострило бы проблемы безопасности. Модель может быть отвлечена промпт-инъекцией, вызвать неверный инструмент или завершиться с ошибкой на полпути, оставив несогласованное состояние, и каждый такой сбой имеет более серьезные последствия, когда код формирует среду выполнения, по сравнению со случаем, когда он выражает единичное действие. Мы представляем LACUNA — модель программирования для агентов, которая устраняет этот разрыв, сохраняя безопасность. Каждое действие агента — это типизированный вызов agent[T](task), который LLM заполняет кодом по достижении точки выполнения, а код проверяется на соответствие типам относительно окружающей программы до его запуска. Поскольку каждое действие принимается или отклоняется как единое целое, отклоненное действие оставляет среду нетронутой, а диагностика компилятора используется для повторной попытки. Та же проверка также ограничивает, какие инструменты и данные может использовать действие и как они передаются. Наш примитив выражает циклы ReAct, под-агентов, навыки, параллельное декомпозицию и многомодельное планирование как обычный поток управления. Мы оцениваем LACUNA на наборе тестовых примеров, BrowseComp-Plus и τ²-bench. На BrowseComp-Plus 8.6% генераций отклоняются до выполнения, в среднем 0.7 повторных попыток на запрос, а агент достигает точности 27.1%. На τ²-bench LACUNA решает 76.0% из 392 задач в четырех областях с помощью способной модели, что сопоставимо с базовым агентом.
English
LLM agents increasingly act by writing code, yet a split persists between the runtime that drives the agent and the code the model writes. The runtime owns the loop, context, and control flow, and the model has little say over any of them. Letting model-written code shape the runtime itself would make agents more expressive, but it would also sharpen safety problems. A model can be diverted by a prompt injection, call the wrong tool, or fail partway and leave an inconsistent state, and each such failure reaches further when the code shapes the runtime than when it expresses a single action. We present LACUNA, a programming model for agents that closes this split while preserving safety. Each agent action is a typed call agent[T](task) that the LLM fills with code when execution reaches it, and the code is type-checked against the surrounding program before it runs. Because each action is accepted or rejected as a whole, a rejected one leaves the environment untouched, and its compiler diagnostics drive a retry. The same check also bounds which tools and data an action may use and how they flow. Our primitive expresses ReAct loops, sub-agents, skills, parallel decomposition, and multi-model planning as ordinary control flow. We evaluate LACUNA on a collection of test cases, BrowseComp-Plus, and τ^2-bench. On BrowseComp-Plus, 8.6% of generations are rejected before execution, with 0.7 retries per query on average, and the agent reaches 27.1% accuracy. On τ^2-bench, LACUNA solves 76.0% of 392 tasks across four domains with a capable model, on par with the baseline agent.