code-review-graph: AI 코드 리뷰의 컨텍스트를 줄이는 방법
date
Apr 20, 2026
slug
code-review-graph-ai-code-review-context
author
status
Public
tags
Blog
Github
Study
AI
summary
Tree-sitter와 MCP로 코드베이스를 그래프화해 Claude Code와 Codex의 리뷰 컨텍스트를 줄이는 code-review-graph의 작동 원리와 적용법을 정리합니다.
type
Post
thumbnail
category
📗 Docs
updatedAt
May 5, 2026 02:50 PM
AI 코드 리뷰를 하다 보면 생각보다 큰 낭비가 자주 생깁니다. PR에서 실제로 바뀐 코드는 몇 줄인데, 에이전트는 관련 가능성이 있는 파일을 넓게 읽기 시작합니다. 레포가 커질수록 이 문제는 더 커지고, 토큰 비용도 늘어나고, 모델이 봐야 할 맥락도 흐려집니다.
code-review-graph는 이 문제를 조금 다른 방식으로 해결한다고 해서 공부해보았습니다. 코드 전체를 매번 읽히는 대신, 로컬에서 코드베이스를 구조화된 그래프로 만들어 두고 Claude Code나 Codex 같은 AI 코딩 도구가 필요한 부분만 먼저 조회하게 만듭니다.code-review-graph가 하는 일
한 줄로 정리하면,
code-review-graph는 코드베이스를 Tree-sitter로 파싱해서 함수, 클래스, 파일, 테스트, 호출 관계를 그래프 DB에 저장하고, 그 그래프를 MCP 서버로 노출하는 도구입니다.여기서 중요한 포인트는 “AI가 코드를 더 많이 읽게 하는 것”이 아니라 “읽기 전에 영향 범위를 좁히게 하는 것”입니다.
예를 들어 로그인 함수가 바뀌었다면 에이전트가 전체
src를 훑는 대신 이런 질문을 먼저 할 수 있습니다.- 이 함수의 caller는 누구인가요?
- 이 파일을 import하는 파일은 무엇인가요?
- 이 변경으로 영향을 받을 flow는 무엇인가요?
- 관련 테스트는 있나요?
- 변경된 함수 중 risk가 높은 것은 무엇인가요?
이 질문에 대한 답을 그래프에서 먼저 받은 뒤, 정말 필요한 파일만 읽는 방식입니다.
내부 작동 방식
전체 흐름은 단순합니다.
Repository -> Tree-sitter parsing -> File/Class/Function/Test nodes 추출 -> CALLS/IMPORTS_FROM/INHERITS/TESTED_BY edges 추출 -> SQLite graph DB 저장 -> MCP tools로 Claude Code, Codex에 제공
처음에는 전체 빌드를 합니다.
code-review-graph build
이때
git ls-files 기준으로 추적 중인 파일을 수집하고, .gitignore와 .code-review-graphignore에 걸리는 파일은 제외합니다. 각 파일은 Tree-sitter로 파싱되고, 결과는 .code-review-graph/graph.db에 저장됩니다.이후에는 매번 전체를 다시 만들지 않습니다.
code-review-graph update
update는
git diff로 변경 파일을 찾고, 해당 파일을 import하거나 의존하는 파일만 추가로 확인합니다. 파일 hash가 이전과 같으면 skip하기 때문에 큰 레포에서도 변경분 중심으로 그래프를 갱신할 수 있습니다.핵심 개념: Blast Radius
code-review-graph의 핵심은 blast radius 분석입니다. blast radius는 이번 변경이 영향을 줄 수 있는 코드 범위를 의미합니다.구현상으로는 변경된 파일 안의 graph node를 seed로 잡고 BFS를 수행합니다. 이때 양방향으로 탐색합니다.
- forward: 이 노드가 호출하거나 의존하는 대상
- reverse: 이 노드를 호출하거나 의존하는 대상
기본 depth는 2 hop입니다. 결과로 impacted nodes, impacted files, 연결 edge를 얻습니다.
주의할 점은 이 결과가 “반드시 깨지는 파일 목록”은 아니라는 점입니다. 정적 분석 기반이므로 동적 호출, DI, framework convention, reflection 같은 패턴은 놓칠 수 있습니다. 그래서 이 도구는 정답 생성기라기보다 리뷰 후보군을 줄이는 pre-filter에 가깝습니다.
Risk Score는 무엇을 보는가
detect_changes 계열 도구는 변경된 함수나 클래스를 찾아 risk score를 계산합니다. 이 점수는 코드 품질 점수라기보다 리뷰 우선순위에 가깝습니다.주요 기준은 다음과 같습니다.
- 중요한 실행 flow에 포함되는가
- 여러 community에서 호출되는가
- 테스트가 부족한가
auth,token,password같은 보안 관련 이름인가
- caller가 많은가
점수가 높은 항목은 사람이 먼저 보거나, AI에게 source snippet을 더 읽게 만들면 됩니다.
Claude Code에 적용하기
Claude Code는 이 도구와 가장 자연스럽게 붙습니다. 설치하면
.mcp.json, CLAUDE.md, .claude/skills, hooks 설정까지 자동으로 만들어집니다.pipx install code-review-graph cd /path/to/repo code-review-graph install --platform claude-code -y code-review-graph build
Claude Code에서는 slash command로 사용할 수 있습니다.
/code-review-graph:build-graph /code-review-graph:review-delta /code-review-graph:review-pr
자연어로 요청할 때는 이렇게 말하면 됩니다.
code-review-graph를 먼저 사용해서 현재 변경사항을 리뷰해줘. get_minimal_context_tool로 시작하고, risk가 높으면 detect_changes_tool과 get_review_context_tool로 확장해줘. 전체 파일을 먼저 읽지 말고 impacted files 중심으로 봐줘.
Codex에 적용하기
Codex도 MCP를 사용할 수 있으므로 같은 방식으로 붙일 수 있습니다.
pipx install code-review-graph cd /path/to/repo code-review-graph install --platform codex -y code-review-graph build
자동 설치는
~/.codex/config.toml에 MCP 서버를 추가합니다.[mcp_servers.code-review-graph] command = "uvx" args = ["code-review-graph", "serve"] type = "stdio"
여러 레포를 오가거나 실행 위치가 불명확하면
--repo를 명시하는 편이 안전합니다.[mcp_servers.code-review-graph] command = "uvx" args = ["code-review-graph", "serve", "--repo", "C:\\path\\to\\repo"] type = "stdio"
Codex에서는 Claude Code처럼 slash command 경험이 자동으로 붙는 것은 아니므로, 레포 루트의
AGENTS.md에 graph-first 지침을 추가하는 것을 권장합니다.## code-review-graph 사용 규칙 코드 탐색, 리뷰, 영향 범위 분석을 할 때는 파일 전체를 먼저 읽지 말고 code-review-graph MCP 도구를 우선 사용합니다. 권장 순서: 1. get_minimal_context_tool(task="<작업 설명>") 2. detect_changes_tool(base="origin/main", detail_level="minimal") 3. risk가 높으면 get_review_context_tool 또는 get_impact_radius_tool로 확장합니다. 4. 부족한 경우에만 rg, file read로 fallback합니다.
언제 효과가 큰가
이 도구는 모든 상황에서 무조건 이득이 되는 도구는 아닙니다. 작은 단일 파일 변경에서는 그래프 메타데이터가 원본 파일보다 더 클 수 있습니다. 반대로 큰 레포, 모노레포, 다중 파일 PR에서는 효과가 커집니다.
특히 다음 상황에 잘 맞습니다.
- PR 리뷰 전에 영향 범위를 빠르게 좁히고 싶을 때
- 리팩터링 전 caller/callee/test 관계를 확인하고 싶을 때
- 신규 입사자가 코드 구조를 파악해야 할 때
- 모노레포에서 관련 파일을 사람이 직접 지정하기 어려울 때
도입 시 주의할 점
첫째,
.code-review-graph/는 로컬 DB이므로 커밋하면 안 됩니다. 대신 .code-review-graphignore는 팀 공통 규칙으로 커밋하는 편이 좋습니다.둘째, graph freshness가 중요합니다. 그래프가 오래되면 영향 범위도 틀릴 수 있습니다.
code-review-graph status code-review-graph update
또는 watch mode를 사용할 수 있습니다.
code-review-graph watch
셋째, 기본 동작은 로컬이지만 cloud embedding 옵션을 켜면 코드 서명이 외부 API로 나갈 수 있습니다. 회사 코드라면 embedding은 끄거나 local provider, 또는 사내 self-hosted endpoint를 쓰는 편이 안전합니다.
정리
code-review-graph는 AI 코드 리뷰의 컨텍스트 문제를 꽤 현실적인 방식으로 다룹니다. 모델을 더 똑똑하게 만드는 도구라기보다는, 모델이 읽기 전에 무엇을 봐야 하는지 정리해 주는 로컬 코드 인덱스에 가깝습니다.Claude Code에서는 자동화가 잘 되어 있어 바로 적용하기 좋고, Codex에서도 MCP 설정과
AGENTS.md 지침을 추가하면 충분히 활용할 수 있습니다.다만 정적 분석 기반이라는 한계는 분명합니다. 이 도구만으로 리뷰 품질이 보장되지는 않습니다. 대신 테스트, 타입체크, CI, 사람 리뷰와 함께 사용하면 AI가 불필요한 파일을 덜 읽고 중요한 변경부터 보게 만드는 데 도움이 됩니다.
참고
- Codex config reference: https://developers.openai.com/codex/config-reference
- Claude Code MCP docs: https://docs.anthropic.com/en/docs/claude-code/mcp
- Model Context Protocol: https://modelcontextprotocol.io/introduction
- Tree-sitter: https://tree-sitter.github.io/tree-sitter/