ast-grep
Структурный поиск, линт и замена кода по синтаксическому дереву: шаблоны пишутся как обычный код
Установка
brew install ast-grepТакже: npm install --global @ast-grep/cli, pip install ast-grep-cli, cargo install ast-grep --locked.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
ast-grep ищет в коде не текст, а синтаксические конструкции: шаблон записывается как фрагмент кода, а метапеременные вроде $A совпадают с любым узлом дерева. Найденное можно сразу переписать по шаблону замены. Правила линта и массовых правок описываются в YAML. Разбор идет через tree-sitter, инструмент написан на Rust и использует несколько ядер. Агенту это дает точные рефакторинги на весь проект вместо хрупких регулярных выражений.
Для кого. Для разработчиков и агентов, которым нужны массовые правки и поиск по коду с учетом синтаксиса.
Подходит, если
- Нужно заменить устаревший вызов API во всем проекте
- Нужно написать собственное правило линта для команды
- Регулярное выражение цепляет лишнее или пропускает многострочные конструкции
Не подходит, если
- Нужна замена в обычном тексте или конфигурации без синтаксиса языка
- Нужно переименование с учетом типов и импортов, для этого лучше языковой сервер
Пример запроса к агенту
С помощью ast-grep замени во всех TypeScript-файлах конструкции вида a && a() на a?.()Ограничения
Работает только с языками, для которых есть грамматика tree-sitter. Не знает о типах, поэтому одинаковые по форме, но разные по смыслу конструкции совпадут одинаково. Шаблоны и YAML-правила требуют привыкания.
Как отключить. Удалите пакет тем же менеджером, которым ставили: npm uninstall -g @ast-grep/cli, pip uninstall ast-grep-cli или brew uninstall ast-grep.
Проверка безопасности
- При замене переписывает файлы проекта массово
Коротко о README
README объясняет идею поиска по синтаксическому дереву и синтаксис метапеременных. Установка возможна через npm, pip, cargo, Homebrew, scoop, MacPorts, Nix и mise. Приведены примеры замен для TypeScript и перечислены основные возможности: шаблоны в виде кода, API для обхода дерева и правила в YAML. Лицензия MIT.
Частые вопросы
Чем это лучше grep или sed?
Совпадение идет по структуре кода, поэтому пробелы, переносы и форматирование не мешают, а строки и комментарии не цепляются случайно.
Можно ли попробовать без установки?
Да, на сайте проекта есть онлайн-песочница.
Похожие
Набор скиллов, который задает агенту процесс разработки: уточнение задачи, план, TDD, субагенты и ревью кода
Скиллы Мэтта Покока для инженеров
Skills For Real Engineers
Небольшие компонуемые скиллы для инженерной работы с агентом: интервью по плану, TDD, диагностика багов, ревью и архитектура
Референсные MCP-серверы
Model Context Protocol servers
Официальные референсные MCP-серверы: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time и Everything
Актуальная документация и примеры кода нужной версии библиотеки прямо в контексте агента, через MCP или CLI со скиллом