# graphify
๐บ๐ธ [English](../../README.md) | ๐จ๐ณ [็ฎไฝไธญๆ](README.zh-CN.md) | ๐ฏ๐ต [ๆฅๆฌ่ช](README.ja-JP.md) | ๐ฐ๐ท [ํ๊ตญ์ด](README.ko-KR.md) | ๐ฉ๐ช [Deutsch](README.de-DE.md) | ๐ซ๐ท [Franรงais](README.fr-FR.md) | ๐ช๐ธ [Espaรฑol](README.es-ES.md) | ๐ฎ๐ณ [เคนเคฟเคจเฅเคฆเฅ](README.hi-IN.md) | ๐ง๐ท [Portuguรชs](README.pt-BR.md) | ๐ท๐บ [ะ ัััะบะธะน](README.ru-RU.md) | ๐ธ๐ฆ [ุงูุนุฑุจูุฉ](README.ar-SA.md) | ๐ฎ๐น [Italiano](README.it-IT.md) | ๐ต๐ฑ [Polski](README.pl-PL.md) | ๐ณ๐ฑ [Nederlands](README.nl-NL.md) | ๐น๐ท [Tรผrkรงe](README.tr-TR.md) | ๐บ๐ฆ [ะฃะบัะฐัะฝััะบะฐ](README.uk-UA.md) | ๐ป๐ณ [Tiแบฟng Viแปt](README.vi-VN.md) | ๐ฎ๐ฉ [Bahasa Indonesia](README.id-ID.md) | ๐ธ๐ช [Svenska](README.sv-SE.md) | ๐ฌ๐ท [ฮฮปฮปฮทฮฝฮนฮบฮฌ](README.el-GR.md) | ๐ท๐ด [Romรขnฤ](README.ro-RO.md) | ๐จ๐ฟ [ฤeลกtina](README.cs-CZ.md) | ๐ซ๐ฎ [Suomi](README.fi-FI.md) | ๐ฉ๐ฐ [Dansk](README.da-DK.md) | ๐ณ๐ด [Norsk](README.no-NO.md) | ๐ญ๐บ [Magyar](README.hu-HU.md) | ๐น๐ญ [เธ เธฒเธฉเธฒเนเธเธข](README.th-TH.md) | ๐น๐ผ [็น้ซไธญๆ](README.zh-TW.md)
[](https://github.com/safishamsi/graphify/actions/workflows/ci.yml)
[](https://pypi.org/project/graphifyy/)
[](https://github.com/sponsors/safishamsi)
**AI ์ฝ๋ฉ ์ด์์คํดํธ๋ฅผ ์ํ ์คํฌ.** Claude Code, Codex, OpenCode, OpenClaw, Factory Droid, ๋๋ Trae์์ `/graphify`๋ฅผ ์
๋ ฅํ๋ฉด ํ์ผ์ ์ฝ๊ณ ์ง์ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ถํ์ฌ, ๋ฏธ์ฒ ๋ชฐ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ดํดํ๊ณ , ์ํคํ
์ฒ ๊ฒฐ์ ์ "์ด์ "๋ฅผ ์ฐพ์๋ณด์ธ์.
์์ ํ ๋ฉํฐ๋ชจ๋ฌ ์ง์. ์ฝ๋, PDF, ๋งํฌ๋ค์ด, ์คํฌ๋ฆฐ์ท, ๋ค์ด์ด๊ทธ๋จ, ํ์ดํธ๋ณด๋ ์ฌ์ง, ์ฌ์ง์ด ๋ค๋ฅธ ์ธ์ด๋ก ๋ ์ด๋ฏธ์ง๊น์ง โ graphify๋ Claude Vision์ ์ฌ์ฉํ์ฌ ์ด ๋ชจ๋ ๊ฒ์์ ๊ฐ๋
๊ณผ ๊ด๊ณ๋ฅผ ์ถ์ถํ๊ณ ํ๋์ ๊ทธ๋ํ๋ก ์ฐ๊ฒฐํฉ๋๋ค. tree-sitter AST๋ฅผ ํตํด 20๊ฐ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค(Python, JS, TS, Go, Rust, Java, C, C++, Ruby, C#, Kotlin, Scala, PHP, Swift, Lua, Zig, PowerShell, Elixir, Objective-C, Julia).
> Andrej Karpathy๋ ๋
ผ๋ฌธ, ํธ์, ์คํฌ๋ฆฐ์ท, ๋ฉ๋ชจ๋ฅผ ๋ชจ์๋๋ `/raw` ํด๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. graphify๋ ๋ฐ๋ก ๊ทธ ๋ฌธ์ ์ ๋ํ ๋ต์
๋๋ค โ ์๋ณธ ํ์ผ์ ์ง์ ์ฝ๋ ๊ฒ ๋๋น ์ฟผ๋ฆฌ๋น ํ ํฐ ์๋น๊ฐ 71.5๋ฐฐ ์ ๊ณ , ์ธ์
๊ฐ์ ์์์ ์ด๋ฉฐ, ๋ฐ๊ฒฌํ ๊ฒ๊ณผ ์ถ์ธกํ ๊ฒ์ ์ ์งํ๊ฒ ๊ตฌ๋ถํฉ๋๋ค.
```
/graphify . # ์ด๋ค ํด๋๋ ๋์ - ์ฝ๋๋ฒ ์ด์ค, ๋
ธํธ, ๋
ผ๋ฌธ, ๋ฌด์์ด๋
```
```
graphify-out/
โโโ graph.html ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ - ๋
ธ๋ ํด๋ฆญ, ๊ฒ์, ์ปค๋ฎค๋ํฐ๋ณ ํํฐ
โโโ GRAPH_REPORT.md ๊ฐ ๋
ธ๋, ์์ธ์ ์ฐ๊ฒฐ, ์ถ์ฒ ์ง๋ฌธ
โโโ graph.json ์์ ๊ทธ๋ํ - ๋ช ์ฃผ ํ์๋ ์ฌ์ฝ๊ธฐ ์์ด ์ฟผ๋ฆฌ ๊ฐ๋ฅ
โโโ cache/ SHA256 ์บ์ - ์ฌ์คํ ์ ๋ณ๊ฒฝ๋ ํ์ผ๋ง ์ฒ๋ฆฌ
```
๊ทธ๋ํ์ ํฌํจํ์ง ์์ ํด๋๋ฅผ ์ ์ธํ๋ ค๋ฉด `.graphifyignore` ํ์ผ์ ์ถ๊ฐํ์ธ์:
```
# .graphifyignore
vendor/
node_modules/
dist/
*.generated.py
```
`.gitignore`์ ๋์ผํ ๋ฌธ๋ฒ์
๋๋ค. ํจํด์ graphify๋ฅผ ์คํํ ํด๋ ๊ธฐ์ค์ ์๋ ๊ฒฝ๋ก์ ๋ํด ๋งค์นญ๋ฉ๋๋ค.
## ๋์ ์๋ฆฌ
graphify๋ ๋ ๋ฒ์ ํจ์ค๋ก ์คํ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ๊ฒฐ์ ๋ก ์ AST ํจ์ค๋ก, ์ฝ๋ ํ์ผ์์ ๊ตฌ์กฐ(ํด๋์ค, ํจ์, ์ํฌํธ, ์ฝ ๊ทธ๋ํ, docstring, ๊ทผ๊ฑฐ ์ฃผ์)๋ฅผ LLM ์์ด ์ถ์ถํฉ๋๋ค. ๋ ๋ฒ์งธ๋ Claude ์๋ธ์์ด์ ํธ๊ฐ ๋ฌธ์, ๋
ผ๋ฌธ, ์ด๋ฏธ์ง์ ๋ํด ๋ณ๋ ฌ๋ก ์คํ๋์ด ๊ฐ๋
, ๊ด๊ณ, ์ค๊ณ ๊ทผ๊ฑฐ๋ฅผ ์ถ์ถํฉ๋๋ค. ๊ฒฐ๊ณผ๋ NetworkX ๊ทธ๋ํ๋ก ๋ณํฉ๋๊ณ , Leiden ์ปค๋ฎค๋ํฐ ํ์ง๋ก ํด๋ฌ์คํฐ๋ง๋๋ฉฐ, ์ธํฐ๋ํฐ๋ธ HTML, ์ฟผ๋ฆฌ ๊ฐ๋ฅํ JSON, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ ์ธ์ด ๊ฐ์ฌ ๋ณด๊ณ ์๋ก ๋ด๋ณด๋ด์ง๋๋ค.
**ํด๋ฌ์คํฐ๋ง์ ๊ทธ๋ํ ํ ํด๋ก์ง ๊ธฐ๋ฐ โ ์๋ฒ ๋ฉ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.** Leiden์ ์ฃ์ง ๋ฐ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปค๋ฎค๋ํฐ๋ฅผ ์ฐพ์ต๋๋ค. Claude๊ฐ ์ถ์ถํ๋ ์๋ฏธ์ ์ ์ฌ์ฑ ์ฃ์ง(`semantically_similar_to`, INFERRED๋ก ํ์)๋ ์ด๋ฏธ ๊ทธ๋ํ์ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์ปค๋ฎค๋ํฐ ํ์ง์ ์ง์ ์ํฅ์ ์ค๋๋ค. ๊ทธ๋ํ ๊ตฌ์กฐ ์์ฒด๊ฐ ์ ์ฌ์ฑ ์ ํธ์ด๋ฉฐ โ ๋ณ๋์ ์๋ฒ ๋ฉ ๋จ๊ณ๋ ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๋ชจ๋ ๊ด๊ณ๋ `EXTRACTED`(์์ค์์ ์ง์ ๋ฐ๊ฒฌ), `INFERRED`(ํฉ๋ฆฌ์ ์ถ๋ก , ์ ๋ขฐ๋ ์ ์ ํฌํจ), `AMBIGUOUS`(๋ฆฌ๋ทฐ ํ์ ํ์) ์ค ํ๋๋ก ํ๊น
๋ฉ๋๋ค. ๋ฌด์์ด ๋ฐ๊ฒฌ๋ ๊ฒ์ด๊ณ ๋ฌด์์ด ์ถ์ธก๋ ๊ฒ์ธ์ง ํญ์ ์ ์ ์์ต๋๋ค.
## ์ค์น
**ํ์ ์๊ตฌ์ฌํญ:** Python 3.10+ ๋ฐ ๋ค์ ์ค ํ๋: [Claude Code](https://claude.ai/code), [Codex](https://openai.com/codex), [OpenCode](https://opencode.ai), [OpenClaw](https://openclaw.ai), [Factory Droid](https://factory.ai), ๋๋ [Trae](https://trae.ai)
```bash
pip install graphifyy && graphify install
```
> PyPI ํจํค์ง๋ `graphify` ์ด๋ฆ์ ๋์ฐพ๋ ๋์ ์์๋ก `graphifyy`๋ก ๋ช
๋ช
๋์ด ์์ต๋๋ค. CLI์ ์คํฌ ๋ช
๋ น์ ์ฌ์ ํ `graphify`์
๋๋ค.
### ํ๋ซํผ ์ง์
| ํ๋ซํผ | ์ค์น ๋ช
๋ น |
|--------|-----------|
| Claude Code (Linux/Mac) | `graphify install` |
| Claude Code (Windows) | `graphify install` (์๋ ๊ฐ์ง) ๋๋ `graphify install --platform windows` |
| Codex | `graphify install --platform codex` |
| OpenCode | `graphify install --platform opencode` |
| OpenClaw | `graphify install --platform claw` |
| Factory Droid | `graphify install --platform droid` |
| Trae | `graphify install --platform trae` |
| Trae CN | `graphify install --platform trae-cn` |
Codex ์ฌ์ฉ์๋ ๋ณ๋ ฌ ์ถ์ถ์ ์ํด `~/.codex/config.toml`์ `[features]` ์๋์ `multi_agent = true`๋ ํ์ํฉ๋๋ค. Factory Droid๋ ๋ณ๋ ฌ ์๋ธ์์ด์ ํธ ๋์คํจ์น์ `Task` ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. OpenClaw๋ ์์ฐจ ์ถ์ถ์ ์ฌ์ฉํฉ๋๋ค(ํด๋น ํ๋ซํผ์ ๋ณ๋ ฌ ์์ด์ ํธ ์ง์์ ์์ง ์ด๊ธฐ ๋จ๊ณ์
๋๋ค). Trae๋ ๋ณ๋ ฌ ์๋ธ์์ด์ ํธ ๋์คํจ์น์ Agent ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ PreToolUse ํ
์ **์ง์ํ์ง ์์ต๋๋ค** โ AGENTS.md๊ฐ ์์ ์๋ ๋ฉ์ปค๋์ฆ์
๋๋ค.
๊ทธ๋ฐ ๋ค์ AI ์ฝ๋ฉ ์ด์์คํดํธ๋ฅผ ์ด๊ณ ์
๋ ฅํ์ธ์:
```
/graphify .
```
์ฐธ๊ณ : Codex๋ ์คํฌ ํธ์ถ์ `/` ๋์ `$`๋ฅผ ์ฌ์ฉํ๋ฏ๋ก `$graphify .`๋ผ๊ณ ์
๋ ฅํ์ธ์.
### ์ด์์คํดํธ๊ฐ ํญ์ ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ (๊ถ์ฅ)
๊ทธ๋ํ๋ฅผ ๋น๋ํ ํ, ํ๋ก์ ํธ์์ ํ ๋ฒ๋ง ์คํํ์ธ์:
| ํ๋ซํผ | ๋ช
๋ น |
|--------|------|
| Claude Code | `graphify claude install` |
| Codex | `graphify codex install` |
| OpenCode | `graphify opencode install` |
| OpenClaw | `graphify claw install` |
| Factory Droid | `graphify droid install` |
| Trae | `graphify trae install` |
| Trae CN | `graphify trae-cn install` |
**Claude Code**๋ ๋ ๊ฐ์ง๋ฅผ ์ํํฉ๋๋ค: ์ํคํ
์ฒ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ ์ `graphify-out/GRAPH_REPORT.md`๋ฅผ ์ฝ๋๋ก Claude์๊ฒ ์ง์ํ๋ `CLAUDE.md` ์น์
์ ์์ฑํ๊ณ , ๋ชจ๋ Glob ๋ฐ Grep ํธ์ถ ์ ์ ์คํ๋๋ **PreToolUse ํ
**(`settings.json`)์ ์ค์นํฉ๋๋ค. ์ง์ ๊ทธ๋ํ๊ฐ ์กด์ฌํ๋ฉด Claude๋ ๋ค์ ๋ฉ์์ง๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค: _"graphify: Knowledge graph exists. Read GRAPH_REPORT.md for god nodes and community structure before searching raw files."_ โ ์ด๋ฅผ ํตํด Claude๋ ๋ชจ๋ ํ์ผ์ grepํ๋ ๋์ ๊ทธ๋ํ๋ฅผ ํตํด ํ์ํฉ๋๋ค.
**Codex**๋ `AGENTS.md`์ ์์ฑํ๊ณ Bash ๋๊ตฌ ํธ์ถ ์ ์ ์คํ๋๋ **PreToolUse ํ
**์ `.codex/hooks.json`์ ์ค์นํฉ๋๋ค โ Claude Code์ ๋์ผํ ์์ ์๋ ๋ฉ์ปค๋์ฆ์
๋๋ค.
**OpenCode, OpenClaw, Factory Droid, Trae**๋ ํ๋ก์ ํธ ๋ฃจํธ์ `AGENTS.md`์ ๋์ผํ ๊ท์น์ ์์ฑํฉ๋๋ค. ์ด ํ๋ซํผ๋ค์ PreToolUse ํ
์ ์ง์ํ์ง ์์ผ๋ฏ๋ก AGENTS.md๊ฐ ์์ ์๋ ๋ฉ์ปค๋์ฆ์
๋๋ค.
์ ๊ฑฐ๋ ๋์ํ๋ uninstall ๋ช
๋ น์ผ๋ก ์ํํฉ๋๋ค(์: `graphify claude uninstall`).
**์์ ์๋ vs ๋ช
์์ ํธ๋ฆฌ๊ฑฐ โ ์ฐจ์ด์ ์?**
์์ ์๋ ํ
์ `GRAPH_REPORT.md`๋ฅผ ๋
ธ์ถํฉ๋๋ค โ ๊ฐ ๋
ธ๋, ์ปค๋ฎค๋ํฐ, ์์ธ์ ์ฐ๊ฒฐ์ ํ ํ์ด์ง๋ก ์์ฝํ ๊ฒ์
๋๋ค. ์ด์์คํดํธ๋ ํ์ผ ๊ฒ์ ์ ์ ์ด๊ฒ์ ์ฝ์ผ๋ฏ๋ก ํค์๋ ๋งค์นญ์ด ์๋ ๊ตฌ์กฐ ๊ธฐ๋ฐ์ผ๋ก ํ์ํฉ๋๋ค. ์ด๊ฒ๋ง์ผ๋ก ๋๋ถ๋ถ์ ์ผ์์ ์ธ ์ง๋ฌธ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
`/graphify query`, `/graphify path`, `/graphify explain`์ ๋ ๊น์ด ๋ค์ด๊ฐ๋๋ค: ์์ `graph.json`์ ํ ๋จ์๋ก ์ํํ๊ณ , ๋
ธ๋ ๊ฐ์ ์ ํํ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ๋ฉฐ, ์ฃ์ง ์์ค์ ์ธ๋ถ ์ ๋ณด(๊ด๊ณ ์ ํ, ์ ๋ขฐ๋ ์ ์, ์์ค ์์น)๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ผ๋ฐ์ ์ธ ์ค๋ฆฌ์ํ
์ด์
์ด ์๋ ๊ทธ๋ํ์์ ํน์ ์ง๋ฌธ์ ๋ตํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ์ธ์.
์ด๋ ๊ฒ ์๊ฐํ๋ฉด ๋ฉ๋๋ค: ์์ ์๋ ํ
์ ์ด์์คํดํธ์๊ฒ ์ง๋๋ฅผ ์ฃผ๊ณ , `/graphify` ๋ช
๋ น์ ๊ทธ ์ง๋๋ฅผ ์ ํํ๊ฒ ํ์ํ๊ฒ ํฉ๋๋ค.
## `graph.json`์ LLM๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ
`graph.json`์ ํ๋กฌํํธ์ ํ ๋ฒ์ ์ ๋ถ ๋ถ์ฌ๋ฃ๊ธฐ ์ํ ๊ฒ์ด ์๋๋๋ค. ์ ์ฉํ ์ํฌํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. `graphify-out/GRAPH_REPORT.md`๋ก ๋์ ์์ค์ ๊ฐ์๋ฅผ ํ์
ํฉ๋๋ค.
2. `graphify query`๋ฅผ ์ฌ์ฉํ์ฌ ๋ตํ๋ ค๋ ํน์ ์ง๋ฌธ์ ๋ํ ๋ ์์ ์๋ธ๊ทธ๋ํ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
3. ์ ์ฒด ์์ ์ฝํผ์ค ๋์ ๊ทธ ์ง์ค๋ ๊ฒฐ๊ณผ๋ฅผ ์ด์์คํดํธ์๊ฒ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋ก์ ํธ์์ graphify๋ฅผ ์คํํ ํ:
```bash
graphify query "show the auth flow" --graph graphify-out/graph.json
graphify query "what connects DigestAuth to Response?" --graph graphify-out/graph.json
```
์ถ๋ ฅ์๋ ๋
ธ๋ ๋ ์ด๋ธ, ์ฃ์ง ์ ํ, ์ ๋ขฐ๋ ํ๊ทธ, ์์ค ํ์ผ, ์์ค ์์น๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด๋ LLM์ ์ํ ์ข์ ์ค๊ฐ ์ปจํ
์คํธ ๋ธ๋ก์ด ๋ฉ๋๋ค:
```text
์ด ๊ทธ๋ํ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ์ง๋ฌธ์ ๋ตํ์ธ์. ์ถ์ธก๋ณด๋ค ๊ทธ๋ํ ๊ตฌ์กฐ๋ฅผ ์ฐ์ ํ๊ณ ,
๊ฐ๋ฅํ ๊ฒฝ์ฐ ์์ค ํ์ผ์ ์ธ์ฉํ์ธ์.
```
์ด์์คํดํธ๊ฐ ๋๊ตฌ ํธ์ถ์ด๋ MCP๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ, ํ
์คํธ๋ฅผ ๋ถ์ฌ๋ฃ๋ ๋์ ๊ทธ๋ํ๋ฅผ ์ง์ ์ฌ์ฉํ์ธ์. graphify๋ `graph.json`์ MCP ์๋ฒ๋ก ๋
ธ์ถํ ์ ์์ต๋๋ค:
```bash
python -m graphify.serve graphify-out/graph.json
```
์ด๋ฅผ ํตํด ์ด์์คํดํธ๊ฐ `query_graph`, `get_node`, `get_neighbors`, `shortest_path` ๊ฐ์ ๋ฐ๋ณต ์ฟผ๋ฆฌ์ ๊ตฌ์กฐํ๋ ๊ทธ๋ํ ์ ๊ทผ์ ํ ์ ์์ต๋๋ค.
์๋ ์ค์น (curl)
```bash
mkdir -p ~/.claude/skills/graphify
curl -fsSL https://raw.githubusercontent.com/safishamsi/graphify/v3/graphify/skill.md \
> ~/.claude/skills/graphify/SKILL.md
```
`~/.claude/CLAUDE.md`์ ์ถ๊ฐ:
```
- **graphify** (`~/.claude/skills/graphify/SKILL.md`) - any input to knowledge graph. Trigger: `/graphify`
When the user types `/graphify`, invoke the Skill tool with `skill: "graphify"` before doing anything else.
```
## ์ฌ์ฉ๋ฒ
```
/graphify # ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ์คํ
/graphify ./raw # ํน์ ํด๋์์ ์คํ
/graphify ./raw --mode deep # ๋ ์ ๊ทน์ ์ธ INFERRED ์ฃ์ง ์ถ์ถ
/graphify ./raw --update # ๋ณ๊ฒฝ๋ ํ์ผ๋ง ์ฌ์ถ์ถํ์ฌ ๊ธฐ์กด ๊ทธ๋ํ์ ๋ณํฉ
/graphify ./raw --cluster-only # ๊ธฐ์กด ๊ทธ๋ํ์ ํด๋ฌ์คํฐ๋ง๋ง ์ฌ์คํ, ์ฌ์ถ์ถ ์์
/graphify ./raw --no-viz # HTML ๊ฑด๋๋ฐ๊ธฐ, ๋ณด๊ณ ์ + JSON๋ง ์์ฑ
/graphify ./raw --obsidian # Obsidian ๋ณผํธ๋ ์์ฑ (์ตํธ์ธ)
/graphify ./raw --obsidian --obsidian-dir ~/vaults/myproject # ๋ณผํธ๋ฅผ ํน์ ๋๋ ํ ๋ฆฌ์ ์์ฑ
/graphify add https://arxiv.org/abs/1706.03762 # ๋
ผ๋ฌธ ๊ฐ์ ธ์ค๊ธฐ, ์ ์ฅ, ๊ทธ๋ํ ์
๋ฐ์ดํธ
/graphify add https://x.com/karpathy/status/... # ํธ์ ๊ฐ์ ธ์ค๊ธฐ
/graphify add https://... --author "Name" # ์์ ์ ํ๊ทธ
/graphify add https://... --contributor "Name" # ์ฝํผ์ค์ ์ถ๊ฐํ ์ฌ๋ ํ๊ทธ
/graphify query "์ดํ
์
๊ณผ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์?"
/graphify query "์ดํ
์
๊ณผ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์?" --dfs # ํน์ ๊ฒฝ๋ก ์ถ์
/graphify query "์ดํ
์
๊ณผ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์?" --budget 1500 # N ํ ํฐ์ผ๋ก ์ ํ
/graphify path "DigestAuth" "Response"
/graphify explain "SwinTransformer"
/graphify ./raw --watch # ํ์ผ ๋ณ๊ฒฝ ์ ๊ทธ๋ํ ์๋ ๋๊ธฐํ (์ฝ๋: ์ฆ์, ๋ฌธ์: ์๋ฆผ)
/graphify ./raw --wiki # ์์ด์ ํธ๊ฐ ํฌ๋กค ๊ฐ๋ฅํ ์ํค ๋น๋ (index.md + ์ปค๋ฎค๋ํฐ๋ณ ๋ฌธ์)
/graphify ./raw --svg # graph.svg ๋ด๋ณด๋ด๊ธฐ
/graphify ./raw --graphml # graph.graphml ๋ด๋ณด๋ด๊ธฐ (Gephi, yEd)
/graphify ./raw --neo4j # Neo4j์ฉ cypher.txt ์์ฑ
/graphify ./raw --neo4j-push bolt://localhost:7687 # ์คํ ์ค์ธ Neo4j ์ธ์คํด์ค์ ์ง์ ํธ์
/graphify ./raw --mcp # MCP stdio ์๋ฒ ์์
# git ํ
- ํ๋ซํผ ๋ฌด๊ด, ์ปค๋ฐ ๋ฐ ๋ธ๋์น ์ ํ ์ ๊ทธ๋ํ ์ฌ๋น๋
graphify hook install
graphify hook uninstall
graphify hook status
# ์์ ์๋ ์ด์์คํดํธ ์ง์ - ํ๋ซํผ๋ณ
graphify claude install # CLAUDE.md + PreToolUse ํ
(Claude Code)
graphify claude uninstall
graphify codex install # AGENTS.md (Codex)
graphify opencode install # AGENTS.md (OpenCode)
graphify claw install # AGENTS.md (OpenClaw)
graphify droid install # AGENTS.md (Factory Droid)
graphify trae install # AGENTS.md (Trae)
graphify trae uninstall
graphify trae-cn install # AGENTS.md (Trae CN)
graphify trae-cn uninstall
# ํฐ๋ฏธ๋์์ ์ง์ ๊ทธ๋ํ ์ฟผ๋ฆฌ (AI ์ด์์คํดํธ ๋ถํ์)
graphify query "์ดํ
์
๊ณผ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์?"
graphify query "์ธ์ฆ ํ๋ฆ ๋ณด๊ธฐ" --dfs
graphify query "CfgNode์ด ๋ญ์ง?" --budget 500
graphify query "..." --graph path/to/graph.json
```
๋ค์ํ ํ์ผ ์ ํ์ ์กฐํฉ๊ณผ ํจ๊ป ๋์ํฉ๋๋ค:
| ์ ํ | ํ์ฅ์ | ์ถ์ถ ๋ฐฉ์ |
|------|--------|-----------|
| ์ฝ๋ | `.py .ts .js .jsx .tsx .go .rs .java .c .cpp .rb .cs .kt .scala .php .swift .lua .zig .ps1 .ex .exs .m .mm .jl` | tree-sitter AST + ์ฝ ๊ทธ๋ํ + docstring/์ฃผ์ ๊ทผ๊ฑฐ |
| ๋ฌธ์ | `.md .txt .rst` | Claude๋ฅผ ํตํ ๊ฐ๋
+ ๊ด๊ณ + ์ค๊ณ ๊ทผ๊ฑฐ |
| ์คํผ์ค | `.docx .xlsx` | ๋งํฌ๋ค์ด์ผ๋ก ๋ณํ ํ Claude๋ฅผ ํตํด ์ถ์ถ (`pip install graphifyy[office]` ํ์) |
| ๋
ผ๋ฌธ | `.pdf` | ์ธ์ฉ ๋ง์ด๋ + ๊ฐ๋
์ถ์ถ |
| ์ด๋ฏธ์ง | `.png .jpg .webp .gif` | Claude Vision - ์คํฌ๋ฆฐ์ท, ๋ค์ด์ด๊ทธ๋จ, ๋ชจ๋ ์ธ์ด |
## ๊ฒฐ๊ณผ๋ฌผ
**๊ฐ ๋
ธ๋** - ์ต๊ณ ์ฐจ์์ ๊ฐ๋
(๋ชจ๋ ๊ฒ์ด ์ฐ๊ฒฐ๋๋ ํ๋ธ)
**์์ธ์ ์ฐ๊ฒฐ** - ๋ณตํฉ ์ ์๋ก ์์ ์ง์ . ์ฝ๋-๋
ผ๋ฌธ ์ฃ์ง๋ ์ฝ๋-์ฝ๋๋ณด๋ค ๋๊ฒ ์์๋ฉ๋๋ค. ๊ฐ ๊ฒฐ๊ณผ์๋ ์ฌ์ด ์ค๋ช
์ด ํฌํจ๋ฉ๋๋ค.
**์ถ์ฒ ์ง๋ฌธ** - ๊ทธ๋ํ๊ฐ ๊ณ ์ ํ๊ฒ ๋ตํ ์ ์๋ 4~5๊ฐ์ ์ง๋ฌธ
**"์ด์ "** - docstring, ์ธ๋ผ์ธ ์ฃผ์(`# NOTE:`, `# IMPORTANT:`, `# HACK:`, `# WHY:`), ๋ฌธ์์ ์ค๊ณ ๊ทผ๊ฑฐ๊ฐ `rationale_for` ๋
ธ๋๋ก ์ถ์ถ๋ฉ๋๋ค. ์ฝ๋๊ฐ ๋ฌด์์ ํ๋์ง๋ฟ๋ง ์๋๋ผ โ ์ ๊ทธ๋ ๊ฒ ์์ฑ๋์๋์ง.
**์ ๋ขฐ๋ ์ ์** - ๋ชจ๋ INFERRED ์ฃ์ง์๋ `confidence_score`(0.0~1.0)๊ฐ ์์ต๋๋ค. ๋ฌด์์ด ์ถ์ธก๋์๋์ง๋ฟ ์๋๋ผ ๋ชจ๋ธ์ด ์ผ๋ง๋ ํ์ ํ๋์ง๋ ์ ์ ์์ต๋๋ค. EXTRACTED ์ฃ์ง๋ ํญ์ 1.0์
๋๋ค.
**์๋ฏธ์ ์ ์ฌ์ฑ ์ฃ์ง** - ๊ตฌ์กฐ์ ์ฐ๊ฒฐ ์๋ ํ์ผ ๊ฐ ๊ฐ๋
๋งํฌ. ์๋ก๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ ํจ์, ์ฝ๋์ ํด๋์ค์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช
ํ๋ ๋
ผ๋ฌธ์ ๊ฐ๋
๋ฑ.
**ํ์ดํผ์ฃ์ง** - ์๋ณ ์ฃ์ง๋ก๋ ํํํ ์ ์๋ 3๊ฐ ์ด์ ๋
ธ๋์ ๊ทธ๋ฃน ๊ด๊ณ. ๊ณต์ ํ๋กํ ์ฝ์ ๊ตฌํํ๋ ๋ชจ๋ ํด๋์ค, ์ธ์ฆ ํ๋ฆ์ ๋ชจ๋ ํจ์, ๋
ผ๋ฌธ ์น์
์์ ํ๋์ ์์ด๋์ด๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๊ฐ๋
๋ฑ.
**ํ ํฐ ๋ฒค์น๋งํฌ** - ๋งค ์คํ ํ ์๋์ผ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. ํผํฉ ์ฝํผ์ค(Karpathy ๋ฆฌํฌ์งํ ๋ฆฌ + ๋
ผ๋ฌธ + ์ด๋ฏธ์ง)์์: ์๋ณธ ํ์ผ ๋๋น ์ฟผ๋ฆฌ๋น **71.5๋ฐฐ** ์ ์ ํ ํฐ. ์ฒซ ์คํ์ ์ถ์ถ๊ณผ ๊ทธ๋ํ ๋น๋๋ฅผ ์ํํฉ๋๋ค(ํ ํฐ์ด ์๋น๋ฉ๋๋ค). ์ดํ ๋ชจ๋ ์ฟผ๋ฆฌ๋ ์๋ณธ ํ์ผ ๋์ ์์ถ๋ ๊ทธ๋ํ๋ฅผ ์ฝ์ต๋๋ค โ ์ฌ๊ธฐ์ ์ ์ฝ์ด ๋ณต๋ฆฌ๋ก ๋์ ๋ฉ๋๋ค. SHA256 ์บ์๋ก ์ฌ์คํ ์ ๋ณ๊ฒฝ๋ ํ์ผ๋ง ์ฌ์ฒ๋ฆฌํฉ๋๋ค.
**์๋ ๋๊ธฐํ** (`--watch`) - ๋ฐฑ๊ทธ๋ผ์ด๋ ํฐ๋ฏธ๋์์ ์คํํ๋ฉด ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊ทธ๋ํ๊ฐ ์๋์ผ๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค. ์ฝ๋ ํ์ผ ์ ์ฅ ์ ์ฆ์ ์ฌ๋น๋๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค(AST๋ง, LLM ์์). ๋ฌธ์/์ด๋ฏธ์ง ๋ณ๊ฒฝ ์์๋ LLM ์ฌ์ฒ๋ฆฌ๋ฅผ ์ํด `--update` ์คํ์ ์๋ ค์ค๋๋ค.
**Git ํ
** (`graphify hook install`) - post-commit ๋ฐ post-checkout ํ
์ ์ค์นํฉ๋๋ค. ๋ชจ๋ ์ปค๋ฐ๊ณผ ๋ธ๋์น ์ ํ ํ ๊ทธ๋ํ๊ฐ ์๋์ผ๋ก ์ฌ๋น๋๋ฉ๋๋ค. ์ฌ๋น๋๊ฐ ์คํจํ๋ฉด ํ
์ด 0์ด ์๋ ์ฝ๋๋ก ์ข
๋ฃํ์ฌ git์ด ์๋ฌ๋ฅผ ํ์ํ๊ณ ์กฐ์ฉํ ๊ณ์ ์งํํ์ง ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ํ์ ์์ต๋๋ค.
**์ํค** (`--wiki`) - ์ปค๋ฎค๋ํฐ ๋ฐ ๊ฐ ๋
ธ๋๋ณ ์ํคํผ๋์ ์คํ์ผ ๋งํฌ๋ค์ด ๋ฌธ์์ `index.md` ์ง์
์ . ์ด๋ค ์์ด์ ํธ๋ `index.md`๋ฅผ ๊ฐ๋ฆฌํค๋ฉด JSON์ ํ์ฑํ๋ ๋์ ํ์ผ์ ์ฝ์ด์ ์ง์ ๋ฒ ์ด์ค๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
## ์ค์ ์์
| ์ฝํผ์ค | ํ์ผ ์ | ์ถ์์จ | ๊ฒฐ๊ณผ |
|--------|---------|--------|------|
| Karpathy ๋ฆฌํฌ์งํ ๋ฆฌ + ๋
ผ๋ฌธ 5ํธ + ์ด๋ฏธ์ง 4์ฅ | 52 | **71.5x** | [`worked/karpathy-repos/`](worked/karpathy-repos/) |
| graphify ์์ค + Transformer ๋
ผ๋ฌธ | 4 | **5.4x** | [`worked/mixed-corpus/`](worked/mixed-corpus/) |
| httpx (ํฉ์ฑ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ) | 6 | ~1x | [`worked/httpx/`](worked/httpx/) |
ํ ํฐ ์ถ์๋ ์ฝํผ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ ํ์ฅ๋ฉ๋๋ค. 6๊ฐ ํ์ผ์ ์ด์ฐจํผ ์ปจํ
์คํธ ์๋์ฐ์ ๋ค์ด๊ฐ๋ฏ๋ก, ๊ทธ๋ํ์ ๊ฐ์น๋ ์์ถ์ด ์๋ ๊ตฌ์กฐ์ ๋ช
ํ์ฑ์ ์์ต๋๋ค. 52๊ฐ ํ์ผ(์ฝ๋ + ๋
ผ๋ฌธ + ์ด๋ฏธ์ง)์์๋ 71๋ฐฐ ์ด์์ ๋ฌ์ฑํฉ๋๋ค. ๊ฐ `worked/` ํด๋์๋ ์๋ณธ ์
๋ ฅ ํ์ผ๊ณผ ์ค์ ์ถ๋ ฅ(`GRAPH_REPORT.md`, `graph.json`)์ด ์์ด ์ง์ ์คํํ์ฌ ์์น๋ฅผ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
## ๊ฐ์ธ์ ๋ณด ๋ณดํธ
graphify๋ ๋ฌธ์, ๋
ผ๋ฌธ, ์ด๋ฏธ์ง์ ์๋ฏธ์ ์ถ์ถ์ ์ํด ํ์ผ ๋ด์ฉ์ AI ์ฝ๋ฉ ์ด์์คํดํธ์ ๊ธฐ๋ฐ ๋ชจ๋ธ API๋ก ์ ์กํฉ๋๋ค โ Anthropic(Claude Code), OpenAI(Codex), ๋๋ ์ฌ์ฉ ์ค์ธ ํ๋ซํผ์ ์ ๊ณต์. ์ฝ๋ ํ์ผ์ tree-sitter AST๋ฅผ ํตํด ๋ก์ปฌ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค โ ์ฝ๋์ ๊ฒฝ์ฐ ํ์ผ ๋ด์ฉ์ด ์ฌ์ฉ์์ ๋จธ์ ์ ๋ฒ์ด๋์ง ์์ต๋๋ค. ์ด๋ ํ ํ
๋ ๋ฉํธ๋ฆฌ, ์ฌ์ฉ ์ถ์ , ๋ถ์๋ ์์ต๋๋ค. ์ ์ผํ ๋คํธ์ํฌ ํธ์ถ์ ์ถ์ถ ์ค ํ๋ซํผ ๋ชจ๋ธ API์ ๋ํ ๊ฒ์ด๋ฉฐ, ์ฌ์ฉ์ ๋ณธ์ธ์ API ํค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
## ๊ธฐ์ ์คํ
NetworkX + Leiden (graspologic) + tree-sitter + vis.js. ์๋ฏธ์ ์ถ์ถ์ Claude(Claude Code), GPT-4(Codex), ๋๋ ํ๋ซํผ์ด ์คํํ๋ ๋ชจ๋ธ์ ํตํด ์ํ๋ฉ๋๋ค. Neo4j ๋ถํ์, ์๋ฒ ๋ถํ์, ์์ ํ ๋ก์ปฌ์์ ์คํ๋ฉ๋๋ค.
## ๋ค์ ๊ณํ
graphify๋ ๊ทธ๋ํ ๋ ์ด์ด์
๋๋ค. ๊ทธ ์์ [Penpax](https://safishamsi.github.io/penpax.ai)๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค โ ํ์, ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก, ํ์ผ, ์ด๋ฉ์ผ, ์ฝ๋๋ฅผ ํ๋์ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋ ์ง์ ๊ทธ๋ํ๋ก ์ฐ๊ฒฐํ๋ ์จ๋๋ฐ์ด์ค ๋์งํธ ํธ์์
๋๋ค. ํด๋ผ์ฐ๋ ์์, ๋ฐ์ดํฐ ํ์ต ์์. [๋๊ธฐ ๋ชฉ๋ก์ ๋ฑ๋กํ์ธ์.](https://safishamsi.github.io/penpax.ai)
## ์คํ ํ์คํ ๋ฆฌ
[](https://starchart.cc/safishamsi/graphify)
๊ธฐ์ฌํ๊ธฐ
**์ค์ ์์ **๋ ๊ฐ์ฅ ์ ๋ขฐ๋ฅผ ์๋ ๊ธฐ์ฌ ๋ฐฉ์์
๋๋ค. ์ค์ ์ฝํผ์ค์์ `/graphify`๋ฅผ ์คํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ `worked/{slug}/`์ ์ ์ฅํ๊ณ , ๊ทธ๋ํ๊ฐ ๋ง๊ฒ ํ์
ํ ๊ฒ๊ณผ ํ๋ฆฐ ๊ฒ์ ํ๊ฐํ๋ ์์งํ `review.md`๋ฅผ ์์ฑํ์ฌ PR์ ์ ์ถํ์ธ์.
**์ถ์ถ ๋ฒ๊ทธ** - ์
๋ ฅ ํ์ผ, ์บ์ ์ํธ๋ฆฌ(`graphify-out/cache/`), ๊ทธ๋ฆฌ๊ณ ๋๋ฝ๋๊ฑฐ๋ ๋ ์กฐ๋ ๋ด์ฉ๊ณผ ํจ๊ป ์ด์๋ฅผ ์ด์ด์ฃผ์ธ์.
๋ชจ๋ ์ฑ
์๊ณผ ์ธ์ด ์ถ๊ฐ ๋ฐฉ๋ฒ์ [ARCHITECTURE.md](ARCHITECTURE.md)๋ฅผ ์ฐธ์กฐํ์ธ์.