코드 구조를 이해하는 CLI 검색 도구, codespelunker!

by DD
3개월 전
조회수 12

codespelunker(cs)는 코드 구조를 이해하고 관련성 기반으로 검색 결과를 랭킹하는 CLI 도구로, 인덱싱 없이 작동한다.

기존 grep, ripgrep과 달리 코드, 주석, 문자열을 구분하여 검색 정확도를 높이고, BM25 알고리즘을 활용한 스마트 랭킹을 제공한다.

TUI, HTTP 서버, MCP 서버 등 다양한 인터페이스를 지원하며, Go, Python, JavaScript 등 다양한 언어를 지원한다.

ast-grep과 비교하여, codespelunker는 코드 구조 기반 검색에, ast-grep은 구조적 매칭에 강점을 가진다.

codespelunker의 핵심 기능: 구조적 이해와 스마트 랭킹

codespelunker(cs)는 구조적 이해(Structural Awareness)를 통해 코드 내에서 주석보다 코드에 있는 일치 항목에 더 높은 가중치를 부여한다. 또한, BM25 알고리즘을 활용하여 스마트 랭킹(Smart Ranking)을 수행하며, 파일 위치, 파일 길이, 코드 구조 등을 고려하여 검색 결과의 관련성을 높인다. 특히, --gravity 옵션을 통해 복잡성(Complexity)을 조절하여 복잡한 구현체를 우선적으로 검색할 수 있도록 지원한다.

기존 도구와의 차별점: ripgrep, ast-grep 비교

codespelunker(cs)는 ripgrep과 같은 빠른 텍스트 매칭 도구(Fast Text Matcher)와는 달리, 코드 구조를 이해하고 관련성 기반으로 결과를 랭킹한다. 또한, ast-grep과 비교했을 때, codespelunker는 코드 구조 기반 검색에, ast-grep은 구조적 매칭에 강점을 가진다. 즉, codespelunker는 '데이터베이스 마이그레이션 로직'과 같은 기능 중심의 검색(Function-Oriented Search)에, ast-grep은 '3개의 인자를 가진 함수'와 같은 구조적 패턴 매칭(Structural Pattern Matching)에 더 적합하다.

다양한 인터페이스와 언어 지원

codespelunker(cs)는 TUI(Text-based User Interface), HTTP 서버, MCP(Model Context Protocol) 서버 등 다양한 인터페이스를 제공하여 사용자의 편의성을 높였다. 또한, Go, Python, JavaScript, TypeScript, Rust, Java 등 다양한 프로그래밍 언어를 지원하며, --only-code, --only-comments, --only-strings 옵션을 통해 검색 범위를 세분화할 수 있다. 이러한 기능들은 개발자가 코드베이스(Codebase) 탐색을 효율적으로 수행할 수 있도록 돕는다.

MCP 서버 모드와 LLM 통합

codespelunker(cs)는 MCP 서버 모드를 지원하여 LLM(Large Language Model) 기반 도구와의 통합을 용이하게 한다. MCP(Model Context Protocol) 서버를 통해 Claude Desktop, Claude Code, Cursor 등과 같은 LLM 도구에서 codespelunker를 코드 검색 엔진으로 활용할 수 있다. 이러한 통합은 LLM 기반의 코드 분석(Code Analysis)코드 생성(Code Generation) 워크플로우를 개선하는 데 기여할 수 있다.

codespelunker - CLI code search tool that understands code structure and ranks results by relevance. No indexing required