Сигнал из хука LLMScience: Microsoft выпустила CABRA — инструмент для оценки ИИ-агентов в программировании. Он генерирует синтетические задачи на основе графов вызовов функций и постепенно наращивает сложность, чтобы найти момент, где агент начинает спотыкаться. Главный вывод из поста: обычные модели резко теряют точность на сложных задачах, а агенты почти не замечают разницы — пишут скрипт с grep или разбором AST и идут дальше. Ниже — что именно меряет CABRA по репозиторию проекта и что из этого стоит забрать себе. Витрина — vibe-studio.uk.
Соседи: pass@k и надёжность агентов, уборка AGENTS.md, структура репозитория ИИ-приложения, Auto-review в Codex.
Что такое CABRA
Расшифровка — Coding Ability Blueprint for Rigorous Agent evaluation. Работа называется «Code Understanding is a Bottleneck for Coding Agents», то есть «понимание кода — узкое место кодовых агентов». Авторы — Nishant Balepur, Kiran Tomlinson и Tobias Schnabel.
Механика простая. CABRA берёт граф вызовов функций без циклов, превращает его в исполняемую программу и даёт агенту задачу на правку. Типы правок взяты из каталога рефакторингов Мартина Фаулера:
- удалить мёртвый код;
- добавить входной параметр;
- добавить возвращаемое значение;
- закешировать вызов функции;
- убрать повторы (Don't Repeat Yourself).
Четыре оси сложности
Каждую задачу можно усложнять по одной оси, чтобы понять, что именно ломает агента:
- Проход по функциям — через сколько функций должна протянуться правка.
- Поиск — сколько функций-отвлекающих лежит рядом в кодовой базе.
- Разбор выполнения — сколько шагов выполнения нужно отследить, чтобы найти нужную ветку.
- Следование инструкциям — сколько ограничений на правку дано одновременно.
Отдельно есть стресс-тест Merge Codebases — слить две кодовые базы, где похожая по смыслу логика написана по-разному.
Что показали результаты
В репозитории заявлено 6 840 задач, восемь моделей и шесть конфигураций агента Copilot. Выводы авторов:
- Точность голой модели в целом падает по мере роста сложности.
- Агенты остаются почти безошибочными на многих задачах, потому что отдают работу инструментам: например, ищут по коду через grep, а не держат всё в голове.
- На больших задачах агент тратит больше токенов на чтение и анализ кода, а не на сами правки.
- Ломаются агенты на задачах, где нужно понять смысл: найти логику, которая делает одно и то же, но выглядит по-разному в разных программах.
Чем это не является
- Не рейтинг «какая модель лучше». CABRA — инструмент диагностики: он показывает, на какой оси агент сдаётся.
- Не реальный проект. Задачи синтетические. Это плюс для чистоты эксперимента и минус для прямого переноса цифр на ваш код.
- Не готовый сервис. Чтобы прогнать у себя, нужны Python 3.13, uv, Linux или WSL2, Docker для агента и ключ OpenRouter для моделей. Для обычного вайб-кодера полезнее выводы, чем запуск.
Что это значит для вайб-кодера
Главная мысль: агент силён там, где задачу можно свести к поиску и механической правке, и слаб там, где нужно понять, что два куска кода делают одно и то же. Отсюда практические правила.
- Делайте код находимым. Говорящие имена функций и файлов, одно понятие — одно слово. Если оплата у вас называется то payment, то billing, то charge, grep найдёт треть, и агент поправит треть.
- Не плодите дубли логики. Ровно на «похожая логика, написанная по-разному» агенты и ломаются. Две функции расчёта цены в разных местах — гарантированный баг после правки одной из них.
- Короткие цепочки вызовов. Чем через большее число функций протягивается правка, тем больше шансов что-то упустить. Плоская структура дешевле в токенах и надёжнее.
- Одна задача — одно требование. Ось «следование инструкциям» говорит прямо: пачка ограничений в одном промпте повышает риск. Лучше три коротких прохода, чем один длинный.
- Тесты как проверка смысла. Агент может сделать правку, которая выглядит верно. Тест на поведение ловит то, что не ловит чтение кода.
Как подготовить репозиторий под агента
- В AGENTS.md опишите, где что лежит и какие слова что означают. Короткий словарь терминов экономит агенту чтение, а вам токены — подробно в разборе уборки AGENTS.md.
- Разложите код по зонам ответственности, чтобы поиск давал один ответ, а не пять. Пример раскладки — в разборе структуры репозитория ИИ-приложения.
- Перед большим рефакторингом попросите агента сначала найти все места, где встречается логика, и показать список. Правку — вторым шагом.
- Опасные действия агента держите под проверкой: Auto-review в Codex и разбор про права агента.
Если вы делаете продукт с трафиком
Лендинг, бот и панель вроде TG Lead Finder со временем обрастают модулями. Каждый новый модуль, собранный агентом «по аналогии», — потенциальный дубль логики: лимиты, тайминги, обработка ошибок. Вынесите общее в одно место сразу, пока модулей три, а не тридцать. Тогда следующий агент поправит лимит один раз, а не будет искать его копии.
Коротко
CABRA от Microsoft проверяет кодовых агентов на синтетических правках по четырём осям сложности. Голые модели проседают, агенты держатся за счёт grep и скриптов, но ломаются, когда нужно понять смысл кода, а не найти строку. Вывод для вайб-кодера: находимые имена, никаких дублей логики, короткие цепочки, одно требование за проход и тесты на поведение. Источник — github.com/microsoft/CABRA.
