Мы дали одной модели, DeepSeek V4.1 Flash, одни и те же 40 вопросов по двум настоящим репозиториям и меняли только агента вокруг неё. Harness CodeAlive набрал на 40% больше, чем OpenCode, а на большом репозитории потратил в 3,6 раза меньше токенов.
Если подключить к OpenCode инструменты CodeAlive по MCP, оценка вырастает до 50,3, а расход токенов на большом репозитории падает на 30%. Остальной выигрыш даёт сам harness.
Что сравнивали
В июле мы показали, что небольшой Qwen внутри harness CodeAlive обходит Sonnet. В этот раз модель не менялась.
Вопросы взяты из RepoContextBench v2: 20 по Microsoft Agent Framework (около 513 тыс. строк) и 20 по Sapling (около 1,5 млн строк). LLM-судья сверяет каждый ответ с эталонными утверждениями из кода и ставит оценку от 0 до 100. Во всех конфигурациях модель работала с reasoning effort max.
Агентов было три:
- OpenCode, универсальный open-source агент для кода, со встроенным поиском и чтением файлов по локальному checkout.
- Тот же OpenCode, к которому по MCP подключены инструменты CodeAlive, а в
AGENTS.mdнаписано ими пользоваться. - Harness CodeAlive: наш исследовательский агент, сделанный под ответы на вопросы о коде. Инструменты те же, но вызываются напрямую.
Результаты
Разрыв в оценке 24,7 пункта на Agent Framework и 12,8 на Sapling. На Sapling harness к тому же проделал гораздо меньше работы:
OpenCode тратил шаги на grep и чтение файлов целиком, и каждый шаг заново отправлял модели всю растущую историю. Агент CodeAlive находил нужные символы через индекс и читал только их. С MCP OpenCode расходовал на 30% меньше токенов, чем без него, но работал медленнее: свой цикл он сохранил и добавил к нему вызовы CodeAlive.
Почему одних инструментов мало
Через MCP OpenCode активно пользовался инструментами CodeAlive: только на Agent Framework это 186 вызовов grep, 112 чтений и 74 семантических поиска. Оценка выросла на 3,7 пункта. Harness с теми же инструментами прибавил 18,7.
Разница в том, как агент работает с инструментами:
- начинает с семантического поиска, а не с обхода директорий;
- читает по символам:
fetch_artifactsвозвращает нужную функцию вместе с вызывающими и вызываемыми, а не файл на 2 000 строк; - в конце каждого результата инструмента есть подсказка следующего шага, особенно полезная небольшим моделям;
- одинаковые повторные вызовы ловятся раньше, чем съедят бюджет шагов;
- исследование агент завершает явно, когда доказательств достаточно.
OpenCode рассчитан на то, чтобы в одном цикле править код, запускать команды и читать файлы. Наш harness делает одну работу: находит нужный код и отвечает по нему.
Экономия зависит от размера репозитория
На Agent Framework выигрыш был только в качестве, по токенам его не было. Harness потратил 398 тыс. токенов на задачу против 180 тыс. у OpenCode и 50 секунд против 42. Оба агента обращались к модели примерно по семь раз за задачу, но у нашего больше стартовый промпт и объёмнее ответы инструментов: целые символы с вызывающими, а не список совпавших строк. На короткой задаче эта постоянная часть перевешивает. Зато за неё мы получили 24,7 пункта.
На Sapling OpenCode понадобилось гораздо больше шагов, его история росла с каждым прочитанным файлом, и баланс перевернулся. Экономия растёт с размером кодовой базы непропорционально: она появляется, когда репозиторий достаточно велик, чтобы универсальный агент начал в нём блуждать.
Ограничения
Это внутренние диагностические прогоны, по одному на конфигурацию, а не запись в опубликованном лидерборде. Повтор одного и того же прогона сдвигал оценку примерно на ±2 пункта, намного меньше разрывов выше, а расход токенов — примерно на 14%. Оценивает LLM-судья Muse Spark 1.3 с reasoning effort medium, два голоса на задачу, по фиксированной рубрике.
Токены — это вход и выход по данным провайдера, включая кешированный вход. Обе конфигурации OpenCode обращались к модели через один шлюз, а harness CodeAlive через другой, поэтому доля кешированного входа сравнима лишь примерно. Стоимость построения индекса CodeAlive не учтена: она платится один раз на репозиторий.
Если вы уже работаете с агентом для кода, быстрее всего дать ему контекст репозитория через CodeAlive MCP. Но основной прирост в наших прогонах дала передача самого исследования отдельному агенту. Что добавляет граф вызовов, мы разобрали в статье GraphRAG по коду, а насколько точен сам граф — в статье CodeAlive и открытые индексаторы графа кода.