Claude ест токены впустую, но я его прокачал

от автора

В материале расскажу вам о инструменте для AI-ассистента работающего CLI на PHP + SQLite. Который парсит проект, строит графы зависимостей и даёт Claude точечный доступ к коду: конкретный метод, поля класса, цепочка наследования, все SQL-запросы к таблице — одной командой, без чтения файлов целиком. Сейчас поддерживает Go , PHP и JavaScript, позже добавлю и C.ссылочка на гитхаб внизу)

Claude знает структуру проекта — но недостаточно хорошо

Claude Code читает CLAUDE.md, понимает архитектуру, знает какие файлы за что отвечают. Но когда доходит до дела — всё равно читает файлы целиком. Нужен один метод — читает весь класс. Нужно найти где вызывается функция — читает директорию за директорией. Контекст тает, а реальной работы ещё не было.

К тому моменту как он добрался до ответа, контекст уже наполовину занят файлами которые я и сам мог открыть.Или другой сценарий: нужно понять какие поля у сущности. Claude читает файл целиком, хотя там нужны только первые 20 строк с полями и конструктором.Контекстное окно — главный ресурс при работе с AI на большом проекте. Тратить его на чтение файлов целиком расточительно.Меня это раздражало. Написал инструмент.

Что я сделал

Написал два PHP-скрипта:

buildGraph.php — сканирует проект и строит граф зависимостей в SQLite. Парсит PHP и JS: классы, методы, вызовы, импорты, наследование. Запуск инкрементальный — повторный проход обновляет только изменённые файлы за 100–200 мс.

claudeSearch.php — CLI-интерфейс. Даёт AI точечный доступ к коду одной командой.

Примеры:

# Где вызывается метод — мгновенно из SQLite bash cs.sh graph usages createSupply # Поля и конструктор класса — без чтения всего файла bash cs.sh entity classes/entity/supply/Supply.php # Код конкретного метода bash cs.sh method classes/service/supply/SupplyService.php createSupply # Все методы файла с номерами строк bash cs.sh outline classes/service/supply/SupplyService.php # Все SQL-запросы к таблице bash cs.sh sql supplies # Структура таблицы из БД bash cs.sh schema supplies

Вместо чтения файла на 400 строк — 10–20 строк точного ответа. Контекст остаётся свободным для самой задачи.

Почему не AST

Есть инструменты которые строят синтаксическое дерево кода (AST). Они точнее, но требуют отдельный парсер-компилятор под каждый язык — и это зависимости, настройка, сложность.Здесь всё проще: один файл на язык, regex-парсинг. Хочешь добавить Go — создаёшь parsers/go.php с функцией parseGo() и двумя строками в конфиге. Хочешь C — то же самое. Никаких внешних зависимостей, работает везде где есть PHP.Для навигации по коду в контексте AI-ассистента такой точности достаточно.

Как подключить к AI

В корень проекта добавляется CLAUDE.md (или .cursorrules для Cursor) с описанием команд и правилами:не читать файл целиком если нужна только частьперед правкой — outline, потом method, потом Editнезависимые запросы запускать параллельноПосле этого Claude сам вызывает нужные команды вместо того чтобы читать файлы.Подробные инструкции для AI — в claudeSearch.md в репозитории. Их можно скопировать напрямую в свой CLAUDE.md.

Структура

parsers/ php.php — классы, методы, вызовы,
use js.php — import, компоненты, функции, JSX
buildGraph.php — оркестратор
claudeSearch.php — CLI
code_graph.sqlite - бд связей
cs.sh — bash-обёртка

Ссылки

GitHub: https://github.com/skydeex/claudeSearch

От себя хочу выразить благодарность администрации за отклонение этой статьи в песочнице. Кирпич в огород Хабра. Но все же я решил не оставлять людей без полезного инструмента, тем более он все равно устареет, а так хоть пользу принесет.

Если что-то у вас не заработает — не стесняйтесь, попросите ai его подогнать под вас. Если агент просит разрешения на каждый запрос, попросите его не спрашивать и еще раз принять настройки. Еще проверьте чтобы запускал скрипт, а не пытался работать как раньше. Хоть и настройки описаны, но он местами упрямый жук.

А в другой статье я напишу как запилил кодовый агент за вечер

ссылка на оригинал статьи https://habr.com/ru/articles/1035206/