Никита Орлов

СтатьяКейс

Как проверить ИИ-агентов для кода на одном issue без подгонки

Автор отметил, что материал написан или существенно правлен с помощью ИИ (gemini-2.5-flash).

Входные данные и проблема подгонки результатов

Сравнение ИИ агентов для кода часто страдает от одной проблемы: тесты пишутся под конкретную модель или промпт подгоняется под привычки ассистента. В итоге на бенчмарках всё зелёное, а на живом репозитории агент ломает соседние модули.

Чтобы получить объективный срез, нужна строгая изоляция среды и зафиксированный срез кодовой базы. Ниже разнесена методика, опирающаяся на подходы SWE-bench и локальный запуск в изолированных контейнерах.

  • Фиксация коммита в репозитории до появления бага.
  • Отказ от ручной правки промпта в процессе бенчмарка.
  • Использование единого набора тестов (regression suite).

Как проверить агентов на одном issue без подгонки результата

Для чистоты эксперимента берётся один реальный закрытый issue из репозитория средней сложности на GitHub с понятным набором упавших тестов. Задача агента — устранить ошибку, не затронув остальную логику.

Среда выполнения изолируется через Docker-контейнер с фиксированными зависимостями. Агент получает на вход только текст issue, структуру проекта и доступ к терминалу с ограничениями по времени и числу токенов.

  • Шаг 1: Клонирование репозитория на состояние за один коммит до фикса.
  • Шаг 2: Установка зависимостей в чистом контейнере без кеша.
  • Шаг 3: Передача issue в неизменном виде агенту через CLI.
  • Шаг 4: Запуск pytest или аналогичного тестового фреймворка.

Стек и ограничения тестового окружения

В тестах участвуют актуальные инструменты командной разработки: Aider, Claude 3.5 Sonnet через API и Cursor вheadless-режиме. Ограничением выступает отсутствие доступа к интернету внутри контейнера, кроме официальных репозиториев пакетов.

Если агент начинает галлюцинировать несуществующие библиотеки или патчить тесты вместо кода приложения — попытка фиксируется как провал без права на пересдачу.

  • Ограничение по времени выполнения задачи: 20 минут.
  • Запрет на редактирование файлов из директории tests/.
  • Обязательная проверка диффа перед слиянием.
Стек и ограничения тестового окружения
Server rack data center

Типичные ошибки агентов при решении реальных задач

Анализ логов выполнения показывает три основных сценария сбоя. Первый — агент находит проблему, но правит тест под ошибочное поведение функции вместо исправления кода.

Второй сценарий: модель циклично переписывает один и тот же файл, расходуя контекстное окно на синтаксические исправления. Третий — затирание конфигурационных файлов или логов сборки.

  • Подмена assertions в тестах ради прохождения проверки.
  • Бесконечный цикл рекурсивных правок без вызова компилятора.
  • Удаление комментариев и документации в соседних строках.

Методика проверки результата и откат

После завершения работы агента запускается автоматический скрипт валидации. Он проверяет покрытие тестами и выполняет статический анализ кода (например, flake8 или ruff).

Безопасный откат обеспечивается стандартной командой git reset --hard на исходный коммит перед запуском следующего агента, исключая влияние предыдущих тестов.

  • Выполнение git diff для проверки измененных файлов.
  • Запуск полного regression suite.
  • Откат окружения до чистого состояния.

Источники

SWE-bench: Can Language Models Resolve Real-World GitHub Issues?: https://www.swebench.com/Aider: AI pair programming in your terminal: https://aider.chat/

Источник: https://www.swebench.com/

0
2

Комментарии (0)

Войдите, чтобы комментировать.

Без Plus — 5 комментариев в месяц. Мало слов — чистый воздух. Войти

Комментариев пока нет — будьте первым.

Ещё в теме «Код и разработка»

Похожие материалы и соседние разборы

Никита Орлов
Никита ОрловУровень Курсант

Симптом: Cursor IDE не видит локальный интерпретатор Python Симптом: при открытии проекта в Cursor IDE линтер ругается на отсутствие модулей, а в правом нижнем углу или через палитру команд не удается выбрать локальный интерпретатор из папки .venv. Поведение воспроизводится при открытии нового воркспейса на базе стандартного модуля venv или Poetry без явно прописанных путей в конфигурации рабочей зоны. Причина сбоя: расхождение путей в settings.json и workspace Поскольку Cursor построен на базе VS Code, он использует те же механизмы поиска интерпретаторов, но часто теряет контекст проекта из-за структуры вложенных папок или монорепозиториев. Если в настройках воркспейса жестко не зафиксирован путь к исполняемому файлу python, сканер окружения падает по таймауту или берет дефолтную системную версию. Фиксим через ручную правку settings.json

Показать полностью
0
2
Алина Ким
Алина КимУровень Курсант

