boyter/cs

codespelunker - CLI code search tool that understands code structure and ranks results by relevance. No indexing required with CLI, TUI, MCP and HTTP support.

해결하는 문제

cs (codespelunker)는 코드 검색에서 노이즈 문제를 해결하기 위해 설계된 CLI 도구입니다. 전통적인 텍스트 기반 검색 도구인 grep 또는 ripgrep와 달리, 코드를 단순한 텍스트로 다루는 것이 아니라 코드의 구조를 이해하여 관련성에 따라 결과를 순위 매깁니다. 이로 인해 개발자는 단순히 주석이나 설정 파일에서 키워드가 등장하는 경우가 아니라 실제 구현을 효과적으로 찾을 수 있습니다.

작동 방식

사전에 구축된 인덱스가 필요 없이 실시간으로 리크스컬 분석을 수행합니다. 파일을 파싱하여 코드, 문자열, 주석을 구분하고, 가중치가 부여된 BM25 관련성 점수 알고리즘을 사용합니다. 또한 사이클로마틱 복잡도를 활용해 핵심 로직을 포함한 파일을 단순한 보일러플레이트나 인터페이스보다 우선순위를 높이는 '복잡도 중력(Complexity Gravity)' 기법을 추가로 적용하여 순위를 더욱 정교하게 조정합니다.

대상 사용자

검색 인덱스를 유지 관리하는 부담 없이 하나 이상의 리포지토리에 걸쳐 구조적이고 관련성 순으로 코드 검색이 필요한 개발자 및 AI 에이전트.

주요 기능

  • 구조 인식: 코드, 주석, 문자열, 선언(func, class 등) 및 사용 사례만 결과에 필터링.
  • 복잡도 중력: 사이클로마틱 복잡도를 활용해 단순한 인터페이스나 설정 파일보다 복잡한 구현 파일을 우선순위로 높임.
  • 인덱싱 없음: 사전 인덱스 없이도 검색 엔진 수준의 순위 매김을 실시간으로 제공하며, 현대 하드웨어에서는 리눅스 커널 소스를 3초 미만으로 검색 가능.
  • 다중 인터페이스: 표준 CLI, TUI, HTTP 서버, LLM 통합을 위한 MCP(Model Context Protocol) 서버를 지원.
  • Git 동기화: 발견된 리포지토리에 대해 주기적으로 git pull을 실행하여 검색 대상을 자동으로 최신 상태로 유지.
  • 스마트 순위 매김: BM25 점수, 파일 위치 강조, 자동 테스트 파일 억제 기능을 사용.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트