Repowise: 코드, 호출 그래프, Git 히스토리 등을 인덱싱하여 엔지니어와 에이전트의 코드 이해도를 높이는 도구
요약
Repowise는 코드, 호출 그래프, Git 히스토리 등 리포지토리를 종합적으로 인덱싱하여 엔지니어와 코딩 에이전트의 코드 이해도를 높이는 도구입니다. 이 도구를 통해 '무엇이 이것을 호출하는지', '변경 시 무엇이 깨지는지' 등의 심층적인 질문에 답할 수 있습니다. LLM 호출 없이도 작동하며, 자체 호스팅 및 무료 사용이 가능하여 개발 워크플로우의 효율성을 극대화합니다.
핵심 포인트
- 코드, Git 히스토리 등을 통합 인덱싱하여 코드 이해도를 높임.
- 변경 영향 분석(what breaks) 등 심층적인 질문에 답할 수 있음.
- LLM 호출 없이 작동하며, API 키가 필요 없고 자체 호스팅 가능.
- Claude Code, Codex 등 에이전트와 연동하여 사용하기 편리함.
Repowise는 사용자의 기기에서 코드, 호출 그래프(call graph), git 히스토리, 테스트, 문서 및 설계 결정을 한 번에 인덱싱합니다. 그런 다음 사용자 본인과 코딩 에이전트가 다음과 같은 질문을 할 수 있습니다:
- 무엇이 이것을 호출하는지 (what calls this)
- 내가 이것을 변경하면 무엇이 깨지는지 (what breaks if I change it)
- 어떤 것이 사용되지 않는 코드인지 (what is dead)
- 가장 먼저 고쳐야 할 것은 무엇이며, 왜 이렇게 구축되었는지 (what to fix first, and why it was built this way).
less agent output3.8 vs 7.2 tool calls 43 questions · p<0.0001 |
more defects surfaced than CodeScenesame 20% review budget 2,770 files · p=0.003 |
files indexed in one rundotnet/runtime, one laptop 120 min · 11.7 GiB peak |
컴파일러와 비교한 호출 그래프: Go 및 TypeScript에서 0.976~0.995의 정밀도를 보였으며,
이 그래프 중 가장 많은 부분을 찾아내는 도구는 7개 비교 테스트 모두에서 더 정확했습니다.
5가지 도구 · 37,853개의 컴파일러 에지(compiler edges) · 패배한 모든 행위가 게시됨
그래프, 위험도, 상태, 테스트 및 데드 코드를 확인하는 과정은 LLM 호출을 전혀 사용하지 않으며, API 키가 필요 없고,
무료이며 자체 호스팅이 가능합니다 (AGPL-3.0 또는 상업적).
주요 기능:
- 무엇을 하는지 (What it does)
- 빠른 시작 (Quickstart)
- 에이전트 (Agents)
- 변경 사항 (Changes)
- 코드 상태 (Code health)
- 작업 공간 (Workspaces)
- 증거 (Evidence)
- 엔터프라이즈 (Enterprise)
- 문서 (Docs)
Repowise는 야심찬 프로젝트입니다. 우리는 모든 엔지니어와 그 옆에서 일하는 모든 에이전트가, 해당 코드를 5년간 유지 관리해 온 사람처럼 이해하기를 원합니다. 즉, 무엇이 무엇을 호출하는지, 무엇이 깨지기 쉬운지, 더 이상 아무도 사용하지 않는 것이 무엇인지, 그리고 왜 이렇게 구축되었는지 말입니다. 토큰 절감이 목표가 된 적은 없습니다. 이는 에이전트가 인덱스를 통해 질문할 수 있게 되면서 자연스럽게 발생하는 결과이며, 파일 검색, 열기 및 재읽기를 하는 과정에서 발생합니다. 동일한 에이전트 작업에 대해 다른 컨텍스트 도구들과 비교했을 때도 가장 큰 절감 효과를 가져옵니다.
Claude Code, Codex, Cursor 또는 모든 MCP-capable 에이전트를 리포지토리에서 열고 다음을 붙여넣으세요:
Read https://docs.repowise.dev/setup.md and set up Repowise in this repository.
에이전트는 API 키 없이 Repowise를 설치하고, 리포지토리를 인덱싱하며, 이 과정에서 비용이 발생하기 전에 사용자에게 질문합니다. 직접 하고 싶다면 다음을 참고하세요:
uv tool install repowise # 또는: pipx install repowise / pip install repowise
cd /path/to/your/repo
repowise init --yes --no-prose # 그래프(graph), git, 건강 상태(health), 데드 코드(dead code), 문서(docs). 키 필요 없음, 비용 지출 없음.
...
init
wires Claude Code가 자동으로 처리합니다. 그런 다음 에이전트에게 "Use Repowise get_overview to summarize this repository" 또는 "What breaks if I change src/auth.py?"와 같이 질문하세요.
'하나의 인덱스로, 세 가지 사용법. 가지고 온 질문을 찾으세요. 각각은 답하는 페이지로 연결됩니다.'
| 당신이 묻는 것 | Repowise가 제공하는 것 |
|---|---|
| 이 저장소에서 체크아웃(checkout)은 어떻게 작동하나요? | 호출 그래프와 생성된 문서를 기반으로, 한 번의 호출로 인용된 답변을 얻습니다. 검색 및 답변 (Search and answers) |
| 이 함수를 무엇이 호출하고, 이 함수는 무엇을 호출하나요? | 26개 파싱 언어에 걸친 호출 그래프이며, 모든 엣지(edge)에는 어떻게 해결되었는지와 얼마나 신뢰할 수 있는지 표시되어 있고, 각 진입점으로부터 추적된 실행 흐름까지 제공합니다. 그래프 (The graph) |
| 이 코드베이스에 대한 문서를 얻을 수 있나요? | 모듈과 파일 각각에 대한 위키를 제공하며, 코드가 가진 구조로부터 렌더링되며 키가 필요 없습니다. 또는 사용자가 선택할 때 모델이 작성해줍니다. 커밋마다 점진적으로 업데이트됩니다. 문서 (Docs) |
| 우리 문서 중 잘못된 것은 무엇인가요? | 트리를 기반으로 마크다운(Markdown)을 검사합니다: 코드가 더 이상 가지고 있지 않은 파일이나 심볼에 대한 모든 참조와 편집할 줄 번호를 제공합니다. 문서 드리프트 (Doc drift) |
| 왜 이렇게 구축되었나요? | ADRs, # WHY: 주석, 커밋 및 PR 히스토리, 에이전트 세션에서 채굴된 결정 사항들로 구성되며, 각각은 관리하는 코드에 연결되고 오래되면 플래그가 지정됩니다. 결정 (Decisions) |
| 누가 이 코드를 알고 있나요? | 소유자(Owners), 버스 팩터(bus factor), 주요 작성자가 자리를 비울 때의 지식 손실 위험성, 그리고 제안된 검토자를 제공합니다. 소유권 (Ownership) |
| 아키텍처를 볼 수 있나요? | 탐색 가능한 의존성 맵(dependency map), C4 뷰(C4 views), 그리고 모델이 관여하지 않은 Structurizr 내보내기 기능을 제공합니다. 대시보드 (Dashboard) |
| 질문 (You ask) | Repowise가 제공하는 정보 (Repowise gives you) |
|---|---|
| 이걸 바꾸면 뭐가 고장 날까? (What breaks if I change this?) | 심볼 레벨 블래스트 반경: 변경한 것의 호출자, 역사적으로 함께 변경되었으나 diff에 누락된 파일, 그리고 이를 도달하는 테스트. 변경 위험도 (Change risk) |
| 이 PR은 얼마나 위험해? (How risky is this PR?) | 변경 사항이 리포지토리 자체의 최근 커밋과 비교하여 어디에 위치하는지, 그 이유와 함께 지시사항 형태로 제공되어 에이전트가 행동할 수 있음. 변경 위험도 (Change risk) |
| 어떤 테스트를 실행해야 할까? (Which tests should run?) | 실제로 diff가 실행하는 테스트들을 제공하며, 커버리지 리포트가 있는 경우와 그렇지 않은 경우 모두 호출 그래프(call graph)에서 가져옴. 테스트 지능 (Test intelligence) |
| 이 PR이 테스트되지 않은 라인을 추가했나? (Did this PR add untested lines?) | 패치 커버리지, 변경된 라인에 대한 브랜치 커버리지 및 GitHub, GitLab 또는 모든 러너(runner)에서 CI의 경로 범위 게이트(path-scoped gates). CI 게이트 (CI gates) |
| 이 API 변경이 다른 리포지토리를 망가뜨릴까? (Will this API change break another repo?) | 여러 리포지토리에서 일치하는 HTTP, gRPC, 토픽 및 OpenAPI 계약(contracts), 그리고 브레이킹 체인지 가드(breaking-change guard)와 영향을 받는 소비자 파일. 워크스페이스 (Workspaces) |
| 다른 사람도 이 파일을 편집하고 있나? (Is anyone else editing these files?) | 동일한 파일을 건드리거나 함께 변경하는 파트너를 가진 다른 열린 브랜치들, 각각 목록에 올라온 이유와 함께 제공됨. 브랜치 중복 (Branch overlap) |
| 방금 비밀을 커밋했나? (Did we just commit a secret?) | 작업 트리(working tree) 및 전체 git 히스토리에서 발견된 키, 토큰 및 위험한 호출들로, 사전 커밋 검사(pre-commit check)와 CI 게이트를 통해 확인 가능. 보안 신호 (Security signals) |
| 질문 (You ask) | Repowise가 제공하는 것 (Repowise gives you) |
|---|---|
| 무엇을 먼저 고쳐야 할까요? (What should we fix first?) | 변경 빈도(churn), 팬인(fan-in), 커버리지(coverage), 버그 이력 등을 활용하여 영향도 대비 노력도를 가중치로 매긴 순위화된 큐. 가장 먼저 수정할 부분 (Fix first) |
| 기술 부채는 어디에 있나요? (Where is the debt?) | 53개의 결정론적 검출기(deterministic detectors)를 통해 모든 파일에 대해 부여되는 1부터 10까지의 점수. 결함 위험도(defect risk), 유지보수성(maintainability), 성능으로 분할되며 실제 버그 이력과 검증됨. 코드 건전성 (Code health) |
| 왜 느린가요? (Why is this slow?) | N+1 쿼리, 루프 내 I/O, 비동기 코드 내부의 블로킹 호출 및 이차 반복문(quadratic loops), 함수와 파일 경계를 가로질러 추적됨. 성능 (Performance) |
| 어떻게 안전하게 분리할 수 있나요? (How do I break this up safely?) | 구체적인 리팩토링 계획: 메서드 추출(Extract Method), 클래스 추출(Extract Class), 메서드 이동(Move Method), 파일 분할(Split File), 사이클 끊기(Break Cycle) 등, 이동하는 정확한 심볼과 함께 무엇이 어디로 이동하는지 명시. 에이전트에게 바로 전달 가능함. 리팩토링 (Refactoring) |
| 무엇을 삭제할 수 있나요? (What can we delete?) | 도달 불가능한 파일(Unreachable files), 사용되지 않는 내보내기(unused exports) 및 사용되지 않는 패키지(unused packages). 각각 신뢰도 등급과 그 근거가 제시됨. 데드 코드 (Dead code) |
| 버그는 어디에 계속 발생하나요? (Where do bugs keep landing?) | 파일과 심볼에 추적된 버그 수정 커밋, 그리고 에이전트가 '버그 자석(bug magnet)'을 편집할 때 경고를 제공함. 버그 이력 (Bug history) |
| 테스트가 실제로 무언가를 검사하고 있나요? (Are our tests testing anything?) | 어설션(assertions)이 없는 테스트, 자체 목(mocks)만 확인하는 테스트, 그리고 테스트되지 않은 핫스팟(hotspots). 테스트 품질 문제점 (Test-quality smells) |
사람들이 기대하지 않는 기능들 (Things people do not expect it to do)
테스트 실행 없이 테스트 커버리지 확인. 대부분의 리포지토리는 커버리지 보고서를 생성하지 않습니다. Repowise는 임포트 및 호출 그래프에서 "이것이 테스트되었는지, 그리고 무엇으로"에 대한 답을 제공하며, 측정되거나 추론된 모든 답변에 레이블을 지정합니다.
사용자의 리포지토리에서 자체적인 건강 점수를 확인합니다. 인덱싱 후마다 가장 낮은 점수를 받은 파일 중 실제로 최근 이력에 버그 수정이 있었던 파일의 개수를 보고하여, 코드베이스의 나쁜 점수가 사용자에게 보이도록 합니다.
사용자의 에이전트 세션으로부터 학습합니다. 트랜스크립트 캡처가 활성화되면, 사용자가 반복하는 수정 사항("공유 HTTP 클라이언트를 사용하세요" 등)은 추적된 결정으로 기록되어 나중에 에이전트에게 피드백됩니다. 트랜스크립트는 절대 기기를 벗어나지 않습니다.
실제 인덱스에서 내용을 가져와 기록하고 최신 상태로 유지합니다. 따라서 MCP 지원이 없는 에이전트조차도 정보를 갖춘 상태로 시작할 수 있습니다. CLAUDE.md 및 AGENTS.md
에이전트가 읽기 전에 명령어 출력을 축소합니다. repowise distill pytest는 모든 실패를 유지하고 노이즈를 제거하며, 아무것도 손실되지 않습니다: expand 명령은 잘린 내용을 복원합니다.
새로운 git worktree는 인덱싱된 상태로 시작합니다. 연결된 worktree는 초기화되지 않고(starting cold) 기본 체크아웃에서 인덱스를 시딩합니다.
사용자가 의존하는 외부 시스템을 알고 있습니다. PyPI, npm, Cargo, Go, NuGet, Maven 및 CMake 전반의 패키지 매니페스트는 코드가 도달하는 서비스와 라이브러리의 지도를 제공합니다.

