Drift CLI
Локальный CLI и read-only MCP-сервер, которые не дают агенту нарушать слоистость API-роутов в Next.js
- 792 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Собирается из исходников на Rust и запускает локальный сканер, который пишет базу контрактов в SQLite
- MCP-сервер drift-mcp отдает агенту контракт и примеры файлов только на чтение
Установка
- Работает в
Ручная установка
git clone https://github.com/dadbodgeoff/drift.git && cd drift
pnpm install --frozen-lockfile
pnpm build && pnpm build:engineНужен Rust. Точка входа: node packages/cli/dist/main.js.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Собирается из исходников на Rust и запускает локальный сканер, который пишет базу контрактов в SQLite
- MCP-сервер drift-mcp отдает агенту контракт и примеры файлов только на чтение
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Drift сканирует репозиторий на TypeScript или JavaScript и выводит соглашение: API-роуты Next.js не должны напрямую импортировать клиенты доступа к данным вроде Prisma. После подтверждения человеком соглашение фиксируется как контракт, существующие нарушения попадают в базовую линию. Команда drift check проверяет дифф и называет файл, строку и нарушенное правило; в режиме block она завершается с кодом 2. Read-only MCP-сервер drift-mcp дает агенту заранее прочитать контракт и через get_task_preflight получить примеры файлов, где паттерн уже реализован.
Для кого. Для команд на Next.js, которые пускают агентов писать API-роуты и хотят сохранить слой сервисов.
Подходит, если
- Агенты добавляют роуты, которые ходят в базу в обход сервисов
- Нужен гейт в CI на нарушение архитектурного соглашения
- Нужно дать агенту примеры правильной реализации перед задачей
Не подходит, если
- Проект не на Next.js или не на TypeScript и JavaScript
- Нужно общее ревью кода или проверка других правил
Пример запроса к агенту
Перед добавлением эндпоинта запроси у Drift preflight и следуй найденным примерамОграничения
Бета: пакет не опубликован в npm, сборка только из исходников и требует Rust и pnpm, бинарника drift пока нет. Поддерживается одно семейство соглашений для Next.js. Хуки на момент редактирования не выпущены. Пакет driftdetect в npm не имеет отношения к этой версии. Ответ get_task_preflight занимает порядка 20 тысяч токенов.
Как отключить. Удалите drift-mcp из конфигурации MCP, шаг drift check из CI и каталог ~/.drift.
Частые вопросы
Почему нарушения только предупреждают?
Если соглашение нарушает большинство роутов, Drift считает его целью рефакторинга и не блокирует, пока человек не решит иначе.
Может ли агент через MCP менять правила?
Нет, сервер только читает; принятие соглашений и подавление находок остаются за человеком.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыMCP-сервер и CLI для исследования кода: поиск и разбор по вашему проекту и по всему GitHub с экономией токенов
CLI на Rust для TypeScript и JavaScript: мертвый код, дубликаты, циклы, сложность и границы архитектуры по одному графу, есть MCP-сервер и скиллы
MCP-сервер отладчика Node.js: агент ставит точки останова, идет по шагам, смотрит переменные и вычисляет выражения в паузе
CLI и TypeScript-рантайм для вызова MCP-серверов из терминала, скриптов и сгенерированных типизированных клиентов
MCP-сервер, который превращает большую кодовую базу в семантический граф функций для точной навигации и поиска по смыслу
rust-analyzer MCP — навигация по коду Rust для агента
r3bl-rust-analyzer-mcp-server
MCP-сервер на потоках Rust: агент получает подсказки, переходы к определениям, ссылки, форматирование и диагностику компилятора от rust-analyzer
Коротко о README
README сразу предупреждает о бета-статусе и сборке из исходников, дает команды установки и первого запуска. Отдельный раздел честно ограничивает область: один язык, один фреймворк, одно соглашение. Приведены результаты проверки на семи открытых репозиториях Next.js и объяснено, когда проверка блокирует, а когда предупреждает. Лицензия MIT.