---
title: "cs – 인덱스 없이 코드 구조를 이해하는 코드 검색 도구 (코드/주석/문자열 구분 랭킹)"
published: 2026-02-22T22:25:01.000Z
canonical: https://jeff.news/article/1094
---
# cs – 인덱스 없이 코드 구조를 이해하는 코드 검색 도구 (코드/주석/문자열 구분 랭킹)

인덱스 없이 온더플라이로 코드를 파싱해서 코드/주석/문자열을 구분하고, BM25+순환 복잡도 기반 랭킹으로 가장 관련성 높은 결과를 보여주는 CLI 코드 검색 도구. MCP 서버 모드도 지원.

## 뭐가 다른가

- `ripgrep`이 빠른 텍스트 매처라면, `cs`는 **검색 엔진**임. 파일을 찾고, 관련도로 순위를 매기고, 가장 관련성 높은 스니펫을 추출함. Sourcegraph 수준의 랭킹을 인덱스 없이 CLI로 돌린다고 보면 됨 (MIT 라이선스)

- 핵심 차별점은 **구조 인식(Structural Awareness)**. 모든 파일을 온더플라이로 파싱해서 코드/주석/문자열을 구분함:
  - 코드 내 매치: 가중치 1.0
  - 문자열 내 매치: 0.5
  - 주석 내 매치: 0.2
  - `--only-code`, `--only-comments`, `--only-strings`로 필터링도 가능

- **복잡도 중력(Complexity Gravity)** 기능이 재밌음. 순환 복잡도(cyclomatic complexity)를 랭킹 시그널로 사용해서, `Authenticate`를 검색하면 인터페이스 정의보다 **실제 로직이 구현된 복잡한 파일이 상위**에 옴

## 랭킹 시스템

- 가중 BM25 알고리즘 기반. 코드/주석/문자열을 "필드"로 취급해서 필드별 가중치 적용. 파일 길이 감쇠, 테스트 파일 하향, 노이즈 페널티도 들어감

- 프리셋 프로파일 3종:
  - `balanced` (기본): 표준 BM25, 적당한 복잡도 부스트
  - `precise`: "딱 그 파일 하나"를 찾을 때 — TF 빠르게 포화, 긴 파일 페널티, 테스트 파일 공격적 필터링
  - `broad`: "관련된 건 다 보여줘" — 반복 매치 보상, 테스트 파일 포함

- Gravity 플래그로 복잡도 부스트 강도 조절: `brain`(2.5, 복잡한 핵심 로직 공격적 서피싱) → `logic`(1.5) → `default`(1.0) → `low`(0.2) → `off`(0.0, 순수 텍스트 관련도)

- 선언문 감지(declaration detection)도 지원해서 `func`, `class`, `def` 같은 줄의 매치를 일반 사용 매치보다 부스트함. Go, Python, JS, TS, Rust, Java, C/C++/C# 등 30개 이상 언어 지원

## 성능과 인터페이스

- 인덱스가 전혀 없고 전부 브루트포스 계산인데도, Apple Silicon M1에서 **리눅스 커널 전체를 ~3초에 검색**, 9950X3D에서는 **~400ms**라고 함

- 콘솔 출력, 내장 TUI, HTTP 서버(구문 하이라이팅), **MCP 서버**(Claude Desktop, Claude Code, Cursor 등 LLM 도구에 연결 가능) 네 가지 인터페이스 제공

> [!TIP]
> `cs --mcp --dir /path/to/codebase`로 MCP 서버를 띄우면 Claude Code나 Cursor에서 바로 코드 검색 도구로 사용할 수 있음. `search`와 `get_file` 두 가지 도구가 노출됨.

- 바이트 단위 동일 매치를 하나로 접어주는 중복 제거, fzf처럼 TUI에서 결과 선택 후 Enter로 파일 경로 반환하는 기능도 있음

## 핵심 포인트

- 코드/주석/문자열 구분 가중 BM25 랭킹 (인덱스 불필요)
- 순환 복잡도를 랭킹 시그널로 사용하는 Complexity Gravity 기능
- 리눅스 커널 전체 검색: M1 ~3초, 9950X3D ~400ms
- CLI, TUI, HTTP, MCP 서버 네 가지 인터페이스
- 30+ 언어에서 선언문 감지(func, class, def) 부스팅

## 인사이트

ripgrep과 Sourcegraph 사이의 빈틈을 노린 도구. 인덱스 없이 구조 인식 랭킹을 제공한다는 점이 독특하고, MCP 서버 지원으로 AI 워크플로우에도 바로 통합 가능.
