При работе с большими проектами ИИ-ассистенты вроде 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.



