Когда grep снова приносит вам 500 совпадений по слову “error”, а нужного нет и в помине, появляется ck и шепчет: “Расслабься, я ищу смысл”. Да, это тот случай, когда поисковая строка перестаёт быть словарём синонимов и становится маленьким телепатом для вашего репозитория.
ck — это “semantic grep” на Rust, который понимает запросы вроде “error handling” и находит try/catch, Result, исключения и аккуратные точки возврата, даже если таких слов в коде нет. При этом он ведёт себя как привычный grep: те же флаги, те же шаблоны, тот же формат вывода. Разница — в мозгах.
Быстрый старт прост до смешного:
cargo install ck-search
ck --index .
ck --sem "authentication logic" src/
Нужна классика? Пожалуйста:
ck -n "TODO" *.rs
А если хочется и точности ключевых слов, и умения “понимать контекст”, есть гибрид:
ck --hybrid "connection timeout" src/
Под капотом — эмбеддинги, умный индекс в каталоге .ck/ и три режима: regex (по умолчанию), sem (чистая семантика) и hybrid (смешанная магия с разумным ранжированием). Для автоматизации есть аккуратный JSON-вывод, а для обзоров кода — опция выдавать целые функции и классы через флаг –full-section. Индекс строится быстро, хранится отдельно и безболезненно пересоздаётся. По пути ck бережно обходит мусорные папки вроде node_modules, pycache и прочие “болота”.
Разработчикам ck экономит время и нервные клетки: меньше шумных совпадений, больше точных попаданий в те самые куски логики. Агентам ИИ — даёт структурированный материал: JSON, top-k, пороги релевантности и готовые “секции” кода для анализа и генерящей документации. Командам — знакомый grep-ритуал с кнопкой “турбо”.
И главное — всё работает локально, без облачных шёпотов и утечек. Запросы за сотни миллисекунд, индексация на миллионы строк — за пару минут. Короче, если вы привыкли искать “что говорит код”, ck учит искать “что код делает”. И делает это чертовски убедительно.