ast-index CLI
CLI на Rust строит локальный индекс символов кода, и агент ищет по структуре вместо grep, тратя на 40–50% меньше токенов.
- 589 ★ репозитория
- Последний коммит
- MIT
Минимальный доступ
Почему такой уровень
- CLI читает исходники проекта и пишет локальный индекс SQLite, к сети не обращается.
Установка
- Работает в
Ручная установка
brew tap defendend/ast-index
brew install ast-indexКоманды из README для macOS и Linux. Для Windows есть winget, для остальных cargo install ast-index --locked.
Доступ и проверки
Как мы проверяемМинимальный доступИнструмент ничего не запускает и не ходит в сеть.
- CLI читает исходники проекта и пишет локальный индекс SQLite, к сети не обращается.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
`ast-index` строит локальный индекс SQLite по символам, ссылкам, импортам, модулям, зависимостям и наследованию, после чего агент и человек переходят по коду по точной структуре, а не по текстовым совпадениям. Команда `ast-index rebuild` создает индекс один раз, `ast-index update` держит его актуальным после правок, а в монорепозитории помогает ключ `--walk-up`. Запросы идут от общего к точному. `explore` отвечает на вопрос по теме, например «payment flow», а `symbol`, `class`, `outline`, `refs`, `usages`, `implementations` и `deps` дают определение, вызовы, реализации и пути зависимостей. Необязательные данные не строятся при пересборке: `hotspots --collect` ранжирует файлы по частоте правок, исправлений и числу авторов, `graph build` строит граф зависимостей между символами, после чего `graph dependents` показывает, кто пострадает от изменения. Поддержано более тридцати языков и форматов: Kotlin, Java, Swift, TypeScript, JavaScript, Rust, Python, Go, C и C++, C#, PHP, Ruby, BSL для 1С, SQL и другие. Автор приводит замеры на проекте Android (около 29 тысяч файлов и 300 тысяч символов): `class` выполняется за 1 мс против 90 мс у `grep`, а `search` за 11 мс против 280. Для Claude Code, Codex и Cursor есть плагины со скиллом, а Claude Code получает команду `/initialize` для первоначальной настройки.
Для кого. Разработчикам на больших и многоязычных репозиториях, где агент тратит токены на чтение целых файлов и промахивается по `grep`, особенно в Android, iOS и монорепозиториях.
Подходит, если
- Агент ищет, кто вызывает метод базового класса, и `grep` возвращает сотни лишних совпадений.
- Перед изменением сервиса нужно узнать, какие символы от него зависят.
- Надо понять устройство незнакомого модуля по структуре и зависимостям, не читая файлы целиком.
- В репозитории Kotlin, Swift и Python рядом, и поиск должен понимать все три.
- Нужно быстро найти файлы с самой частой правкой и исправлениями, чтобы разобраться, где живут проблемы.
Не подходит, если
- Репозиторий маленький: индекс и обновления добавляют лишний шаг, а обычного поиска хватает.
- Нужен семантический поиск по смыслу текста и комментариев: инструмент ищет по структуре кода.
- Язык проекта вне поддерживаемого списка: тогда останется текстовый поиск.
Пример запроса к агенту
Построй индекс командой `ast-index` `rebuild` и покажи, кто использует класс PaymentRepository и что сломается при смене его интерфейса.Ограничения
Индекс нужно обновлять командой `ast-index update` после правок и смены веток, иначе результаты отстают. Для частых правок автор советует фоновое обновление `ast-index update --background --debounce-ms 500` из хука.
Данные по истории Git и граф символов не строятся при пересборке и включаются отдельными командами.
Сборка из исходников требует Rust, итоговый бинарник занимает около 50 МБ. Замеры скорости автор снимал на большом Android-проекте, на вашем проекте цифры будут другими.
Как отключить. Выполните `claude plugin uninstall ast-index` и удалите бинарник командой `brew uninstall ast-index` или `cargo uninstall ast-index`. Индекс лежит в проекте и удаляется вместе с его папкой.
Частые вопросы
Как установить `ast-index`?
Через Homebrew: `brew tap defendend/ast-index` и `brew install ast-index`. Есть также `cargo install ast-index --locked`, `winget install --id defendend.ast-index` и сборка из исходников.
Как подключить к Claude Code?
Выполните `claude plugin marketplace add defendend/Claude-ast-index-search` и `claude plugin install ast-index`. Плагин добавляет команду `/initialize`. Есть и команда `ast-index install-claude-plugin`.
Как использовать с Codex и Cursor?
Для Codex свяжите `plugin/skills/ast-index` с `~/.codex/skills/ast-index` или подключите репозиторий как маркетплейс. Для Cursor свяжите папку с `~/.cursor/skills/ast-index` или `~/.cursor/plugins/local/ast-index`.
Сколько токенов экономится?
Автор называет 40–50% на больших репозиториях за счет возврата структурных фрагментов вместо целых файлов. Цифра зависит от проекта.
Как быть с монорепозиторием?
Если в подпапках есть свои маркеры системы контроля версий, добавьте `--walk-up` или переменную `AST_INDEX_WALK_UP=1`, чтобы использовать корневой индекс.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыЛокальный поиск по коду для Claude Code и Codex: шесть быстрых инструментов вместо grep и Read, индекс обновляется сам.
Быстрый локальный индексный поиск по коду на Rust для ИИ-ассистентов: подключается к Claude Code, OpenCode и Codex.
Структурный поиск, линт и замена кода по синтаксическому дереву: шаблоны пишутся как обычный код
Навигатор по коду на tree-sitter: локальный индекс SQLite отвечает агенту о символах, вызовах и влиянии правок за миллисекунды
codesearch ищет по коду сразу в нескольких репозиториях гибридным поиском и работает офлайн, без GPU и Docker.
CLI строит индекс кодовой базы и карту на 250 токенов, чтобы агент не читал сотни файлов в поисках нужного.
Коротко о README
README перечисляет возможности и языки, дает быстрый пример с установкой и командами, таблицу замеров скорости против `grep` и четыре способа установки. Дальше разделы о работе в монорепозитории и подключении к Claude Code, Codex и Cursor.