Запись архива

Benzi — AI-агент, который не читает код, а запрашивает его структуру

Benzi — альтернативный подход к AI-кодингу: вместо сброса репозитория в контекст модель использует скомпилированную карту кода на основе tree-sitter. 78.2% на SWE-bench Verified, поддержка 10 языков и обещание радикально меньшего потребления токенов.

Схема работы AI-агента Benzi: компилятор tree-sitter строит карту кода, модель запрашивает её через инструменты, а не читает исходники
Схема работы AI-агента Benzi: компилятор tree-sitter строит карту кода, модель запрашивает её через инструменты, а не читает исходники
Journalists Protest against rising violence during march in Mexi | by Knight Foundation | openverse | by-sa

На Hacker News опубликован проект Benzi — AI-агент для написания и рефакторинга кода, основанный на принципиально ином подходе к работе с кодом. Вместо того чтобы сбрасывать содержимое файлов в контекстную модель, Benzi сначала компилирует весь проект в точную, запрашиваемую карту, используя парсеры tree-sitter.

Как работает Benzi

Перед тем как ответить на любой вопрос, Benzi запускает реальный компилятор на основе tree-sitter, который парсит каждый файл проекта и строит карту: каждый символ, каждая точка вызова, каждая ссылка, каждая цепочка наследования классов. Это делается за один проход. После этого модель общается с кодом не через чтение файлов, а через инструменты — например, запрос «какие функции передают данные в эту?» выполняется за O(1), без повторного сканирования.

Такой подход решает несколько проблем классических AI-агентов:
— резкое снижение количества токенов: Benzi Sonnet читает 9 125 строк кода против 20 704 у Claude Code и 43 598 у DeepSeek;
— устранение контекстного дрейфа при многофайловом рефакторинге;
— предсказуемость: модель получает не сырой текст, а структурированную информацию о зависимостях и зонах поражения изменений.

Три уровня достоверности

Автор проекта признаёт риск: «А что если компилятор ошибается? Не введёт ли это модель в заблуждение?» Для этого в Benzi реализована система трёх уровней истинности:
— RESOLVED — есть точное доказательство из статического анализа;
— CANDIDATE — то, что не удалось разрешить статически;
— OBSERVED — что произошло на самом деле при выполнении.

Модель и детерминистический слой координации работают так, чтобы минимизировать чтение исходного кода без потери корректности результатов.

Бенчмарки и поддержка языков

На SWE-bench Verified Benzi показывает 78.2% при однократном запуске 500 задач из 12 Python-репозиториев. Оценка проводилась официальным раннером swebench.harness.run_evaluation в изолированных Docker-контейнерах без доступа к сети.

Поддерживаемые языки: Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust, Ruby, а также HTML, CSS и JS — с отдельным индексом для разметки. Проект находится в активной разработке, доступен бесплатно на GitHub и в VS Code Marketplace.

Практические ограничения

Важно понимать: Benzi — это работа в процессе. Проект не является зрелым коммерческим продуктом. Заявленные результаты на SWE-bench — это одноразовые прогоны без многократного усреднения. Поддержка 10 языков реализована через tree-sitter, но глубина и качество индексации могут различаться. Также, хотя Benzi и снижает потребление токенов, он всё равно требует первоначальной компиляции проекта, которая для больших репозиториев (например, VS Code на 923 тыс. строк) занимает около двух минут.

Источники
— Оригинальная публикация на Hacker News: news.ycombinator.com/item?id=49599867
— Репозиторий проекта на GitHub: github.com/oooscoos/Benzi
— Документация и бенчмарки: benzi.fly.dev/about
— Официальный бенчмарк SWE-bench: swebench.com