Введение: Claude Code жжёт ваши токены — и вы, скорее всего, об этом не знаете

Представьте: вы просите Claude Code «найти логику авторизации» в своём проекте. Агент запускает grep, получает сорок файлов, содержащих слово «auth», и начинает читать их все — один за другим. Каждый прочитанный файл полностью попадает в контекст и тарифицируется.

Это не баг — именно так Claude Code устроен: когда он ищет по grep, то читает целые файлы, затем запускает субагенты, и вы платите за каждый токен кода, даже если тот не имеет отношения к задаче.

Проблема кроется в фундаментальных ограничениях grep: он сопоставляет строки, а не намерения, поведение или паттерны реализации. Совпадения на уровне строк автоматически не включают окружающий класс, зависимости, тесты или граф вызовов.

Именно эту проблему и решает Semble — open-source MCP-сервер от команды MinishLab, который вышел буквально на днях и мгновенно собрал внимание сообщества разработчиков.


Что такое Semble и в чём суть идеи

Semble — это библиотека поиска по коду, созданная специально для агентов. Она возвращает именно те фрагменты кода, которые нужны агенту, используя на ~98% меньше токенов, чем grep+read, и сокращая задержку на каждом шаге.

Никакой начальной настройки: сервер работает на CPU без API-ключей, GPU или внешних сервисов. Semble работает как MCP-сервер — готовый инструмент для Claude Code, Cursor, Codex, OpenCode и любого агента, поддерживающего MCP.

ℹ Что такое MCP?
MCP (Model Context Protocol) работает как стандарт USB для LLM — позволяет внешним инструментам подключаться бесшовно. Это открытый протокол от Anthropic, благодаря которому любой инструмент превращается в расширение для AI-агента.

Ключевые характеристики в цифрах

Индексирование и поиск по всей кодовой базе от начала до конца занимает менее секунды — примерно в 200 раз быстрее индексирования, чем у специализированного code-трансформера, и в ~10 раз быстрее при запросах, при этом достигая 99% его качества поиска.

Semble использует на 98% меньше токенов в среднем и достигает 94% recall при бюджете всего 2k токенов, тогда как grep+read требует полного контекстного окна в 100k токенов для достижения лишь 85% recall.

Метрикаgrep + readSemble
Токены на запрос~100 000~2 000
Recall@10~85%~94%
Скорость индексирования< 1 секунды
Требуется GPUнетнет
Требуются API-ключинетнет
Работает локальнодада

Как Semble работает внутри: архитектура гибридного поиска

Semble — это не просто «grep с эмбеддингами». Под капотом — продуманный стек из нескольких взаимодополняющих компонентов.


graph TD
    A[Исходный код проекта] --> B[Разбивка на чанки - Chonkie]
    B --> C[Семантические эмбеддинги - Model2Vec potion-code-16M]
    B --> D[Лексический индекс - BM25]
    C --> E[Reciprocal Rank Fusion - RRF]
    D --> E
    E --> F[Code-aware ранжирование]
    F --> G[Топ-K релевантных фрагментов]
    G --> H[Claude Code / Cursor / Codex]

Шаг 1: Разбивка кода на чанки

Semble разбивает каждый файл на code-aware фрагменты с помощью Chonkie, затем оценивает каждый запрос по чанкам с помощью двух дополняющих друг друга ретриверов: статических эмбеддингов Model2Vec с использованием специализированной для кода модели potion-code-16M для семантического сходства и BM25 для лексических совпадений по идентификаторам и именам API.

Шаг 2: Статические эмбеддинги Model2Vec

Модель Model2Vec — это «секретное оружие» Semble. Model2Vec — это техника превращения любого sentence transformer в очень маленькую статическую модель, уменьшающую размер модели до 50 раз и ускоряющая модели до 500 раз при незначительном падении качества.

Поскольку модель эмбеддингов является статической и не требует прямого прохода через трансформер во время запроса, всё это работает за миллисекунды на CPU.

Шаг 3: Слияние через RRF и code-aware ранжирование

