Ты когда-нибудь пытался объяснить grep, что тебе нужна "функция, которая парсит конфиг"?
Я — да. И каждый раз получал в ответ 200 строк из vendor.js, логгирование на уровне DEBUG и три версии функции parse_config, которая, спойлер, вообще не про конфиги. Потом пришли AI-агенты. Мы радостно скормили им код через контекст — они сожрали тысячи токенов, потупили и ответили: "Извините, не могу найти ничего похожего". Знакомо?
В этой точке обычно вспоминают CodeGraph — он строит граф зависимостей, но не понимает смысла. Есть SocratiCode — он семантический, но требует целый MCP-сервер с Qdrant. А что если я скажу, что появился третий путь? Две команды в терминале — и ты получаешь семантический поиск по коду без всякого MCP и внешних сервисов.
cocoindex-code — CLI-инструмент, который индексирует код локально через эмбеддинги CodeBERT и даёт семантический поиск из командной строки. Никаких баз данных поднимать не надо, всё в SQLite + векторном индексе внутри домашней папки.
Как это работает на самом деле (спойлер: не магия)
В отличие от CodeGraph, который полагается на tree-sitter и строит точный граф символов, cocoindex код не разбирает — он его понимает. Инструмент разбивает файлы на перекрывающиеся чанки, прогоняет их через локальную модель эмбеддингов (по умолчанию bge-m3 или можно подключить свой сервер), сохраняет векторы в SQLite с расширением sqlite-vec. Поиск — обычный косинус по индексу.
bge-m3 весит ~2 ГБ. Если жалко места — можно указать --model text-embedding-ada-002 и гонять через OpenAI API. Но тогда прощай офлайн.Установка: даже ребёнок справится (и AGI тоже)
Всё, что нужно сделать — это:
pip install cocoindex-code
cocoindex init --path /path/to/your/projectПервая команда ставит пакет и все зависимости. Вторая — индексирует весь проект (рекурсивно, игнорируя .gitignore). По умолчанию она использует CPU-версию sentence-transformers, но если есть CUDA — достаточно поставить pip install torch --index-url https://download.pytorch.org/whl/cu118 до вызова cocoindex init.
Индексация проекта на 10 000 файлов занимает около 40 секунд на нормальном ноутбуке. Потом можно искать:
cocoindex search "функция, которая отправляет email"Результат — топ-5 чанков с указанием файла, строки и релевантностью. Выглядит как grep -rn, но только с мозгами.
Сравнение с CodeGraph и SocratiCode: без прикрас
Зачем вообще два других инструмента, если есть такой простой? Давайте разбираться на реальных сценариях.
| Сценарий | cocoindex-code | CodeGraph | SocratiCode |
|---|---|---|---|
“Где определена функция validate_user?” | + (найдёт, если есть в чанке) | +++ (точное совпадение через AST) | + (возможно, с шумом) |
| “Покажи код, который отвечает за парольную политику” | +++ (семантика) | - (нет понимания) | +++ (семантика) |
“Кто вызывает send_email()?” | - (нет графа вызовов) | +++ (граф зависимостей) | - (нет графа) |
| Объём устанавливаемого | ~200 МБ + модель ~2 ГБ | ~50 МБ | ~300 МБ + Qdrant отдельно |
| Время настройки для нового проекта | 1 минута | 2 минуты (npm install + index) | 15 минут (развернуть Qdrant, настроить MCP) |
| Интеграция с Claude Code / AI-агентами | Через pipe или скрипт | MCP-сервер (готовый) | MCP-сервер (готовый) |
Видите дыры? cocoindex-code отлично подходит для нечётких запросов, но пасует перед точными вопросами про зависимости. Поэтому я использую их в связке: сначала быстро шарю через cocoindex, чтобы понять, где копать, а затем уточняю через CodeGraph — как в нашем обзоре CodeGraphContext.
Живой пример: Claude Code и cocoindex-code в тандеме
Допустим, вы работаете с Claude Code. Агент может сам читать файлы, но на каждый запрос он тратит кучу токенов, если не знает, куда смотреть. Сценарий: починить баг, когда пользователь не может сбросить пароль.
Вместо того чтобы грузить Claude всеми файлами проекта, вы делаете:
cocoindex search "сброс пароля reset password forgot flow" --limit 3Получаете три файла: controllers/reset_password.py, views/auth/forgot.html, services/email.py. Открываете их и кидаете в Claude Code контекстом. Он сразу видит цепочку: контроллер -> шаблон -> отправка письма. Токены сэкономлены, баг найден за пять минут.
Без семантического поиска вы бы либо ломились через grep по слову "password" (100500 вхождений), либо отдавали на откуп агенту всю директорию — он бы долго и дорого перебирал.
Как НЕ надо делать (и почему это больно)
Многие пытаются запустить cocoindex index на всей домашней директории. Не делайте так. Инструмент не умеет игнорировать системные библиотеки, если они не в .gitignore. В итоге вы получите:
cocoindex init --path ~/
# ... ждём 10 минут
# ... OutOfMemoryError: vector index too largeЛучше индексировать только конкретный проект. Или используйте --ignore node_modules,venv,__pycache__.
Ещё один грабль: по умолчанию cocoindex не обновляет индекс автоматически. Если вы изменили код — нужно перезапустить cocoindex init. Автор проекта обещает вотчинг в релизе 0.3 (на момент статьи — 0.2.4), но пока приходится следить за этим самим.
А что с SocratiCode: они конкуренты или друзья?
В нашей статье про SocratiCode мы хвалили его за мощный MCP-сервер, который режет код на AST-чанки и векторизует. Но у него есть минус: сложность настройки. Нужен Docker с Qdrant, файлы конфигурации, прокидывание MCP в Claude Desktop. cocoindex-code решает задачу проще — радикально проще. Но за эту простоту вы платите отсутствием интеграции с MCP (хотя можно сделать обёртку), и отсутствием графа (как в CodeGraph).
Так что я вижу их как комплементарные инструменты. Если у вас команда из 10 человек и вы хотите встроить семантический поиск в workflow — ставьте SocratiCode. Если вы соло-разработчик, который хочет ускорить свой поток — ставьте cocoindex за 30 секунд.
Кому этот инструмент спасёт карьеру (хотя бы сэкономит нервы)
cocoindex-code идеально подходит для:
- Разработчиков на Python/JS/Go (поддерживаются все языки, которые умеет дерево эмбеддингов — на практике это 15+ языков)
- Тех, кто активно использует AI-агентов (Claude Code, Codex, Cursor) и хочет сократить расход токенов
- Людей, которые ненавидят grep за его тупость, но не хотят разворачивать энтерпрайз-решения
Не подойдёт, если вам нужен граф зависимостей в реальном времени — берите CodeGraph. Или если требуется глубокая интеграция с IDE через MCP — тогда SocratiCode.
Но если вам нужно быстро, дёшево и локально — cocoindex-code ваш выбор.
Попробуйте. Установка занимает меньше времени, чем чтение этой статьи. И когда в следующий раз Claude Code скажет "I don't know where to find that", вы просто скомандуете cocoindex search "то самое" и покажете ему пальцем.