aouicher/graphmind
요약
GraphMind는 코드베이스를 지식 그래프로 변환하여 AI가 아키텍처를 이해하고 탐색할 수 있게 돕는 도구입니다. 원시 검색 대비 토큰 사용량을 최대 5,700배 절감하며, Claude Code 및 Cursor 등 다양한 AI 어시스턴트와 호환됩니다.
핵심 포인트
- 코드베이스를 구조적 그래프와 의미론적 임베딩으로 변환
- 세션 간 유지되는 지속적 메모리 및 프로젝트 간 의존성 파악 기능
- 원시 검색 대비 획기적인 토큰 절약(최대 5,700배)
- 로컬 실행 기반의 보안 및 프라이버시 강화
- Claude Code, Cursor, MCP 등 주요 AI 도구와 통합 지원
당신의 코드베이스에는 형태가 있습니다. 이제 당신의 AI가 그 형태를 보고, 기억할 수 있습니다.
GraphMind는 당신의 코드베이스를 AI가 쿼리(query), 탐색(navigate)하고 기억할 수 있는 지식 그래프 (knowledge graph)로 변환합니다. 죽은 코드(dead code), 의존성(dependencies), 또는 영향 범위(blast radius)에 대해 질문하세요. 그러면 실제 아키텍처에 기반한 답변을 얻을 수 있습니다.
원시 검색 (raw search) 대비 최대 5,700배 적은 토큰을 사용합니다 (~세션당 약 1,000만 개의 토큰 절약). Claude Code, Cursor, Windsurf, Cline, Zed, Continue 및 모든 MCP 호환 AI 어시스턴트와 함께 작동합니다.
CLI + Claude MCP 통합 |
데스크톱 앱 — Mac & Windows |
모든 새로운 AI 세션은 제로 상태에서 시작됩니다. 어시스턴트는 코드베이스 전체를 다시 읽고, 아키텍처를 다시 발견하며, 당신이 지난번에 설명했던 모든 결정을 잊어버립니다. 여러 프로젝트에 걸쳐 공유되는 의존성에 대해서는 가시성이 전혀 없습니다.
graphmind는 네 가지 레이어를 통해 이 문제를 해결합니다:
구조적 그래프 (Structural graph)— 레포지토리(repo)당 함수 수준의 지식 그래프 (AST 기반, tree-sitter, 30개 이상의 언어 지원)
의미론적 임베딩 (Semantic embeddings)— 심볼(symbols)에 대한 벡터 검색 (로컬 ONNX, OpenAI 또는 Voyage AI)
지속적 메모리 (Persistent memory)— 결정, 패턴, 컨벤션(conventions)을 위한 선언적 저장소 — 세션 간에도 유지됨
프로젝트 간 링크 (Cross-project links)— 등록된 레포지토리 간의 의존성 및 관계
모든 것은 로컬에서 실행됩니다. 클라우드 없음. 기본적으로 열린 포트 없음. 텔레메트리(telemetry) 없음.
토큰 사용량 비교: grep -r
(원시 파일 검색) vs graphmind search
약 10만 라인(LOC) 규모의 코드베이스에서 동일한 쿼리에 대해 실행했을 때, graphmind는 300개 미만의 토큰으로 순위가 매겨진 구조화된 결과를 반환하는 반면, 원시 grep 출력은 150만 개 이상의 토큰이 소모됩니다.
Releases에서 .dmg를 다운로드하세요.
앱이 CLI를 대신 설치해주며, MCP, 훅(hooks), 스킬(skill), 임베딩(embeddings)을 구성하는 가이드형 온보딩을 실행합니다 — 터미널이 필요하지 않습니다.
| 플랫폼 | 에셋 |
|---|---|
| macOS (Apple Silicon) | GraphMind-macos-arm64.dmg |
| macOS (Intel) | GraphMind-macos-x64.dmg |
Linux / Windows: CLI 전용 — 아래의 셸 스크립트 또는 직접 다운로드를 사용하세요.
curl -fsSL https://raw.githubusercontent.com/aouicher/graphmind/main/scripts/install.sh | bash
그 다음 graphmind setup을 실행하세요.
Claude Code, hooks 및 skill을 구성하려면 한 번 실행하세요.
brew install aouicher/graphmind/graphmind # CLI
brew install --cask aouicher/graphmind/graphmind # 데스크톱 앱 (macOS 전용)
curl -fsSL https://github.com/aouicher/graphmind/releases/latest/download/graphmind-cli-linux-x64 -o ~/.local/bin/graphmind
chmod +x ~/.local/bin/graphmind
git clone https://github.com/aouicher/graphmind
cd graphmind
cargo build --release -p graphmind-cli
...
graphmind setup # 한 번만 실행 — Claude Code, Claude Desktop, hooks, skill 구성
cd ~/projects/myapp
graphmind init # 프로젝트별 — 등록 및 git hook 설치, 그래프 빌드
이것으로 끝입니다. Claude Code, Claude Desktop, Cursor, 그리고 VS Code가 graphmind를 자동으로 사용하게 됩니다.
모든 AI 도구가 graphmind를 사용할 수 있도록 시스템을 구성합니다:
- Shell PATH (
~/.zshenv,~/.zshrc,~/.bashrc) - Claude Code hooks (grep/find 재작성, 세션 컨텍스트 주입, 프롬프트 시 사전 가져오기) - Claude Code skill (
/gm+ 19개 하위 스킬) - Claude Desktop MCP (~/Library/Application Support/Claude/claude_desktop_config.json) - Claude Code MCP (
~/.claude/settings.json) - OpenCode MCP (~/.config/opencode/opencode.jsonc) - Cursor global MCP (
~/.cursor/mcp.json) — 모든 Cursor 프로젝트에서 사용 가능 - CLAUDE.md instruction block (~/.claude/CLAUDE.md)
프로젝트를 등록하고 인덱싱한 다음, 프로젝트 수준의 구성을 지원하는 에디터에 대한 MCP 설정을 작성합니다:
- graphmind 레지스트리에 현재 디렉토리 등록
- MCP 프로젝트 구성 — 자동으로 작성됨:
- Claude Code:
~/.claude.json내projects.<path>.mcpServers(로컬 범위) - VS Code:
<project>/.vscode/mcp.json - Claude Code:
- Git hooks (커밋 시 자동 재빌드, 푸시 시 영향도 확인)
- 코드 그래프 빌드
cd ~/projects/api && graphmind init
cd ~/projects/web && graphmind init
cd ~/projects/lib && graphmind init
두 명령어 모두 반복 실행해도 안전합니다 (idempotent).
클릭하여 확장
claude mcp add graphmind -- graphmind mcp
또는 ~/.claude/settings.json에서 수동으로 설정할 수 있습니다.
:
{
"mcpServers": {
"graphmind": {
...
graphmind init 명령은 이를 ~/.claude.json에 자동으로 기록합니다.
:
{
"projects": {
"/absolute/path/to/project": {
...
Claude Desktop은 셸의 PATH (PATH 환경 변수)를 상속받지 않습니다. 전체 경로(full path)를 사용하세요:
{
"mcpServers": {
"graphmind": {
...
설정 파일 위치:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
팁: 시스템에서 올바른 경로를 찾으려면 which graphmind를 실행하세요.
graphmind setup은 이를 ~/.cursor/mcp.json에 자동으로 기록합니다.
{
"mcpServers": {
"graphmind": {
...
graphmind init은 이를 <project>/.vscode/mcp.json에 자동으로 기록합니다.
{
"servers": {
"graphmind": {
...
graphmind install hook-claude는 다음 항목들을 위해 ~/.claude/settings.json에 훅 (hooks)을 등록합니다:
PreToolUse— grep/find/rg를 graphmind search로 다시 작성하며, Grep/Glob/LS 도구에 그래프 결과를 제공합니다.
SessionStart— 세션 시작 시 프로젝트 컨텍스트 (통계, 구조)를 로드합니다.
UserPromptSubmit— 사용자의 프롬프트에 기반하여 관련 그래프 컨텍스트를 미리 가져옵니다 (pre-fetches).
PostToolUse— 그래프 인지적 (graph-aware) 제안으로 결과를 풍부하게 합니다.
내장된 지능:
철저한 검색 우회 (Exhaustive search bypass)— "모든 발생 사례 찾기", grep -c, wc / sort로 연결되는 파이프 등을 감지하여 그대로 통과시킵니다.
캐시 중복 제거 (Cache deduplication)— 5분 이내의 동일한 검색은 건너뜁니다 (0 토큰 비용).
패턴 추출 (Pattern extraction)— grep, find, fd, rg 명령 및 에이전트 (Agent) 프롬프트에서 의미 있는 검색어를 추출합니다.
graphmind install skill
graphmind sync # 현재 프로젝트의 CLAUDE.md를 업데이트합니다
graphmind sync --all # 등록된 모든 프로젝트의 CLAUDE.md를 업데이트합니다
graphmind install hook-git
┌─────────────────────────────────────────────┐
│ Claude Code / MCP Client │
├─────────────────────────────────────────────┤
...
graphmind search는 세 가지 검색 전략 (retrieval strategies)을 하나의 순위가 매겨진 결과 (ranked result)로 결합합니다:
graphmind search "<query>" # 하이브리드 검색 (FTS + semantic + graph)
graphmind search "<q1>; <q2>" # RRF 랭킹을 사용한 멀티 쿼리 (multi-query)
graphmind search "<query>" --kind function
FTS5— 심볼 이름, 시그니처(signatures), 문서(docs)에 대한 정확한 텍스트 매칭 (exact text matching)
Semantic embeddings— 코사인 유사도 (cosine similarity)를 통해 개념적으로 관련된 심볼을 찾음 (예: "money transfer" → payment_service)
Graph expansion— 상위 결과는 구조적 그래프 (structural graph)로부터 1-hop 호출자/피호출자 (callers/callees)를 통해 확장됨
결과는 상호 순위 결합 (Reciprocal Rank Fusion, RRF, k=60)을 통해 융합됩니다. 각 결과는 출처를 표시합니다: [FTS], [SEM], [GRAPH], 또는 [FTS+SEM+G]와 같은 조합.
~/.graphmind/config.json에서 설정 가능합니다:
{
"embedding": {
"mode": "voyage",
...
| 모드 (Mode) | 모델 (Model, 기본값) | 비고 (Notes) |
|---|---|---|
local | nomic-embed-text-v1.5 (768d) | ONNX 사용, API 키 불필요 |
openai | text-embedding-3-small (1536d) | 커스텀 openai_base_url 지원 |
voyage | voyage-code-3 (1024d) | 코드 특화, 권장됨 |
disabled | — | 임베딩 없음 — 신규 설치 시 기본값 |
프로바이더 (provider)가 설정되어 있으면 graphmind build 중에 임베딩이 자동으로 계산됩니다. 모델이 변경되면 임베딩 인덱스 (embedding index)가 자동으로 재구축됩니다.
OpenAI 호환 프로바이더 (Azure, 프록시)는 커스텀 베이스 URL (base URL)을 설정할 수 있습니다:
{
"embedding": {
"mode": "openai",
...
graphmind는 Claude에게 세션 전반에 걸친 지속적인 메모리 (persistent memory)를 제공합니다. 이는 단순한 코드를 넘어 결정 사항, 패턴, 컨벤션 (conventions), 그리고 컨텍스트 (context)를 포함합니다.
메모리는 **완전 자동 (fully automatic)**으로 작동합니다:
자동 회상 (Auto-recall)— 각 프롬프트 시점에서, 훅 (hook)이 메모리에서 관련 컨텍스트를 검색하여 대화에 주입합니다. 별도의 조치가 필요하지 않습니다.
자동 저장 (Auto-save)— Claude가 중요한 사실 (결정 사항, 패턴, 컨벤션, 버그, 컨텍스트)을 묻지 않고 선제적으로 저장합니다. 무엇이 저장되었는지에 대한 짧은 언급을 볼 수 있습니다.
이는 Claude Code (훅을 통해)와 Claude Desktop (MCP 인스트럭션을 통해) 모두에서 작동합니다.
| 유형 (Type) | 예시 (Examples) |
|---|---|
decision | 아키텍처 선택 (Architecture choices), 기술적 결정 (tech decisions), 트레이드오프 해결 (trade-off resolutions) |
pattern | 반복되는 접근 방식 (Recurring approaches), 솔루션 (solutions), 코드 패턴 (code patterns) |
convention | 명명 규칙 (Naming rules), 워크플로우 컨벤션 (workflow conventions), 스타일 가이드 (style guides) |
bug | 알려진 이슈 (Known issues), 워크아라운드 (workarounds), 주의사항 (gotchas) |
context | 비즈니스 컨텍스트 (Business context), 프로젝트 목표 (project goals), 사용자 선호도 (user preferences) |
메모리는 ~/.graphmind/memory/ 내의 JSONL 파일로 저장됩니다.
:
global.jsonl
— 프로젝트 전반에 걸친 지식 (사용자 선호도, 팀 컨벤션)
<project-slug>.jsonl
— 프로젝트별 특정 사실 (project-specific facts)
graphmind memory add "<fact>" [--project <slug>] [--global]
graphmind memory search "<query>"
graphmind memory list
...
메모리는 명시적으로 삭제될 때까지 무기한 유지됩니다. 메모리는 자동으로 호출되므로, "X를 기억하나요?"라고 물어볼 필요가 전혀 없습니다.
graphmind setup # 글로벌 1회 설정 (hooks, MCP, skill)
graphmind init [path] # 프로젝트별 설정 (register, git hooks, build)
graphmind init --skip-build # 빌드 없이 프로젝트별 설정
graphmind register [path] # 현재 디렉토리 등록
graphmind unregister <slug> # 프로젝트 제거
graphmind list # 모든 프로젝트 목록
...
graphmind build [slug] # 증분 빌드 (incremental build)
graphmind build --all # 모든 프로젝트 빌드
graphmind build --full # 강제 전체 재빌드 (force full rebuild)
...
graphmind query <symbol> # 심볼 및 연결 관계 찾기
graphmind query <symbol> --file <path> # 특정 파일로 필터링
graphmind query <symbol> --kind function # 종류(kind)별 필터링
...
graphmind search "<query>" # 하이브리드 FTS + 시맨틱 + 그래프 검색
graphmind search "<q1>; <q2>" # 다중 쿼리
graphmind search "<query>" --kind class
...
graphmind embed # 임베딩 인덱스 상태 표시
graphmind embed --run # 현재 프로젝트에 대한 임베딩 생성
graphmind embed --run --all # 모든 프로젝트에 대한 임베딩 생성
graphmind memory add "<fact>" [--project <slug>] [--global]
graphmind memory search "<query>"
graphmind memory list
...
graphmind cross query <symbol> # 모든 프로젝트에 걸쳐 검색
graphmind cross deps <slug> # 이 프로젝트에 의존하는 대상 확인
graphmind cross links # 모든 프로젝트 간 관계 확인
...
graphmind export [slug] -f dot # Graphviz dot 형식
graphmind export [slug] -f mermaid # Mermaid 다이어그램
graphmind export [slug] -f json # JSON 그래프
...
graphmind exclude list # 모든 패턴 표시
graphmind exclude add grafana-data # 현재 프로젝트에서 제외
graphmind exclude add grafana-data --global
...
코드 그래프와 아키텍처 메모리 (architectural memories)를 팀 전체와 공유하세요. 모든 팀원은 재인덱싱 (re-indexing) 없이 동일한 구조적 이해도를 갖게 됩니다.
graphmind team init [--team-id <id>] # 팀에 연결
graphmind team push [slug] # 그래프 + 공유 메모리 푸시 (push)
graphmind team push --memories-only # 메모리만 푸시
...
자동 동기화 (Auto-sync) (Team 티어): graphmind build 실행 후 그래프가 자동으로 푸시됩니다.
메모리 프라이버시 (Memory privacy): 프라이빗 (is_shared: false)으로 표시된 메모리는 절대 기기를 벗어나지 않습니다.
MCP 도구 (MCP tools):
gm_team_memories (공유 컨텍스트 (shared context))
gm_team_who_knows (어떤 사용자가 심볼 (symbol)을 문서화했는지 확인)
graphmind session start [slug] # 세션 시작 로그 기록
graphmind session save ["message"] # 세션 요약 저장
graphmind session history [slug] # 최근 세션 목록
graphmind install hook-claude # Claude Code 검색 훅 (hook)
graphmind install hook-git # git 훅 (post-commit + pre-push)
graphmind install skill # Claude Code 스킬 (skill)
...
graphmind update # 최신 버전 다운로드 및 설치
graphmind update --check # 설치 없이 업데이트 확인
Homebrew를 통해 설치한 경우, 대신 brew upgrade graphmind를 사용하세요.
데스크톱 앱 또한 시작 시 CLI 업데이트를 확인하고 원클릭 업데이트를 제공합니다.
MCP 응답은 LLM이 소비하기 최적화되어 있습니다 — 최소한의 토큰 (tokens), 최대한의 신호 (signal).
컴팩트 형식 (Compact format, 기본값): 장황한 JSON 대신 심볼당 한 줄의 텍스트 출력을 제공합니다. 예시:
>> "auth"에 대한 5개의 결과 [FTS+semantic+graph]:
AuthService [Class] src/services/auth.ts:3 (0.95) [FTS+SEM]
implements Service
...
필드 가지치기 (Field pruning): id, null 값인 signature/doc/content, 그리고 불필요한 total_found/projects_searched 필드를 포함하지 않습니다. 유용한 정보만 반환됩니다.
스마트 제한 (Smart limits): 기본값은 50개가 아닌 15개의 결과입니다. 결과가 제한된 경우에만 절단 표시(+N more...)가 나타납니다.
콘텐츠 선택 참여 (Content opt-in): 심볼(Symbol)의 소스 코드는 기본적으로 생략됩니다. 소스 코드를 가져오려면 모든 도구에 include_content: true를 전달하세요.
JSON 모드 (JSON mode): 컴팩트 텍스트 대신 구조화된 JSON 출력을 받으려면 모든 도구에 format: "json"을 전달하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기