본문으로 건너뛰기
피드

cs – 인덱스 없이 코드 구조를 이해하는 코드 검색 도구 (코드/주석/문자열 구분 랭킹)

open-source 약 4분
vote
0
댓글
북마크

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

  • 1

    코드/주석/문자열 구분 가중 BM25 랭킹 (인덱스 불필요)

  • 2

    순환 복잡도를 랭킹 시그널로 사용하는 Complexity Gravity 기능

  • 3

    리눅스 커널 전체 검색: M1 ~3초, 9950X3D ~400ms

  • 4

    CLI, TUI, HTTP, MCP 서버 네 가지 인터페이스

  • 5

    30+ 언어에서 선언문 감지(func, class, def) 부스팅

뭐가 다른가

  • 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 도구에 연결 가능) 네 가지 인터페이스 제공

💡

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

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

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

댓글

댓글

댓글을 불러오는 중...

open-source

위키피디아에도 빅테크식 반노조 플레이북이 들어왔다

위키미디어 재단이 5월 열흘 사이 MediaWiki 장기 핵심 개발자를 해고하고, 자원봉사 편집자 요청을 처리하던 Community Tech 팀을 해산했다는 비판 글이다. 해고된 인력 상당수가 노조 조직 활동과 연결돼 있었고, 위키피디아 편집자들은 연대 파업까지 거론하고 있다. 재단은 2억9660만 달러의 준비금과 빠르게 성장하는 AI 대상 API 매출을 갖고 있어, 이 사안이 단순 비용 절감으로 보기 어렵다는 게 글의 핵심이다.

open-source

캘리포니아, 연령 확인법에서 리눅스 빼려는 수정안 추진

캘리포니아가 운영체제에 사용자 나이 확인을 요구하는 법안에서 대부분의 오픈소스 운영체제를 제외하는 수정안을 추진 중이다. 데비안, 페도라, 우분투, 아치, 리눅스 민트 같은 배포판은 빠질 가능성이 커졌지만, 스팀OS처럼 독점 앱 생태계와 연결된 플랫폼은 여전히 애매한 상태다.

open-source

마이크로소프트, 45년 전 86-DOS 소스코드를 오픈소스로 공개

마이크로소프트가 86-DOS 1.00 출시 45주년에 맞춰 지금까지 발견된 것 중 가장 오래된 DOS 소스코드를 공개했어. 팀 패터슨의 차고에 있던 도트 매트릭스 출력물을 스캔하고 옮겨 적어, 원본 바이너리와 바이트 단위로 동일하게 다시 컴파일되는 수준까지 복원한 게 포인트야.

open-source

밤부 랩, AGPLv3 위반 논란으로 오픈소스 커뮤니티와 충돌

3D 프린터 제조사 밤부 랩이 AGPLv3 라이선스 위반 논란에 휘말렸고, Software Freedom Conservancy가 두 건의 위반 사례를 확인했다는 내용이야. Louis Rossmann과 Gamers Nexus는 관련 개발자의 법적 방어를 위해 2만달러를 기부했고, 갈등의 핵심은 오픈소스 기반 생태계를 클라우드와 DRM으로 점점 닫아가려는 움직임이야.

open-source

플리퍼, 리눅스 기반 확장형 기기 '플리퍼 원' 공개

플리퍼가 기존 플리퍼 제로를 대체하는 후속작이 아니라, 리눅스 기반 네트워킹·확장형 기기인 플리퍼 원을 공개했어. RK3576 8코어 ARM 칩, 와이파이 6E, 듀얼 이더넷, NVMe, HDMI 4K 120Hz까지 넣으면서 장난감 같은 해킹 도구에서 훨씬 범용적인 리눅스 장비 쪽으로 방향을 넓히는 그림이야.