Graft 공개: 코딩 에이전트의 코드베이스 기억 상실 해결과 SWE-bench 정답률 12%p 향상
코딩 에이전트의 기억 상실을 해결하는 오픈소스 컨텍스트 그래프 Graft(@nanonets/graft)가 공개되었습니다. 벡터 DB 없이 마크다운 지도를 구축해 SWE-bench 정답률을 54%에서 66%로 높이고 토큰을 23% 절감했습니다.
코딩 에이전트가 매 세션마다 코드베이스를 처음부터 grep하고 import 구문을 뒤적이며 귀중한 컨텍스트를 소모하는 이른바 '코드베이스 기억 상실(Codebase Amnesia)' 문제를 해결하기 위한 오픈소스 컨텍스트 그래프 도구 Graft(@nanonets/graft)가 2026년 9월 공개되었습니다. 별도의 벡터 데이터베이스나 복잡한 인프라 없이 순수 마크다운 파일과 위키링크([[wikilinks]])로 리포지토리의 구조적 지도를 구축하여, 에이전트가 기본 파일 읽기 인터페이스만으로 코드 맥락을 신속하게 파악할 수 있도록 설계된 도구입니다.

이미지 출처: Ryan Hart (@thisdudelikesAI) / NanoNets
공식 SWE-bench Verified 50개 인스턴스를 대상으로 진행된 동일 환경(Claude Sonnet 5 기준) 벤치마크에서 Graft를 연동했을 때 작업 해결률이 54%(27/50)에서 66%(33/50)로 12%p 상승했습니다. 이와 동시에 전체 토큰 소비량은 23% 감소하고, 도구 호출 횟수는 25% 줄어드는 등 작업 효율과 비용 측면에서 뚜렷한 개선 지표를 나타냈습니다.
벡터 DB 없는 마크다운 그래프: 에이전트 친화적 코드 구조화
Graft의 핵심 차별점은 별도의 벡터 임베딩 파이프라인이나 전용 데이터베이스를 요구하지 않는다는 점입니다.
기존의 코드 검색 도구들이 RAG(검색 증강 생성) 기반 벡터 유사도 검색에 의존했던 반면, Graft는 코드베이스의 시스템, API, 핵심 도메인 개념을 리포지토리 내부의 마크다운 노드(graft/*.md)와 상호 위키링크([[wikilinks]])로 표현합니다.
- 표준 파일 인터페이스 활용: 에이전트는 특화된 벡터 API나 검색 SDK를 별도로 호출할 필요 없이, 평소 소스 코드를 열람하듯 마크다운 문서를 읽고 연결된 위키링크를 따라가며 아키텍처 맥락을 추적할 수 있습니다.
- Tree-sitter 기반의 제로 코스트 파싱: 외부 LLM 호출이나 네트워크 통신 없이 로컬의 Tree-sitter 구문 분석 엔진을 활용해 정적 구조를 분석합니다. 비용 발생 없이 20개 이상의 주요 언어(TypeScript, Python, Go, Rust, C++ 등)를 지원합니다.
- 버전 관리 친화성: 생성된 그래프 문서가 깃(Git) 리포지토리 안에 평문 마크다운으로 보관되므로, 팀 내 개발자와 에이전트가 동일한 코드 구조 문서를 투명하게 검토하고 공유할 수 있습니다.
SWE-bench Verified 50개 인스턴스 실측: 66% 해결률과 리소스 절감
Claude Sonnet 5를 기반으로 한 통제된 SWE-bench Verified 50개 인스턴스 비교 평가에서 Graft는 단순한 탐색 속도 향상을 넘어 실제 버그 해결 성공률의 질적 도약을 보였습니다.
| 지표 | Claude Sonnet 5 베이스라인 | Graft 연동 환경 | 개선율 |
|---|---|---|---|
| 해결률 (Solve Rate) | 27 / 50 (54%) | 33 / 50 (66%) | +12%p |
| 총 토큰 소비량 | 142.0M | 109.4M | -23% |
| 도구 호출 횟수 | 1,370회 | 1,031회 | -25% |
| 작업 소요 시간 | 13,094초 | 8,922초 | -32% |
| 총 API 비용 | $52.34 | $42.43 | -19% |
이러한 성능 향상의 주된 원인은 코딩 에이전트의 고질적인 약점인 '단일 파일 수정 편향'의 극복에 있습니다. 기존 에이전트는 버그 리포트와 직접적으로 일치하는 단일 파일만 수정한 뒤 연관 의존성 파일을 놓쳐 회귀 테스트에서 실패하는 경향이 잦았습니다.
실제 벤치마크 사례 중 django-11532 이슈의 경우, 기본 Claude Code는 5개 수정 대상 파일 중 1개 파일만 수정하여 18개 테스트 실패를 겪었습니다. 반면 Graft를 연동한 환경에서는 마크다운 연결 노드를 통해 의존 관계에 있는 파일들을 사전에 식별함으로써 수정 대상 전체를 정확하게 패치하여 테스트를 통과했습니다.
2단계 설치 경로와 실무 도입 시 고려사항
Graft는 복잡한 사전 설정 없이 단 두 줄의 명령어로 기존 프로젝트에 즉시 도입할 수 있습니다.
# 글로벌 CLI 설치
npm install -g @nanonets/graft
# 리포지토리 루트에서 컨텍스트 그래프 초기화
graft init
초기화가 완료되면 Claude Code, Cursor, Codex 등 표준 파일 시스템 접근 권한을 갖춘 주요 코딩 에이전트 환경에서 즉시 마크다운 컨텍스트를 활용할 수 있습니다.
다만 프로덕션 환경 도입 시에는 다음과 같은 실무적 제약 사항을 함께 검토해야 합니다.
- 벤치마크 표본 및 편향 한계: 공개된 SWE-bench Verified 결과는 50개 샘플 인스턴스를 대상으로 한 단일 실행 결과이며 분산(variance)이 보고되지 않았습니다. 또한 제어 실험에 포함된 2개 벤치마크 대상 리포지토리 중 하나가 Graft 자체 코드베이스였다는 점을 감안해야 합니다.
- 자연어 요약 노드 생성 시 LLM 비용: Tree-sitter 기반의 기본 정적 구조 파일(
wiring.json)은 로컬에서 무료로 동작하지만, 파일별 고도화된 자연어 요약 노드를 구축하는graft build --deep명령을 수행할 때는 LLM API 호출에 따른 추가 비용이 발생합니다. - 코드 리팩토링과 최신성(Stale Context) 관리: 대규모 코드 변경이나 디렉토리 재구성이 빈번하게 일어나는 리포지토리에서는 마크다운 노드가 이전 구현을 가리키는 문제가 발생할 수 있습니다. 주기적인
graft build실행이나 변경 감지 캐시 핑거프린트 기반의 갱신 체계를 수립하는 것이 권장됩니다.
출처
- NanoNets Graft GitHub 저장소: NanoNets/Graft — 공식 오픈소스 리포지토리, CLI 사용법 문서, Tree-sitter 파서 및 아키텍처 명세.
- Ryan Hart (@thisdudelikesAI) X 게시물: Graft 릴리즈 및 SWE-bench 벤치마크 분석 — 벤치마크 평가 방법론, 자원 소비 비교 지표 및 단일 파일 수정 한계 극복 사례 분석.