Небольшое, но достаточно интересное исследование от независимого соло-исследователя. Однажды один р

Небольшое, но достаточно интересное исследование от независимого соло-исследователя.

Однажды один разработчик столкнулся с тем, что его AI-агент для кодинга не сумел найти в коде структурную зависимость.

Изучив вопрос глубже, он понял, что инструменты, которые дают AI-Coding-инструменты, как правило, семантические. То есть если один класс зависит от другого, но на уровне названий они друг с другом не связаны, то AI-агент эту связь, скорее всего, пропустит.

Даже в том случае, если у вас весь код загружен в контекст модели, её внимание может проигнорировать нужный файл.

Разработчик решил дать AI-агенту инструмент для доступа к структуре кодовой базы.

Путь его был весьма лаконичен.

Взял стандартную библиотеку ast для python, прошёлся с её помощью по кодовой базе проекта, а потом на базе полученной информации создал Neo4j-граф с тремя типами связей:

1. IMPORTS – когда в одном файле импортируется другой.

2. INHERITS – для наследования классов.

3. INSTANTIATES – создание экземпляров классов.

Узлами при этом выступают файлы проекта. По каждому из которых, с помощью MCP-инструмента, AI-агент может получить структурный контекст.

Сравнивали эту структуру с базовым Claude Code, а также с Claude Code + BM25 tool.

Задачи для тестов были разбиты на три уровня:

1. G1 – семантические. Где было достаточно по названию найти модуль и выполнить задачу.

2. G2 – структурные. Где необходимо было осознать структуру, заложенную в коде.

3. G3 – задачи со скрытыми связями. Где на уровне семантики никак не удастся понять, что файл A каким-либо образом связан с файлом B.

Результаты исследования оказались весьма впечатляющими. Особенно на тех задачах, для которых создавался инструмент. То есть ситуации, когда надо структурно отобразить неявные связи в исходном коде.

Почему же нет роста успешности на менее сложных задачах?

Адопшн. Claude Code, на котором и проводили эксперимент, попросту игнорировал MCP tool в тех задачах, для которых, по его мнению, хватит классического BM25. То есть тест на задачах низкой и средней сложности, фактически, был саботирован со стороны AI-агента. («Зачем мне документация? Я и так во всём разберусь!»)

В общем, весьма занятное исследование. Можно разложить и попробовать развить в своём проекте. Благо, кодовая база по исследованию есть в открытом доступе, а её объём не превышает 1000 строк.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *