Лимиты Claude Code и других ИИ-инструментов для разработки улетают быстро — иногда после буквально пары правок. Причина часто не в сложности задачи, а в том, как агент собирает контекст: он судорожно читает файлы один за другим, затягивает в контекст лишнее и теряет нить изначального запроса.
Разработчик из сообщества ИИ Engineers Guild решил измерить это систематически. Он собрал бенчмарк на Python 3.13 и WSL2 Ubuntu, в роли агента использовал фреймворк Agno с моделью gpt-4.1-mini, зафиксировал температуру и промпты — и менял только один параметр: набор инструментов навигации по коду. Исходники опубликованы в репозитории letya999/tools-token-economy.
| Конфигурация | Категория | Ключевые инструменты |
|---|---|---|
| 07_grep | Grep-семейство | POSIX grep |
| 08_git_grep | Grep-семейство | Поиск по индексу git |
| 09_rg | Grep-семейство | ripgrep |
| 10_ugrep | Grep-семейство | ugrep (нечёткий поиск) |
| 11_ast_grep | Grep-семейство | Поиск по синтаксическому дереву |
| 05_read_only | Чтение контекста | Glob-паттерны + чтение файлов |
| 06_read_all | Чтение контекста | Все файлы проекта с самого старта |
| 16_serena_only | Семантическая навигация | MCP-сервер Serena (символьный граф) |
| 17_semble_only | Семантическая навигация | Локальные векторные эмбеддинги Semble |
| 20_serena_semble | Семантическая навигация | Граф Serena + векторы Semble |
| 12_tree_sitter | Структурный поиск | AST через Tree-sitter |
| 13_lsp | Структурный поиск | Список символов по LSP |
| 01_cursor_like | Интегрированные архетипы | repo_map + RAG |
| 02_claude_code_like | Интегрированные архетипы | glob + ripgrep + чтение файлов |
| 03_gemini_like | Интегрированные архетипы | read_all + repo_map + rg |
| 18_rg_repo_map | Интегрированные архетипы | ripgrep + карта репозитория |
| 21_bash_only | Минимализм | Голый терминал |
Всего получилось 21 конфигурация, разбитых на шесть категорий. Первая — классические grep-инструменты: POSIX grep, git grep, ripgrep, ugrep и ast_grep (поиск по синтаксическому дереву). Вторая — стратегии чтения: только glob-паттерны или принудительная загрузка всех файлов проекта с самого старта. Третья — семантическая навигация: MCP-сервер Serena, строящий символьный граф вызовов, и Semble с локальными векторными эмбеддингами. Четвёртая — структурный поиск через Tree-sitter и LSP. Пятая — интегрированные архетипы, имитирующие подходы Cursor, Claude Code и Gemini. Шестая — голый bash без каких-либо специализированных инструментов.
В качестве метрики эффективности использован SPT (Success Per Token) — число успешных решений на тысячу потраченных токенов.
Для оценки результатов автор ввёл метрику SPT (Success Per Token) — количество успешных решений на тысячу потраченных токенов. Это важнее, чем просто процент правильных ответов: агент может решить задачу, но потратить на это в десять раз больше токенов, чем конкурент. Дополнительно считался Waste% — доля прочитанных, но так и не использованных токенов.
Задачи взяты из реальной кодовой базы. Средняя — исправить регистрозависимость Bearer-токена в middleware: найти одну функцию, поправить одну строку. Сложная — реализовать фичу aging_stale в пайплайне Polars: прокинуть новое поле, обновить логику в трёх файлах, дописать тесты. На средней задаче прогнали 20 конфигураций, 14 справились — pass rate 70%.
Оценку качества вёл LLM-судья (gpt-4.1-mini) по семи критериям: task_solved, correctness, tool_correctness, context_quality, minimality, pattern_adherence, tool_sequence. Итоговый Eval Score считается не как линейное среднее, а как геометрический показатель: если агент ломает бизнес-логику и получает ноль за correctness, весь скор обнуляется — даже при идеальной лаконичности кода. Для борьбы с галлюцинациями судьи на больших контекстах применены фильтр Неймана (отсекает статистические выбросы в оценках) и поправка Демискар — нелинейный штраф за избыточное чтение файлов.
Главный сюрприз бенчмарка: на средней задаче классические grep-инструменты показали результат не хуже, а местами лучше семантических решений. Избыток инструментов навигации вредит агенту так же, как их недостаток — модель начинает бесконечно переключаться между стратегиями поиска вместо того, чтобы решать задачу. Автор назвал это эффектом context explosion.
На сложной задаче картина меняется: гибрид символьного графа Serena и векторного поиска Semble (конфигурация 20_serena_semble) выделен как лучший результат. Символьный граф позволяет агенту сразу понять, кто кого вызывает и где лежат нужные типы, — без слепого перебора файлов. Векторный поиск добавляет семантическую близость там, где точное имя символа неизвестно. Вместе они дают агенту достаточно навигационного контекста без лишнего шума.
Полные данные по всем 21 конфигурации, включая графики Eval Score и статусы прогонов, опубликованы в репозитории. Бенчмарк продолжается: средняя задача дала 70% pass rate, результаты по сложной задаче автор обещает разобрать отдельно.
