Как срезать расходы на AI-кодинг: сервер jcodemunch-mcp экономит до 95% токенов при анализе кода
Я — Denis Shokhirev, Enterprise AI architect из Эрлангена. В DennisCraft AI Studio я строю продакшн AI для B2B-клиентов DACH на стеке Claude, Supabase, n8n, Doppler и self-hosted Postgres. На прошлой неделе заказчик попросил: «Сделай аудит 60k строк Python, но не разорись на токенах». Традиционные подходы с LLM — это прямой путь к бюджету в минус. Зачем вообще нужен аудит кода через LLM? В продакшн-проектах LLM уже используют не только для генерации, но и для анализа кода: поиск багов, уязвим
Я — Denis Shokhirev, Enterprise AI architect из Эрлангена. В DennisCraft AI Studio я строю продакшн AI для B2B-клиентов DACH на стеке Claude, Supabase, n8n, Doppler и self-hosted Postgres. На прошлой неделе заказчик попросил: «Сделай аудит 60k строк Python, но не разорись на токенах». Традиционные подходы с LLM — это прямой путь к бюджету в минус.
Зачем вообще нужен аудит кода через LLM?
В продакшн-проектах LLM уже используют не только для генерации, но и для анализа кода: поиск багов, уязвимостей, миграций. Например, Claude Code и GPT-4 обеспечивают неплохую точность в обнаружении паттернов CWE-79 или ошибок авторизации. Но цена — $20–$40 за миллион токенов (Anthropic API, июнь 2024). Один средний репозиторий может легко «съесть» пару миллионов токенов только на простом анализе.
Где теряются деньги
Многие команды гонят через LLM весь код целиком, надеясь на магию. На деле 80% токенов уходит на boilerplate, тесты, устаревшие модули. Задача — сократить «шум» до минимума, сохранив при этом качество анализа.
Что такое jcodemunch-mcp и почему это работает
jcodemunch-mcp — это маленький сервер, который я использую для «разжевывания» больших репозиториев перед передачей в LLM. Его задача — автоматически выделять только релевантные блоки кода, удалять повторения, генерировать краткое дерево зависимостей и превращать код в компактные chunks для целевого промпта.
Архитектура и стек
- Ядро: Python 3.11, FastAPI
- Парсинг кода: tree-sitter, ast
- Семантический фильтр: semgrep, bandit, gitleaks
- Интеграция: n8n, Supabase, Claude Code через Anthropic SDK
Здесь нет никакой магии: это слой pre-processing, который готовит код как данные, а не как текст.
Сравнение: сколько реально экономится
| Метод | Средний размер входа (токены) | Стоимость на 60k строк | Время препроцессинга | Качество аудита |
|---|---|---|---|---|
| Грубый анализ всего репо | 2 400 000 | $48–$96 | 5 мин | Много ложных срабатываний |
| Ручная разбивка + фильтрация | 400 000 | $8–$16 | 2 часа | Лучше, но человеческий фактор |
| jcodemunch-mcp препроцессинг | 90 000 | $1.80–$3.60 | 12 мин | Точное покрытие релевантных зон |
Реальная экономия — 95%+ токенов. При этом улучшается качество: в LLM попадает только то, что реально нужно для анализа.
Как работает пайплайн на практике
Запуск препроцессинга
from fastapi import FastAPI, UploadFile
import subprocess
app = FastAPI()
@app.post("/analyze/")
async def analyze_repo(file: UploadFile):
repo_path = "/tmp/repo"
with open(repo_path + ".zip", "wb") as f:
f.write(await file.read())
subprocess.run(["unzip", repo_path + ".zip", "-d", repo_path])
# Запуск jcodemunch-mcp препроцессинга
subprocess.run(["python3", "jcodemunch_mcp.py", repo_path])
# ...дальше интеграция с n8n и Claude
return {"status": "ok"}
Фильтрация и компактинг
import semgrep
def filter_code(repo_path):
findings = semgrep.run("--config", "p/ci", repo_path)
relevant_files = [f for f in findings if "security" in f["check_id"]]
return relevant_files
Результат — json с минимальным набором chunks по зонам риска, который дальше отправляется в LLM через n8n workflow.
Проблемы и подводные камни
Ложноположительные фильтры
Если semgrep или bandit неправильно настроены, часть критичного кода может быть пропущена. Здесь важно не полагаться на дефолтные правила, а собирать свою кастомную конфигурацию под проект.
Токенизация и разбивка функций
Claude и GPT-4 плохо работают с обрывками методов — chunking нужно делать аккуратно, по границам функций/классов. Tree-sitter помогает, но требует пост-обработки.
Интеграция с пайплайнами CI/CD
Встраивать jcodemunch-mcp лучше всего через n8n как отдельный step до отправки в LLM. Это снижает нагрузку и исключает лишние запросы.
FAQ
Можно ли использовать только open-source инструменты?
Да, связка tree-sitter + semgrep + FastAPI полностью открыта. Для интеграции с Claude или GPT-4 потребуется ключ от соответствующего API.
Что делать, если проект на нескольких языках?
jcodemunch-mcp поддерживает мульти-языковые репозитории, если настроить парсеры для нужных языков.
Какой объем кода оптимален для одного промпта?
Оптимально — 400–1200 строк на chunk, чтобы не выйти за лимиты LLM и сохранить контекст.
Можно ли запускать препроцессинг локально?
Да, сервер разворачивается в Docker-контейнере, можно запускать на любой машине с Python 3.11.
Стоит ли полностью доверять LLM аудиту?
Нет, LLM — это не панацея. Я всегда комбинирую их вывод с ручной проверкой и статическим анализом (semgrep, bandit).
На каком этапе у вас чаще всего «течет» бюджет при аудите через LLM — на препроцессинге, chunking или самом анализе? Я реально хочу услышать опыт из поля. Я делаю бесплатный 30-минутный аудит пайплайна для команд, которые строят AI в регламентированных рынках DACH. Пишите в LinkedIn или в @ger_dennis_ai.
Turn your process into an AI system
Fixed price. Production quality. DACH B2B focus.