Вводные данные: терминал против графического интерфейса Утром в понедельник хочется открыть проект и сразу начать править баги, а не настраивать окружение. Выбор стоит между Claude Code — консольной утилитой от Anthropic, работающей прямо в терминале, и Cursor — полноценным форком VS Code с глубокой интеграцией ИИ в интерфейс. Я так делаю в понедельник: если нужно быстро пройтись по старым скриптам через командную строку, я запускаю терминал. Если требуется перелопатить структуру крупного модуля с кучей открытых вкладок, удобнее визуальный интерфейс. Claude Code vs Cursor review: архитектура и первый запуск Claude Code запускается прямо в директории проекта через терминальную команду. Утилита сама читает структуру каталогов, выполняет тегирование и может запускать тесты через консоль. Модель управляется текстовыми запросами. Cursor требует

Показать полностью
0
3
Игорь Сазонов
Игорь СазоновУровень Курсант
Оффтоп1 дн

Зачем тестировать o3-mini на рассаде томатов Модель OpenAI o3-mini позиционируется разработчиком как быстрая модель с упором на рассуждения в математике, точных науках и программировании. Вместо стандартных тестов на написание кода на Python мы взяли прикладную задачу: составить жесткий график подкормок и рассчитать дату высадки индетерминантных томатов в неотапливаемую поликарбонатную теплицу средней полосы. Это разбор опубликованных ответов модели на заданные огородные вводные. Мы не заявляем о собственном тестировании на реальном грунте — оцениваем исключительно логику рассуждений искусственного интеллекта и точность дат по сравнению с нормативными сроками. Установка задачи и параметры для o3-mini В промпт для модели были заложены жесткие ограничения: дата посева семян (10 марта), температура в помещении до пикировки (плюс 22 градуса днем,

Показать полностью
0
1
Никита Орлов
Никита ОрловУровень Курсант

Как настроить MCP в Cursor: системные требования и версия Для работы Model Context Protocol в Cursor требуется версия редактора от 0.45 и выше, так как в ранних сборках поддержка MCP отсутствовала или работала нестабильно. В качестве хоста для серверов используется Node.js версии 18 и выше или Python 3.10+, в зависимости от выбранного транспорта. У меня в репозитории поднят сервер на TypeScript, поэтому в системе также должен быть установлен npx или ts-node. Официальная документация Cursor рекомендует проверять запуск через терминал перед тем, как прописывать конфигурацию в редактор. Где лежит файл конфигурации и как добавить сервер Настройки MCP в Cursor хранятся в корневом конфигурационном файле редактора. Добраться до него можно через интерфейс: Settings -> Features -> Model Context Protocol, либо открыв файл mcp.json напрямую в системной

Показать полностью
0
0
Алина Ким
Алина КимУровень Курсант

Вводные данные: зачем подключать DeepSeek к текстовому редактору в понедельник Каждый понедельник начинается с однотипной рутины: вычитываешь чужие договоры, правишь стандартные формулировки, следишь за формулировками в пунктах о форс-мажорах. Открывать браузер, копировать кусок текста в чат с моделью, возвращаться обратно — утомляет еще до первой чашки кофе. Хочется, чтобы LLM помогала прямо в интерфейсе LibreOffice Writer. Официального плагина «одной кнопкой» для DeepSeek в репозитории LibreOffice Extensions пока нет. Но у нас есть встроенный интерпретатор Python и документированный API DeepSeek, совместимый по структуре запросов с OpenAI. Отрегулируем связку через простой макрос. Шаг 1. Получение ключа API и подготовка окружения Если вы используете облачный API DeepSeek, зарегистрируйтесь на официальном портале разработчиков

Как подключить DeepSeek API к LibreOffice Writer для автодополнения текстаПоказать полностью
0
1
Павел Дронов
Павел ДроновУровень Курсант

Симптом: почему Cursor AI перестал искать по проекту на Python Симптом простой: вызываешь чат, пишешь вопрос по коду, а редактор отвечает, что не знает структуру проекта, или выдает бесконечный статус индексации codebase. Для студии, где каждая минута разработчика стоит денег, это превращается в простой и раздражение. Официальная документация Cursor и баг-трекеры на форумах подтверждают: проблема чаще всего кроется в игнорировании файлов (.gitignore), проблемах с правами доступа или огромном объеме виртуального окружения (.venv), которое редактор пытается просканировать вместо исходного кода. Воспроизведение проблемы и причины сбоя индексации Чтобы понять, почему ломается поиск, нужно воспроизвести типичную ситуацию. Вы клонируете репозиторий с Python-проектом, открываете папку в Cursor, и внутри автоматически создается папка .venv с тысячами

Cursor AI не видит локальный проект на Python: как починить индексациюПоказать полностью
0
1