코드 헬스와 9개의 MCP 도구
repowise는 로컬에서 실행되는 코드베이스 인텔리전스 툴로, 25개 결정론적 마커로 파일별 결함 위험을 예측하고 그래프 기반 리팩터링 계획과 9개의 MCP 도구로 에이전트 비용을 크게 줄인다.
TL;DR
repowise는 로컬에 인덱스를 생성해 호출 그래프·깃 이력·자율 문서·아키텍처 의사결정·코드 헬스의 다섯 계층을 결합하는 코드베이스 인텔리전스 툴이다. 25개 결정론적 마커로 파일별 결함 위험을 1–10으로 평가하고 호출 그래프·공변성 정보를 이용해 구체적인 리팩터링 계획을 자동으로 산출하며, 이 과정은 기본 모드에서 LLM 호출 없이 동작해 보안과 재현성을 확보한다. MCP 도구 9개는 에이전트 질의에서 파일 읽기와 툴 호출을 줄여 컨텍스트 로딩 토큰을 최대 −96%까지 절감하는 것으로 보고되었으며, 코드 헬스 ROC AUC 0.74와 같은 공개 벤치마크로 결함 예측 성능을 입증했다. 단점으로는 문서 레이어의 완전성은 선택적 LLM 생성에 의존할 수 있으며, 온보딩 시 처음 인덱스 생성에 한 번의 비용과 파일형 규모에 따른 초기 시간이 필요하다.
주요 기능
- 인덱싱을 한 번 수행해 5개 인텔리전스 계층(그래프·깃·문서·결정·코드 헬스)을 구축하고 이 인덱스를 MCP 도구와 대시보드에서 재사용할 수 있다. 인덱스는 tree-sitter와 git 메타데이터를 사용해 파일·심볼 수준의 호출 그래프와 깃 이력을 결합하며, 커밋 단위로 동기화해 변경된 부분만 재생성한다. 인덱싱 경로는 결정론적이고 기본 모드에서 LLM 호출을 전혀 사용하지 않는다.
- 파일별로 25개의 결정론적 마커를 계산해 결함 위험·유지보수성·성능 신호를 1–10 척도로 산출한다. 이 마커에는 McCabe 복잡도, 깊은 중첩, 브레인 메서드, LCOM4, 라빈-카프 기반 클론 탐지, 테스트 커버리지 연계 지표 등이 포함되어 점수는 결함 레이블이 있는 이력 데이터로 보정되었다. 각 파일 점수는 대시보드와 CLI에서 낮은 점수 파일을 우선적으로 식별하는 데 사용된다.
- 호출 그래프와 깃 공변성 정보를 결합해 구체적인 리팩터링 계획을 생성한다. 계획은 Extract Class, Move Method, Break Cycle, Split File, Extract Helper 같은 작업을 정확한 메서드/심볼 단위로 지정하고 영향을 받는 호출자와 공변성 파일들을 블래스트 반경으로 포함한다. 계획은 그래프 중심성·영향도·블래스트 반경으로 우선순위를 매겨 탁월한 비용대비 효과를 노린다.
어떻게 동작하는가
repowise는 로컬에서 코드를 한 번 인덱스해 tree-sitter로 AST를 파싱하고 git 메타데이터와 결합해 파일·심볼 수준의 호출 그래프와 소유권·공변성 데이터를 만든다. 인덱스 과정에서 25개의 결정론적 마커를 계산해 결함 위험·유지보수성·성능 점수를 산출하며, 이 과정은 기본 모드에서 LLM 호출 없이 결정론적으로 완료되어 3,000파일 규모 저장소에서 30초 이내에 끝나는 것으로 보고되었다. 생성된 인덱스는 MCP 도구를 통해 질의 가능하며, 리팩터링 계획과 디스틸 같은 출력 전처리 기능으로 에이전트의 파일 읽기와 툴 호출을 줄인다.
해결 문제
원시 파일 읽기와 반복적 코드 탐사로 인한 에이전트 토큰·시간 낭비 문제를 줄인다. 또한 파일 수준의 결함 예측과 호출 그래프 기반의 구체적 리팩터링 계획 부재로 인해 사람이 수동으로 찾아야 했던 유지보수 포인트를 기계적으로 찾아 작업 단위로 전환한다.
지금 주목받는 이유
에이전트별 토큰·파일 읽기·툴 호출을 크게 줄이는 벤치마크와 결함 예측(ROC AUC 0.74)을 공개해 에이전트 통합과 코드 신뢰성 관리라는 실질적 문제에 대한 해결책을 제시하기 때문에 주목을 받고 있다.
차별점
- 결함 예측 점수와 그에 대한 실행 가능한 리팩터링 계획을 동일한 인덱스에서 함께 제공한다. 점수는 25개 결정론적 마커로 계산되어 결함 레이블에 대해 보정되며, 계획은 호출 그래프와 공변성 데이터를 이용해 블래스트 반경까지 명시한다. 이 조합은 단순한 파일 위험 표시에 그치지 않고 에이전트가 즉시 적용 가능한 변경 집합을 제공한다.
- 에이전트 친화적 MCP 툴셋을 통해 문맥 로딩과 질의 횟수를 획기적으로 줄인다. get_context, get_answer, get_health 같은 태스크 중심의 도구들은 다수의 파일과 심볼을 한 번의 호출로 묶어 반환해 에이전트가 반복으로 파일을 읽는 비용을 줄였고, 벤치마크에서 토큰·파일 읽기·툴 호출 감소가 보고되었다. 로컬 MCP 서버와 VS Code 확장이 동일한 인덱스를 재사용해 인간 개발자와 에이전트가 동일한 신호 집합을 공유한다.
- LLM 의존을 최소화한 설계로 안전성과 온프레미스 운영을 지원한다. 인덱싱과 코드 헬스 산출은 기본적으로 LLM 호출 없이 결정론적으로 이루어지며, 문서 생성 단계만 선택적으로 LLM을 사용해 비대칭적 외부 의존을 허용한다. 이 구조는 완전 오프라인 환경이나 보안 규제가 엄격한 조직에서 자기 호스팅으로 운영하기에 적합하다.
사용 사례
- 로컬 개발환경에서 PR을 병합하기 전에 변경 범위의 결함 위험과 연쇄 영향을 빠르게 평가하는 용도로 사용할 수 있다. repowise의 change-risk 명령은 base..HEAD 범위를 0–10으로 점수화하고 PR용 directive를 제공해 missing_tests, missing_cochanges 같은 문제를 조기에 식별한다. 결과는 리뷰어 권고와 함께 에디터 내부에서 확인 가능하다.
- AI 코딩 에이전트와 결합해 장문의 조사나 리팩터링 작업에서 에이전트 호출 비용을 낮추는 데 쓸 수 있다. 인덱스 기반 get_context와 get_answer 도구는 에이전트가 파일을 대량으로 재읽는 대신 정제된 문맥과 참조를 받게 해 토큰 및 툴 호출 수를 줄인다. 리팩터링 계획은 에이전트가 자동으로 적용 가능한 형태로 복사해 붙여넣을 수 있다.
- 대규모 멀티 리포지토리 작업공간에서 의존성·계약·공변성 분석을 통해 서비스 간 영향도와 아키텍처 결정을 추적하는 데에 적합하다. workspace 모드의 Live System Map과 cross-repo co-change 기능은 서비스 간 호출·이벤트·패키지 의존을 도식화하며, 계약 위반과 소비자 추적을 통해 안전한 리팩터링 범위를 산정한다.
시작하기
설치와 초기 인덱스는 간단한 명령으로 시작된다. 먼저 pip로 설치한 뒤 'repowise init'을 실행하면 다섯 개 인텔리전스 계층(그래프·깃·문서·결정·코드 헬스)이 생성된다. 인덱스 완료 후 'repowise serve'를 실행하면 로컬 MCP 서버와 대시보드가 올라오며 VS Code 확장으로 연동해 에디터 내부에서 신호를 확인할 수 있다.
요구사항
- Python 3.11 이상이 요구되며 대표적인 런타임 의존성으로 tree-sitter와 git 메타데이터 접근이 필요하다. LLM은 문서 생성 등의 선택적 단계에서만 쓰이며 기본 인덱싱과 코드 헬스 계산은 LLM 호출 없이 동작한다. 온프레미스 배포 시 네트워크 정책에 따라 외부 API 키(예: Anthropic/OpenAI)는 사용자가 별도로 제공 가능하다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| Code health ROC AUC | ROC AUC | 0.74 (cross-project mean, 95% CI 0.68–0.79) | — |
| Recall @ 20%-of-lines budget | recall | 0.173 | CodeScene: 0.074 |
| Popt (effort-aware ranking) | Popt | 0.607 | CodeScene: 0.462 |
| Context tokens to load commit | tokens | 2,391 vs 64,039 (~27× fewer, −96%) | — |
| Distill per-command token savings | saved % | pytest -q: 61% saved; git log -50: 89% saved; git diff (30 commits): 86% saved | — |
이미지 분석



4.2k
Stars
465
Forks
+207
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.