ChatPaper.aiChatPaper

LACUNA: Agentes Seguros como Buracos de Programa Recursivos

LACUNA: Safe Agents as Recursive Program Holes

May 27, 2026
Autores: Yaoyu Zhao, Yichen Xu, Oliver Bračevac, Cao Nguyen Pham, Frank Zhengqing Wu, Martin Odersky
cs.AI

Resumo

Os agentes LLM cada vez mais agem escrevendo código, mas persiste uma divisão entre o ambiente de execução que conduz o agente e o código que o modelo escreve. O ambiente de execução controla o loop, o contexto e o fluxo de controle, sobre os quais o modelo tem pouca influência. Permitir que o código escrito pelo molde o próprio ambiente de execução tornaria os agentes mais expressivos, mas também agravaria problemas de segurança. Um modelo pode ser desviado por uma injeção de prompt, chamar a ferramenta errada ou falhar no meio do processo, deixando um estado inconsistente — e cada falha desse tipo alcança mais longe quando o código molda o ambiente de execução do que quando expressa uma única ação. Apresentamos LACUNA, um modelo de programação para agentes que supera essa divisão preservando a segurança. Cada ação do agente é uma chamada tipada agent[T](task) que o LLM preenche com código quando a execução a atinge, e o código é verificado quanto ao tipo em relação ao programa circundante antes de ser executado. Como cada ação é aceita ou rejeitada como um todo, uma ação rejeitada deixa o ambiente intocado, e seus diagnósticos do compilador orientam uma nova tentativa. A mesma verificação também delimita quais ferramentas e dados uma ação pode usar e como eles fluem. Nossa primitiva expressa loops ReAct, subagentes, habilidades, decomposição paralela e planejamento multimodelo como fluxo de controle comum. Avaliamos LACUNA em uma coleção de casos de teste, BrowseComp-Plus e τ^2-bench. No BrowseComp-Plus, 8,6% das gerações são rejeitadas antes da execução, com 0,7 novas tentativas por consulta em média, e o agente atinge 27,1% de precisão. No τ^2-bench, o LACUNA resolve 76,0% das 392 tarefas em quatro domínios com um modelo capaz, empatado com o agente de referência.
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.