이 리포지토리와 워크스페이스에서 기록된 내용: 에이전트가 인덱스를 요청하고, 동일한 로컬 인덱스에서 대시보드 및 CLI를 사용하는 모습. API 키나 업로드된 내용은 없습니다.
| 만약 다음 사항에 관심이 있다면... | 시작하기 |
|---|---|
| A 코드를 아는 코딩 에이전트 | 호출 횟수를 줄이고, 에이전트가 요청하기 전에 결정과 위험을 제공하는 작업 기반 컨텍스트. 에이전트를 위한 기능 ↓ |
| 안전한 풀 리퀘스트와 빠른 CI | 변경 위험, 심볼 레벨 호출자, 누락된 공동 변경 사항 및 diff에 필요한 테스트. 변경 인텔리전스 ↓ |
| 가장 문제가 될 가능성이 높은 코드를 개선하기 | 결함 검증이 완료된 건강 점수, 그리고 구체적인 수정 방안. 코드 건강도 ↓ |
| 여러 리포지토리의 집합체 | 여러 리포지토리에 걸쳐 일치하는 계약(Contracts), 브레이킹-체인지 가드, CI에서의 아키텍처 규칙, 모든 것을 위한 단일 MCP 엔드포인트. 워크스페이스 ↓ |
| 회사 전체에 배포하기 | 네트워크 외부로 아무것도 나가지 않는 자체 호스팅 방식, 언어별 정확도, 크기 측정, 규정 준수 상태 및 라이선싱을 한 곳에서 관리. 팀 및 엔터프라이즈 ↓ |
당신의 에이전트가 리포지토리에 대해 던지는 모든 질문에는 미리 계산될 수 있는 답이 있습니다. 이 함수를 누가 호출하는가? 내가 변경하면 무엇이 깨지는가? 왜 이렇게 작성되었는가? 실제로 위험한 파일은 무엇인가? 인덱스가 없으면, 에이전트는 매 작업마다 그 답을 재발견해야 합니다: grep, 읽기, 다시 읽기, 잊기.
Repowise는 Claude Code, Codex, Cursor, VS Code 및 기타 모든 MCP 호스트에 그래프, git, 문서, 결정의 단일 인덱스를 기반으로 10가지 작업 기반 MCP 도구를 제공합니다. 대부분의 코드 도구는 데이터 엔티티, 즉 파일 하나 또는 심볼 하나를 중심으로 구축되어 있어 에이전트가 긴 순차적 호출 체인에 빠지게 만듭니다. 반면, 이것들은 작업을 중심으로 합니다: 여러 대상을 단일 호출로 전달하고 전체 그림을 되돌려 받습니다.
도구 목록 ↓
토큰(tokens)에 대하여. 이 카테고리의 모든 도구는 토큰 비용을 절감할 것을 약속하며, 이런 도구들이 많이 있습니다. 우리는 토큰이 증상이라고 생각합니다. 에이전트가 코드베이스를 알지 못하기 때문에 토큰을 소모합니다. 그래서 검색하고, 파일을 열고, 더 많은 파일을 열고, 다시 검색하는 식입니다. 이미 알고 있는 인덱스를 제공하면 절감액은 저절로 나타납니다. 또한 우리가 측정한 것 중 가장 뛰어난 성능을 보였습니다: django/django에 대한 43개 질문의 쌍으로 이루어진 에이전트 루프에서 Repowise는 에이전트 자체 출력량을 31.6% (p<0.0001) 줄였고, 다른 모든 컨텍스트 도구보다 적은 7.2회 대신 3.8회의 도구 호출로 이를 달성했습니다. 42개의 봉인된 검색(sealed retrieval) 작업에서 다음 도구가 0.610의 파일을 찾았을 때, Repowise는 수정이 필요한 파일 중 0.876을 찾아냈습니다. 방법과 우리가 잃는 모든 행 →
컨텍스트가 에이전트가 요청하기 전에 도착합니다. 선택적 후크(Optional hooks)를 사용하면 필요할 때 세션에 정보를 밀어 넣을 수 있습니다: 에이전트가 파일을 편집하는 결정적인 순간에는 그 결정이 다루는 내용을 제공하고, 최근 버그 수정 이력이 있는 파일에 접근할 때는 경고를 주며, 세션 시작 시에는 간략한 브리핑을 제공하고, 존재하지 않는 경로를 찾으려고 할 때에는 수정을 제공합니다.
작업 방식으로부터 학습합니다. 트랜스크립트 캡처(repowise decision source set session --on)를 활성화하면 Repowise가 사용자가 계속해서 수정하는 에이전트의 자체 트랜스크립트를 읽어, 지속적인 개선 사항들을 추적된 결정으로 변환하여 나중에 전달합니다. 트랜스크립트는 절대 사용자 기기를 벗어나지 않으며; 업데이트당 하나의 배치 모델 호출로 결정론적 게이트를 통과한 후보들을 기록으로 만들고, --no-llm을 사용하면 게이트만 유지하고 해당 호출은 생략합니다.
인덱스가 구축하는 것
다섯 개의 레이어, 하나의 인덱스:
| 레이어 | 기여하는 바 |
|---|
- 그래프 | 26개 AST 파싱 언어에 걸친 파일 및 심볼 의존성, 신뢰도 스탬프가 찍힌 호출 해결(call resolution), 커뮤니티, 중심성(centrality), 사이클 및 실행 흐름 |
- Git 히스토리 | 핫스팟(Hotspots), 소유권(ownership), 공동 변경(co-change), 버스 팩터(bus factor) 및 버그 수정 이력: 정적 분석으로는 볼 수 없는 행동 신호 |
- Docs | 모든 모듈과 파일에 대한 위키, 하이브리드 검색, 그리고 코드가 더 이상 지원하지 않는 주장에 대해 트리를 기준으로 검사하는 사용자의 마크다운 |
- Decisions | ADR(Architectural Decision Records)로부터의 아키텍처 근거, 인라인 마커, 커밋, PR 및 에이전트 세션: 각 주장(claim)은 증거로 추적됨 |
- Health and change | 결함 위험(defect risk), 유지보수성(maintainability) 및 성능에 걸친 53개 결정론적 검출기(deterministic detectors), 변경 위험(change risk), 테스트 영향도(test impact), 데드 코드(dead code) 및 구체적인 리팩토링 계획 |
구조화된 위키는 모델이 필요하지 않습니다. 모델로 작성된 산문은 선택적 업그레이드이며, 한 페이지 또는 디렉터리 단위로 적용할 수 있습니다.
에이전트가 셸 명령어로부터 읽어들이는 것 중 대부분은 노이즈입니다: 테스트 통과 결과 300줄 속에 감춰진 4개의 실패, 최근 변경 사항을 물었을 때의 전체 커밋 본문. repowise distill <cmd>
명령어 출력을 에이전트가 읽기 전에 압축하며, 오류를 먼저 표시하고 종료 코드는 보존합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기