При работе с большими проектами ИИ-ассистенты вроде Claude Code тратят значительную часть контекстного окна на чтение целых файлов, даже если нужна лишь небольшая часть — например, один метод или структура таблицы. Разработчик skydeex создал инструмент claudeSearch, который решает эту проблему: он парсит код, строит граф зависимостей в SQLite и предоставляет точечный доступ к нужным фрагментам по командам. По словам автора, это позволяет сократить расход токенов на 70%.

Инструмент состоит из двух PHP-скриптов: buildGraph.php сканирует проект и записывает связи в SQLite (инкрементальный запуск занимает 100–200 мс), а claudeSearch.php служит CLI-интерфейсом для ассистента. Пользователь может запросить места вызова метода (cs.sh graph usages), поля и конструктор класса (cs.sh entity), код конкретного метода (cs.sh method), список всех методов файла с номерами строк (cs.sh outline), все SQL-запросы к таблице (cs.sh sql) или структуру таблицы из БД (cs.sh schema). Вместо 400 строк файла ассистент получает 10–20 строк точного ответа.

КомандаОписание
cs.sh graph usages <method>Показать все места вызова метода
cs.sh entity <file>Поля и конструктор класса без чтения всего файла
cs.sh method <file> <method>Код конкретного метода
cs.sh outline <file>Список всех методов файла с номерами строк
cs.sh sql <table>Все SQL-запросы к таблице
cs.sh schema <table>Структура таблицы из базы данных

Сейчас поддерживаются языки PHP, JavaScript и Go. Для добавления нового языка нужно создать один файл с парсером-функцией — например, parsers/go.php с parseGo(). Используется regex-подход, а не полноценное AST, что упрощает поддержку и не требует внешних зависимостей. По мнению автора, для навигации в контексте ИИ-ассистента такой точности достаточно.

Вместо чтения файла на 400 строк ассистент получает 10–20 строк точной информации, экономя контекстное окно.

Чтобы подключить инструмент к Claude Code или Cursor, достаточно добавить в корень проекта файл CLAUDE.md с описанием команд и правилами: не читать файлы целиком, если нужна только часть; перед правкой запрашивать outline, затем method, затем редактировать. После этого ассистент сам вызывает claudeSearch вместо чтения файлов. Исходный код опубликован на GitHub.