1broseidon/cymbal
Language-agnostic code navigation CLI powered by tree-sitter
해결하는 문제
Cymbal은 대규모이고 낯선 코드베이스를 탐색하는 문제를 해결합니다. 느린 수동 검색 패턴(예: grep, find, 파일 읽기 등을 연결하는 방식)을 대체하여 빠르고 인덱싱된 접근 방식을 제공합니다. 이는 심볼 간 관계, 의존성, 변경 사항의 영향을 구조적으로 이해할 수 있게 해주며, 특히 코드 탐색 과정에서 토큰 소비가 많은 문제를 겪는 인간 개발자와 AI 에이전트에게 매우 유용합니다.
작동 방식
Cymbal은 tree-sitter를 사용하여 소스 파일을 추상 구문 트리(AST)로 파싱하고, 심볼, 임포트, 참조를 추출합니다. 이 데이터는 빠른 심볼 검색을 위해 FTS5를 갖춘 로컬 SQLite 인덱스에 저장됩니다. 쿼리 전에 변경된 파일만 인크리멘탈로 재분석하기 때문에 백그라운드 데몬이 필요 없이 인덱스를 최신 상태로 유지할 수 있습니다. 또한 여러 Git 워크트리에 걸쳐 페더레이티드 검색도 지원합니다.
대상 사용자
- 코드베이스 탐색과 영향 분석을 위한 빠른 CLI를 원하는 개발자.
- 토큰 사용량을 줄이고 긴 검색 호출 체인을 피하기 위해 구조화된 코드 탐색 계층이 필요한 AI 에이전트.
- 에디터, 봇, 자동화 도구에 인덱싱된 코드 탐색 기능을 통합하고자 하는 도구 개발자 (Go 라이브러리 경유).
주요 기능
- 적응형 탐색:
investigate명령어는 소스, 호출자, 영향 범위를 한 번의 호출로 통합적으로 제공합니다. - 관계 맵핑:
trace(하향 의존성)와impact(상향 호출자)를 지원하며, 선택적으로 Mermaid, DOT, JSON 형식의 시각적 그래프 생성이 가능합니다. - 변경 분석:
changed명령어는 Git 차이를 특정 심볼과 그 영향 범위로 매핑합니다. - 언어 독립성: Go, Python, Rust, TypeScript, Java, C++ 등 다양한 언어를 지원합니다.
- 에이전트 통합: OpenCode 및 Claude Code용 전용 훅을 포함하여 에이전트 기반 코드 탐색을 간소화합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트