Semble разбивает файлы на code-aware чанки с помощью Chonkie, затем оценивает каждый запрос с помощью двух ретриверов: статических эмбеддингов Model2Vec для семантического сходства и BM25 для лексических совпадений. Два списка результатов объединяются с помощью Reciprocal Rank Fusion (RRF).

После слияния происходит дополнительное интеллектуальное ранжирование:

  • Адаптивные веса: symbol-подобные запросы (Foo::bar, _private, getUserById) получают больший лексический вес, а запросы на естественном языке остаются сбалансированными.
  • Definition boosts: чанк, который определяет искомый символ (класс, def, func и т.д.), ранжируется выше, чем чанки, которые лишь на него ссылаются.
  • Identifier stems: токены запроса стемятся и сопоставляются со стемами идентификаторов в чанке — это даёт дополнительный вес релевантным фрагментам.

«Semble достигает 99% производительности 137M-параметрового CodeRankEmbed Hybrid, индексируя в 218 раз быстрее и отвечая на запросы в 11 раз быстрее.»


Установка и настройка: 5 минут до первого запроса

Установка через pip или uv

pip install semble
# или
uv add semble

Использование как CLI

# Поиск по локальному репозиторию
semble search "authentication flow" ./my-project

# Поиск символа или идентификатора
semble search "save_pretrained" ./my-project

# Поиск по удалённому репозиторию (клонируется автоматически)
semble search "save model to disk" https://github.com/MinishLab/model2vec

# Найти похожий код по известной локации
semble find-related src/auth.py 42 ./my-project

Используйте semble search для поиска кода по описанию того, что он делает, или по имени символа/идентификатора — вместо grep. Используйте semble find-related, чтобы найти код, похожий на известную локацию.

Настройка как MCP-сервер для Claude Code

{
  "mcpServers": {
    "semble": {
      "command": "uvx",
      "args": ["--from", "semble[mcp]", "semble", "mcp"]
    }
  }
}

Запустите Semble как MCP-сервер — и любой агент (Claude Code, Cursor, Codex, OpenCode и т.д.) получит мгновенный доступ к любому репозиторию, который будет клонирован и проиндексирован по требованию.

💡 Рекомендуемый рабочий процесс

Рекомендуемый рабочий процесс:

  1. Начните с semble search, чтобы найти релевантные чанки.
  2. Просматривайте полные файлы только тогда, когда возвращённого чанка недостаточно для контекста.
  3. Опционально используйте semble find-related с file_path и line из перспективного результата, чтобы обнаружить связанные реализации.

Использование как Python-библиотека

from semble import SembleIndex

# Индексируем локальный проект
index = SembleIndex.from_path("./my-project")

# Индексируем удалённый git-репозиторий
index = SembleIndex.from_git("https://github.com/MinishLab/model2vec")

# Поиск по запросу на естественном языке или коду
results = index.search("save model to disk", top_k=3)

# Находим похожий код
related = index.find_related(results[0], top_k=3)

# Каждый результат содержит метаданные чанка
print(results[0].chunk.file_path)    # "model2vec/model.py"
print(results[0].chunk.start_line)   # 127
print(results[0].chunk.content)      # "def save_pretrained(self, path: ..."

Контекст: почему проблема с токенами острее, чем кажется

Многие разработчики не задумываются о расходе токенов, пока не получают неожиданный счёт. Давайте разберём механику.

Каждый раз, когда Claude Code что-то ищет, он по умолчанию использует grep. Это сопоставление ключевых слов, а не намерений. Поищите слово «parse» — и получите каждый парсер конфигов, URL, всё что связано с parse и parsing. Claude затем читает (и тарифицирует) все эти файлы.

Традиционный grep возвращает десятки или сотни результатов, каждый из которых Claude должен прочитать и оценить. Это создаёт каскадный эффект, при котором один поисковый запрос может породить несколько субагентов, каждый со своим контекстным окном и расходами на кэш.

По данным одного из анализов, типичная конфигурация с четырьмя MCP-серверами в Claude Code добавляет около 7 000 токенов накладных расходов на каждое сообщение, а более тяжёлые конфигурации пересекают отметку в 50 000 токенов ещё до того, как набран хоть один промпт.

