Ataraxy-Labs/sem
Semantic version control => entity-level diffs, blame, and impact analysis on top of git. 28 languages via tree-sitter. Built for coding agents.
What it solves
sem은 Git 위에 구축된 시맨틱 버전 관리 도구로, 라인 기반 diff를 엔티티 수준의 변경으로 대체합니다. 어떤 라인이 바뀌었는지 보는 대신, 어떤 함수, 클래스, 메서드가 수정, 이름 변경, 이동되었는지를 보여주어 코드베이스의 실제 로직 변화를 이해하기 쉽게 합니다.
How it works
이 도구는 tree‑sitter를 사용해 32개의 프로그래밍 언어와 구조화 데이터 포맷을 파싱하고, 함수와 클래스와 같은 엔티티를 추출합니다. 추출된 엔티티는 세 단계 매칭 프로세스로 비교됩니다:
- 정확한 ID 매치
- 구조 해시(공백과 주석을 무시해 이름 변경/이동을 감지)
- 토큰 중복 기반 퍼지 유사도
리포지토리 외부에 SQLite 엔티티 캐시를 유지하여 높은 성능을 유지합니다. 매우 큰 monorepo의 경우, 사전 구축된 코드베이스 그래프를 제공하는 선택적 클라우드 가속 서비스도 제공합니다.
Who it’s for
- 개발자: 보다 의미 있는 diff와 변경 영향 분석을 원하는 사람.
- AI 코딩 에이전트: 전체 파일을 읽는 대신 정확하고 토큰 효율적인 컨텍스트(MCP 서버를 통해)가 필요한 경우.
- DevOps/CI 파이프라인: 풀 리퀘스트에서 엔티티 수준 변경 추적이 필요한 경우.
Highlights
- 엔티티 수준 diff: 특정 함수, 클래스, 메서드의 변경을 식별.
- 영향 분석: 파일 간 의존 그래프를 통해 특정 엔티티를 변경했을 때 무엇이 깨지는지 보여줌.
- MCP 서버: AI 에이전트(Claude Code 또는 Cursor 등)와 통합하여
impact,context,diff쿼리 제공. - 광범위한 언어 지원: Rust, Python, Go, TypeScript, Java 등 32개 언어 지원.
- Git 통합:
sem setup을 통해 기본git diff출력으로 설정 가능. - GitHub Action: 풀 리퀘스트에 엔티티 수준 변경 요약을 자동으로 추가.