Как перестать сжигать тысячи долларов на токены при работе AI-агентов с кодом

27 июл 2026
2,715
368
21
1 неделя

Знакомая картина: просишь Claude Code или Cursor поправить одну функцию на двадцать строк в legacy-модуле. Агент открывает файл на тысячу строк, читает кучу импортов, заглядывает в соседние файлы и моментально сжигает половину контекстного окна. Мы платим провайдерам нейросетей не за генерацию умных решений, а за бесконечная пролистывание исходников.

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

В чем суть проекта

jCodeMunch MCP — это сервер протокола MCP (Model Context Protocol), который индексирует кодовую базу с помощью библиотеки tree-sitter. Вместо того чтобы скармливать AI-агенту файлы целиком, инструмент разбирает AST-дерево и выделяет конкретные символы: функции, классы, методы, константы и интерфейсы.

Когда агенту требуется узнать реализацию метода, jCodeMunch возвращает ему 30 строк конкретной функции с байтовыми смещениями, а не весь исходник на 800 строк. По замерам автора на популярных репозиториях вроде FastAPI, Express и Gin, такой подход снижает расходование токенов на чтение кода на 95–99%.

Инструмент работает с Claude Code, Cursor, Windsurf, VS Code, Codex CLI, Continue и любыми другими клиентами, поддерживающими MCP.

Реклама

Главные возможности jCodeMunch

Точечный поиск по AST вместо брутфорса

Обычный AI-ассистент ищет код через grep или запрашивает файлы поштучно. jCodeMunch индексирует проект один раз и строит карту символов. Агент может искать по точному совпадению имени, нечеткому поиску или гибридному алгоритму (BM25 в связке с PageRank).

Сбор контекста в один вызов

Вместо длинной цепочки запросов вида «найти файл -> прочитать -> узнать импорты -> прочитать импорты» в jCodeMunch есть инструмент assemble_task_context. Вы передаете задачу на естественном языке, а сервер автоматически определяется с интентом (отладка, рефакторинг, аудит), вытаскивает ключевые символы и формирует сжатый контекстный бандл строго под заданный лимит токенов.

Вопросы, на которые grep не ответит

Статический поиск не понимает связей между компонентами. jCodeMunch умеет строить граф вызовов и отвечать на узкоспециализированные инженерные вопросы:

  • find_importers: показывает, какие файлы зависят от выбранного модуля.
  • get_blast_radius: оценивает зону поражения и риски при изменении конкретной функции.
  • find_dead_code: находит неиспользуемые символы и «висячие» файлы, не связанные с точками входа.
  • get_symbol_importance: ранжирует компоненты проекта по архитектурной значимости с помощью алгоритма PageRank.
  • get_untested_symbols: ищет функции, которые не затрагиваются имеющимися тестами.

Компактный формат передачи MUNCH

Обычный JSON излишне балаболист и жрет контекст сам по себе. Поверх выборки кода jCodeMunch умеет применять собственное сжатие MUNCH. Повторяющиеся пути интернируются, а списки упаковываются в компактные CSV-строки с сохранением типов. Это даёт еще порядка 40–50% экономии объема передаваемых данных.

Что под капотом

Проект написан на Python и запускается полностью локально. По умолчанию все индексы складываются в директорию ~/.code-index/. Для парсинга более 70 языков программирования используются биндинги tree-sitter.

Сборка контекста опирается на полнотекстовый поиск BM25 и анализ графа импортов с расчетом PageRank. Если вам нужен полноценный семантический поиск по смыслу, можно установить опциональный пакет [local-embed]. Он один раз скачает локальную ONNX-модель all-MiniLM-L6-v2 весом около 23 МБ. После этого векторизация работает без обращения к сторонним API и без утечки кода в сеть.

Как попробовать в деле

Самый быстрый способ развернуть сервер — использовать pip или uvx:

pip install jcodemunch-mcp
jcodemunch-mcp init

Утилита init сама найдет установленные на компьютере MCP-клиенты (Claude Code, Cursor, Windsurf, VS Code), пропишет конфигурацию и предложит добавить инструкцию в CLAUDE.md или системные промпты агента, чтобы модель начала использовать символьный поиск вместо привычного пролистывания файлов.

Пример ручного подключения к Claude Code через CLI:

claude mcp add -s user jcodemunch uvx jcodemunch-mcp

Если вы хотите отслеживать затраты, встроенный инструмент get_session_stats покажет статистику вызова инструментов, реальную экономию токенов за сессию и точность попадания запросов.

Кому это реально нужно

Инструмент вряд ли изменит жизнь, если вы пишете небольшие скрипты или пет-проекты на пару файлов. Но при работе с крупными монорепозиториями на TypeScript, Python, Go или Java jCodeMunch дает ощутимый эффект.

Агент перестает буксовать на пролистывании тысяч строк бойлерплейта, ответа от модели приходят быстрее, а чеки за использование API нейросетей заметно уменьшаются. Лицензия для личного использования полностью бесплатная, так что протестировать подход на своей кодовой базе можно без лишних затрат.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.