⚠ Реальная цена неэффективного поиска
Каждый раз, когда Claude Code читает нерелевантный файл через grep, вы платите за это токены. В проекте с тысячами файлов один неточный поисковый запрос может стоить десятков тысяч токенов. Semble решает именно эту проблему — возвращая только нужные фрагменты.

Semble vs. конкуренты: сравнение решений

Semble — не единственный инструмент в этой нише. Вот как он соотносится с альтернативами:

ИнструментЭкономия токеновЛокальный запускGPU/APIЯзыкСкорость индекса
Semble~98%Не нуженPython< 1 сек
CocoIndex Code~70%ОпциональноPython/TSБыстро
GrepAI~27–97%Ollama (локально)Средне
Claude Context~40%OpenAI + MilvusTypeScriptМедленно
codebase-memory-mcp~99%Не нуженGoМс

Агенты получают только те несколько чанков, которые имеют значение — а не целые файлы. Это экономит ~70% токенов и ускоряет каждый шаг — в случае CocoIndex Code. Semble же идёт дальше, достигая 98% экономии.

Контролируемая оценка Claude Context демонстрирует ~40% снижение потребления токенов при эквивалентном качестве поиска. Это транслируется в существенную экономию затрат и времени в продакшн-окружениях.

Главное преимущество Semble над Claude Context: полная локальность. Всё работает на CPU без API-ключей, GPU или внешних сервисов. Claude Context, напротив, требует и OpenAI API для эмбеддингов, и Milvus/Zilliz Cloud для векторной базы данных.

📝 Когда использовать grep вместо Semble
Используйте grep, когда вам нужны исчерпывающие буквальные совпадения или быстрое подтверждение точной строки. Semble оптимален для семантического поиска — «найди логику обработки платежей», «где реализован паттерн Singleton».

Бенчмарки: реальные цифры качества

Команда MinishLab проводила бенчмарки качества и скорости по всем методам на ~1250 запросах по 63 репозиториям на 19 языках программирования. По оси X — общая задержка (индекс + первый запрос); по оси Y — NDCG@10.

Semble достигает 99% производительности 137M-параметрового CodeRankEmbed Hybrid, индексируя в 218 раз быстрее и отвечая на запросы в 11 раз быстрее.

Fast: индексирует репозиторий за ~250 мс и отвечает на запросы за ~1.5 мс — всё на CPU.

Accurate: NDCG@10 = 0.854 на бенчмарках — на уровне специализированных трансформеров для кода, но при минимальном размере и стоимости.

Для сравнения масштаба: пять структурных запросов потребляют ~3 400 токенов через codebase-memory-mcp против ~412 000 токенов при file-by-file grep-исследовании — снижение на 99,2%.


Заключение: новый стандарт для агентного поиска кода

Semble — это убедительный ответ на реальную боль каждого, кто регулярно использует Claude Code для работы с нетривиальными кодовыми базами. Команда MinishLab нашла элегантное решение: вместо тяжёлых трансформеров — статические эмбеддинги Model2Vec, вместо внешних сервисов — всё локально на CPU, вместо файлов целиком — только релевантные чанки.

Ключевые выводы:

  • 98% экономии токенов — это не маркетинг, а измеримый результат на реальных бенчмарках
  • Нулевая инфраструктура: установка одной командой, работа на CPU без GPU и API-ключей
  • Скорость: индекс за 250 мс, запросы за 1.5 мс
  • Точность: 94% recall при бюджете 2k токенов vs 85% у grep при бюджете 100k
  • Совместимость: работает с Claude Code, Cursor, Codex, OpenCode и любым MCP-клиентом

Если вы платите за Claude Code API или регулярно упираетесь в лимиты контекстного окна — Semble стоит попробовать уже сегодня. Это редкий случай, когда инструмент одновременно быстрее, дешевле и точнее того, что используется по умолчанию.

# Установка — одна команда
pip install semble

# Первый поиск
semble search "authentication logic" ./your-project