Graft

AI MemoryCLITypeScript

★ 7,252주당 +757조회 5

무엇인가

Graft는 코딩 에이전트에 코드베이스 맥락을 공급하는 CLI다. 에이전트가 세션마다 저장소를 처음부터 다시 탐색하는 비용을 없애기 위해, 코드 구조와 개념을 미리 문서화한 그래프를 저장소 안에 두고 프롬프트에 주입하거나 도구 호출로 읽게 한다. 코드 검색·인덱싱 계층에 해당하며 에이전트 자체를 대체하지 않는다.

어떻게 동작하나

`graft build`가 tree-sitter로 소스를 파싱해 시스템·API·개념 단위의 노드를 만들고, 노드끼리 링크로 연결한 마크다운 파일 묶음 `graft/`로 저장한다. 각 노드 본문은 해당 부분이 무엇을 하고 어떻게 연결되는지를 자연어로 쓴 설명이다. 임베딩이나 벡터 인덱스는 쓰지 않는다. 질의 시점마다 작업 트리를 기준으로 그래프를 먼저 재구성하며, 변경이 없으면 약 3ms에 끝난다. `graft check`가 그래프 신선도를 알려준다.

무엇과 다른가

벡터 유사도 검색 기반 RAG와 달리 상시 유지해야 할 검색 인덱스가 없다. 그래프는 에이전트가 다른 파일처럼 열고 grep하고 링크를 따라가는 평범한 파일 집합이다. `graft/`는 `.gitignore`에 자동 등록되는 로컬 캐시이고, 커밋되는 것은 `graft init`이 `.claude/`, `AGENTS.md`, MCP 설정에 남긴 배선뿐이다. 팀원은 각자 `graft build`로 자기 그래프를 생성한다.

어떻게 쓰나

`graft init`이 연동할 에이전트를 묻고 `graft/`를 만든 뒤 `.claude/`에 상태라인과 훅을 넣는다. `--dry-run`으로 건드릴 파일을 먼저 확인하고, `--agents claude`로 프롬프트를 건너뛴다. 전역 설치 없이 `npx @nanonets/graft init`도 동일하게 동작한다. MCP 서버로 노출되어 에이전트가 `graft_find_code`, `graft_file_api` 같은 도구를 호출할 수 있고, `graft ask --source`는 관련 노드를 묶어 프롬프트에 밀어 넣는다. CLI에는 `grep`, `map`, `callers`, `skeleton`, `viz`가 있다.

전제와 한계

노드 요약 생성에는 사용자 자신의 LLM 제공자 키가 필요하며 OpenAI, Anthropic, OpenRouter, Fireworks, Groq, OrcaRouter, LiteLLM 프록시, 로컬 모델 중에서 고른다. 구조 그래프 생성과 `check`는 결정적 tree-sitter 처리로 모델을 호출하지 않는다. 데몬·서버·데이터베이스는 없다. 지원 언어는 README의 Supported languages 절에 열거되어 있다.

유사 도구