<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
<img src="https://raw.githubusercontent.com/graphicle-ai/graphicle/HEAD/assets/logo-light.svg" alt="Graphicle" width="300">
</picture>
</p>
<h3 align="center">코딩 에이전트를 위한 코드 그래프와 메모리를 단일 Rust 프로그램에서 제공합니다.</h3>
<p align="center">
<a href="LICENSE"><img alt="라이선스: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-3D5AFE"></a>
<a href="https://github.com/graphicle-ai/graphicle/releases/latest"><img alt="최신 릴리스" src="https://img.shields.io/github/v/release/graphicle-ai/graphicle?color=3D5AFE"></a>
<img alt="플랫폼: macOS, Linux 및 Windows (미리 보기)" src="https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20Windows%20%28%EB%AF%B8%EB%A6%AC%20%EB%B3%B4%EA%B8%B0%29-3D5AFE">
<a href="https://discord.com/invite/rWuU7cWU4E"><img alt="Discord에서 채팅하기" src="https://img.shields.io/badge/chat-Discord-3D5AFE?logo=discord&logoColor=white"></a>
</p>
<p align="center">
Graphicle은 저장소(repository)를 코드 그래프로 매핑하고, 프로젝트의 문서, 결정 사항 및 과거 에이전트 세션을 기억하며, 코딩 에이전트에게 이 두 가지 모두에서 인용된 발췌문(exact files and lines)을 제공합니다. 이는 사용자의 기기에서 실행되므로 API 키가 필요 없고, 계정이 필요 없으며, 원격 측정(telemetry)도 없습니다.<br>
<sub style="font-size: 0.9em;">Claude Code · Cursor · Codex · VS Code · Claude Desktop · 모든 MCP 클라이언트와 함께 작동합니다.</sub>
</p>
<p align="center">
<a href="#quick-start">빠른 시작</a> · <a href="#how-it-works">작동 방식</a> · <a href="#benchmarks">벤치마크</a> · <a href="docs/quickstart.md">문서</a> · <a href="docs/migrate-from-graphify.md">Graphify에서 오셨나요?</a> · <a href="https://github.com/graphicle-ai/graphicle/discussions">토론</a>
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/graphicle-ai/graphicle/HEAD/assets/hero.gif" alt="터미널에서 4단계 과정. graphicle setup은 작은 저장소를 동기화하고, 코드 그래프를 구축하며, 다섯 개의 에이전트 클라이언트를 찾아 연결한 후 변경된 모든 파일을 나열합니다. graphicle ask는 인용된 네 가지 발췌문(첫 번째 shop/pricing.py의 1~7행, price_with_tax())을 반환합니다. 편집 후에는 graphicle context가 답변하기 전에 변경된 파일을 동기화합니다. graphicle doctor는 18개의 검사를 통과하고 하나의 경고('답변 모델이 설정되지 않음')를 표시합니다." width="860">
</p>
빠른 시작
brew install graphicle-ai/tap/graphicle
cd your-repo
graphicle setup
<sub>Homebrew가 없나요? <code class="language-bash">curl -fsSL https://github.com/graphicle-ai/graphicle/releases/latest/download/install.sh | sh</code> · 릴리스 아카이브 · 다른 설치 방법<br>Windows: x86-64용 미리 보기 빌드이며, 아직 코드 서명이 되어 있지 않습니다(Windows (미리 보기)).</sub>
graphicle setup은 저장소를 인덱싱하고(indexes), 코드 그래프를 구축하며(builds its code graph), 발견된 코딩 에이전트들을 연결합니다. 또한 세션 캡처(session capture) 기능을 활성화하고, AGENTS.md에 두 줄 섹션을 추가하며(Claude Code가 유일한 에이전트인 경우가 아니면), 프로젝트를 최신 상태로 유지하는 Git hooks를 설치합니다. 변경되는 모든 파일을 나열하고 각각을 먼저 백업합니다. graphicle disconnect는 이 모든 것을 되돌립니다.
그런 다음 에이전트에게 *"failed requests가 어디에서 재시도되는지 찾기 위해 graphicle을 사용하라"*고 요청하거나, 터미널에서 직접 요청할 수 있습니다:
$ graphicle ask "가격에 세금이 추가되는 곳은 어디인가요?"
Evidence for "가격에 세금이 추가되는 곳은 어디인가요?"
4 excerpts · 598 of 3,000 tokens
...
<sub>실제 출력이며, 첫 번째 발췌문 이후 잘렸습니다. 모델이 구성되지 않은 경우, <code class="language-bash">ask</code>는 증거(evidence)를 보여줍니다. <code class="language-bash">graphicle config set model anthropic</code> (또는 <code class="language-bash">openai</code>, <code class="language-bash">ollama</code>)을 사용하면 작성된 답변이 추가됩니다.</sub>
<details>
<summary><b class="text-primary">코딩 에이전트에게 설치하도록 맡기세요</b></summary>
Claude Code, Codex 또는 Cursor에 다음 내용을 붙여넣으세요:</details>
Graphicle을 brew install graphicle-ai/tap/graphicle로 설치하거나 (Homebrew가 없는 경우, curl -fsSL https://github.com/graphicle-ai/graphicle/releases/latest/download/install.sh | sh) 실행한 다음, 이 저장소에서 graphicle setup --yes를 실행하고 변경된 모든 파일을 나열하세요.
시작하기 (Start here)
| 원하는 기능 | 실행 명령어 |
|---|
| 코딩 에이전트에게 코드 그래프와 프로젝트의 메모리를 제공 | 저장소에서 graphicle setup |
| ... | |
Graphicle을 사용해야 하는 이유 (Why Graphicle)
- 네이티브하고 빠릅니다. 하나의 Rust 프로그램입니다. 13개 코드베이스에서 Graphicle의 0.1.1 메모리 엔진(pre-release 빌드)은 모든 39개 측정(코드만 추출, 프라이밍 업데이트 및 변경 사항 없는 업데이트, 각각 3개의 CPU와 8개의 워커를 가진 동일한 머신에서 실행)에서 Graphify 0.9.91보다 3.0배에서 22.7배 적은 시간이 소요되었습니다 (코드-전용 추출, 프라이밍 업데이트 및 변경 사항 없는 업데이트). 그래프는 약간 다릅니다: 노드 수는 4.7% 이내, 엣지 수는 2.0% 이내입니다 (속도 테이블). Graphicle의 메모리 변경 사항이 반영된 이후 버전의 pre-release 빌드(그래프 역시 Graphify와 다름)는 모든 39개 측정에서 Graphify 0.9.91보다 적은 최대 메모리를 사용했으며, 이는 Graphify 수치의 0.29배에서 0.97배 사이였습니다 (메모리 테이블).
- 인용된 컨텍스트를 설정한 예산 내에서 제공합니다. 에이전트는 Graphicle에 질문하고, 사용자가 설정한 토큰 예산 내에서 관련 코드, 문서 및 결정을 인용된 발췌문 형태로 받습니다. 저희 테스트에서는 코드를 찾는 데 있어 grep과 비등했으며, 토큰 절약을 주장하지 않습니다 (측정한 내용).
- 검증 가능한 답변을 제공합니다. 모든 발췌문은 파일명과 줄 번호를 명시합니다. 에이전트가 제안하는 메모리는 사용자의 승인을 기다립니다.
- 스택(Stack)이 아닌 하나의 프로그램입니다. 코드 그래프, 메모리, MCP 서버 하나, 웹 앱 및 명령줄 인터페이스가 단일 설치에 포함되며, SQLite 파일 하나로 작동합니다. Python, Docker 또는 데이터베이스 서버가 필요 없습니다.
- 로컬이며 개인 정보 보호됩니다. 계정이나 원격 측정(telemetry)이 없습니다. 사용자의 코드와 데이터는 요청할 때만 장비를 벗어납니다.
유일한 자동 요청은 새로운 릴리스에 대한 일일 확인이며, 이는 GRAPHICLE_NO_UPDATE_NOTIFIER=1로 끌 수 있습니다.
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/graphicle-011-13-repos-dark.svg">
<img src="https://raw.githubusercontent.com/graphicle-ai/graphicle/HEAD/assets/graphicle-011-13-repos-light.svg" alt="Graphicle과 Graphify 0.9.91 (Python)을 13개 코드베이스에서 비교하는 두 개의 막대 차트. 왼쪽은 속도: 코드 전용 추출에 대해 Graphify 0.9.91의 시간을 Graphicle로 나눈 값이며, 가장 높은 순서대로 표시됨: kubernetes 22.7×, rails 7.0×, flask 6.9×, prometheus 6.6×, react 6.2×, scikit-learn 6.1×, pandas 5.8×, vscode 5.4×, ripgrep 5.3×, tokio 5.1×, redis 4.3×, next.js 4.0×, spring-boot 3.3×. 각 막대에는 3가지 작업(코드 전용 추출, 프라이밍 업데이트 및 변경 사항 없는 업데이트)을 가로지르는 선이 있습니다. Graphicle은 39개 측정에서 모두 더 적은 시간을 기록했으며, 모든 실행에서 3.0×에서 22.7×까지 빠릅니다. 속도 레이블: 동일한 머신(CPU 3개, 워커 8개), 프로그램당 세션으로 각각의 Graphicle 0.1.1 메모리 엔진(프리릴리스 빌드)과 Graphify 0.9.91을 비교한 값이며, 측정값은 2026년 10월 15일입니다. (Kubernetes 및 VS Code에 대한 3회 실행의 중앙값). 그래프는 약간 다릅니다: 노드 수는 4.7% 이내, 엣지 수는 2.0% 이내 차이가 납니다. 오른쪽은 최대 메모리 사용량(peak memory): 코드 전용 추출에 대해 Graphicle의 최대치와 Graphify 0.9.91의 최대치를 나눈 값이며, 가장 낮은 순서대로 표시됨: ripgrep 0.31×, flask 0.37×, pandas 0.38×, redis 0.39×, tokio 0.40×, scikit-learn 0.41×, prometheus 0.43×, react 0.50×, next.js 0.51×, vscode 0.52×, kubernetes 0.76×, rails 0.77×, spring-boot 0.94×. 모든 39개 측정에서 Graphify의 최대치 대비 0.29×에서 0.97×로 더 낮으며, 그래프는 Graphify와 다른 프리릴리스 메모리 빌드 기준입니다. Graphicle의 최대 RSS 또는 PSS 중 큰 값과 Graphify의 최대 PSS를 비교했습니다. 병합된 0.1.1 소스 빌드는 재확인된 5개 측정에서도 낮은 수치를 유지했습니다. 속도 및 메모리 표와 방법: docs/benchmarks.md" width="860">
</picture>
</p>
기능
- 코드 그래프(Code graph). 파일, 함수, 클래스, 호출(calls) 및 임포트(imports)를 tree-sitter로 파싱하며 모델이 필요 없습니다.
graphicle graph는 이를 검색하고, 심볼을 설명하며, 경로를 추적하고, 상호작용하는 HTML 그래프로 내보냅니다. graphicle graph extract . --code-only 실행 후, graphicle graph affected "retry()"는 특정 심볼에 의존하는 항목들을 나열합니다.
- 프로젝트 메모리(Project memory). 문서(Markdown, PDF, Office, HTML), 검토된 결정 및 절차, 그리고 과거 Claude Code 및 Codex 세션을 코드와 함께 검색할 수 있습니다.
- 예산 내 인용 컨텍스트(Cited context on a budget).
graphicle context와 MCP 도구는 모델을 호출하지 않고도, 토큰 예산 내에서 출처가 명시된 발췌 내용을 반환합니다.
- 하나의 MCP 서버(One MCP server).
graphicle mcp는 메모리 도구 옆에서 Graphify의 도구 이름(예: query_graph, get_neighbors, shortest_path)으로 코드 그래프 도구를 제공합니다. --pull-requests를 사용하면 GitHub CLI(MCP)를 사용하는 풀 리퀘스트 도구인 list_prs, get_pr_impact, triage_prs도 제공합니다.
- 코드에 연결된 메모리(Memory tied to your code). 검토된 메모리는 해당 함수와 연결됩니다: 코드가 변경되면 메모리가 오래되고(stale), 파일의 다른 곳을 편집해도 보통은 최신 상태를 유지합니다(정확한 규칙). 문서 내 코드 언급은 정의된 이름과 연결됩니다 (
graphicle call graph.doc_links가 이를 나열합니다).
- 여러 저장소에 걸쳐(Across repositories). 검색(Recall)은 워크스페이스의 여러 저장소를 아우를 수 있습니다:
graphicle context --workspace 또는 워크스페이스 MCP 엔드포인트.
- 항상 최신 상태(Always current). 답변을 생성하기 전에 Graphicle은 사용자가 변경한 몇 개의 파일을 동기화(sync)합니다. Git 훅(hooks)은 커밋(commit), 병합(merge), 체크아웃(checkout) 후마다 동기화됩니다.
- 세션 유지(Sessions carry over). 세션 캡처는 완료된 각 턴(turn)을 보존하며, 메모리를 검토한 후에는 새로운 세션이 이 메모리와 최신 턴으로 시작됩니다.
- 애플리케이션(An app).
graphicle open은 그래프, 출처(sources), 그리고 메모리를 브라우저에 보여줍니다. 이곳에서 사용자는 메모리를 승인합니다.
에이전트와 함께 작동합니다
graphicle setup은 MCP를 통해 발견되는 모든 클라이언트에 연결됩니다. 각 파일은 한 번 <file>.graphicle-bak으로 백업되며, graphicle disconnect는 추가된 항목을 제거합니다.
| 클라이언트 | setup이 연결하는 위치 | 세션 캡처 |
|---|
| Claude Code | 저장소 내 .mcp.json | .claude/settings.local.json에 후크(hooks) 적용 |
| ... | | |
작동 방식
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/how-it-works-dark.svg">
<img src="https://raw.githubusercontent.com/graphicle-ai/graphicle/HEAD/assets/how-it-works-light.svg" alt="Graphicle 작동 방식: 코드, 문서 및 에이전트 세션이 하나의 프로그램으로 동기화되어 코드 그래프와 메모리를 유지합니다. 코딩 에이전트는 MCP를 통해 이를 사용하며, 사용자는 graphicle ask와 graphicle open을 통해 이를 활용할 수 있습니다. 변경된 파일은 답변을 할 때마다 동기화됩니다. 계정이나 원격 측정(telemetry) 기능이 없으며, 코드와 데이터는 요청할 때만 기기를 벗어나고, 자동 요청은 새로운 릴리스에 대한 일일 확인만이 이루어집니다." width="820">
</picture>
</p>
- 동기화(Sync). Graphicle은 폴더를 읽고(
.gitignore를 존중하며 비밀 정보는 건너뜁니다), 각 소스에 대한 버전이 지정된 복사본을 유지하고 코드 그래프를 구축합니다.
- 회상(Recall). 에이전트가 도구(tool)를 호출할 때, Graphicle은 변경된 내용을 동기화하고 코드, 문서, 세션 및 검토된 메모에서 발췌한 부분을 순위를 매겨 인용과 함께 반환합니다. 이 도구들은 모델을 호출하지 않으며, 사용자의 에이전트가 자체 모델로 해당 발췌본을 읽습니다.
- 기억(Remember). 캡처된 세션은 소스가 됩니다. 에이전트가 제안하는 메모는 앱에서 사용자의 승인을 기다립니다.
Graphicle: 코드 그래프 도구와 메모리 서버의 결합
왼쪽 열은 Graphify의 오픈소스 엔진과 같은 코드 그래프 도구에 별도의 메모리 서버를 결합한 형태입니다. 이는 메모리를 포함하는 호스팅 서비스인 Graphify Cloud와의 비교가 아닙니다.
| 코드 그래프 도구 + 메모리 서버 | Graphicle |
|---|
| 설치 | 종종 다른 런타임(runtime)에서 작동하는 두 가지 도구, 그리고 종종 데이터베이스 서버 필요 | |
| ... | | |
모든 그림에는 레이블이 지정되어 있으며, docs/benchmarks.md에 전체 표(tables), 방법론(methods), 그리고 한계점(limits)이 있습니다. 에이전트 테스트에서는 해당 항목의 95% 신뢰구간(interval)이 0을 제외할 때만 차이가 있다고 간주하며, 그렇지 않으면 동률(tie)로 간주합니다. 장시간 세션 및 코딩 세션 전반에 걸쳐 축적되는 메모리는 아직 테스트되지 않았습니다.