graphify — « Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store. »
Voce skill: graphify di Safi Shamsi (Graphify Labs, Y Combinator S26) trasforma un intero progetto — codice, documentazione, PDF, immagini, video — in un grafo di conoscenza interrogabile, invocato tramite /graphify da Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot e una quindicina di altri client.
Di **Safi Shamsi** — créateur et mainteneur de graphify// Fonte github.com ↗/Lettura 2 min/.md// Traduzione verificata automaticamente
#skill#grafo di conoscenza#grafo di conoscenza#AST#tree-sitter#analisi statica deterministica#estrazione locale#nessun LLM
graphify (Safi Shamsi, Graphify Labs, Y Combinator S26) trasforma un intero progetto in un grafo di conoscenza interrogabile, invocato tramite /graphify da Claude Code, Cursor, Codex, Gemini CLI e una quindicina di altri client. Osservato il 6 agosto 2026: 103.187 stelle per un repository creato il 3 aprile, Apache-2.0, Python.
Tre scelte di design sostengono il progetto.Il codice viene analizzato localmente in un AST tree-sitter, senza LLM: deterministico, nulla lascia la macchina, nessuna chiave API richiesta per un corpus composto solo da codice. Ogni arco porta con sé la propria provenienza — EXTRACTED se esplicito nella fonte, INFERRED se risolto da graphify —, "so you can tell what was read directly from what was inferred". E il progetto si definisce in opposizione al RAG vettoriale: "Not a vector index. No embeddings, no vector store: a real graph you traverse."
L'uso sostituisce grep.query restituisce un sottografo per una domanda in linguaggio naturale, path A B traccia il percorso tra due entità, explain dispiega un concetto. Tre output: un grafo interattivo, un report leggibile (nodi centrali, connessioni sorprendenti, domande suggerite) e un graph.json persistente, interrogabile settimane dopo.
La copertura va oltre il codice: 36 grammatiche tree-sitter, ma anche SQL, Terraform, Apex, configurazioni MCP, manifest di pacchetti, Office, PDF, immagini e video trascritti localmente. I commenti # WHY: e le motivazioni di design diventano nodi di prima classe collegati al codice che spiegano.
I benchmark richiedono una lettura attenta. Su LOCOMO, graphify domina in recall (0,497 contro 0,149 e 0,048) ma perde in accuratezza QA (45,3% contro 49,7%); su LongMemEval-S eguaglia un RAG denso al 76%. La riga che conta è altrove: "Graph build — LLM credits: 0". Il differenziatore difendibile è il costo e la tracciabilità, non la qualità delle risposte.
Tre avvertenze. Il branch main porta un README obsoleto dell'epoca v1 che descrive un prodotto diverso: leggere v8. Il pacchetto PyPI si chiama graphifyy, mentre il nome è in fase di recupero. E un log delle query locale è attivo per impostazione predefinita, disattivabile tramite una variabile d'ambiente.
La skill funge anche da punto d'ingresso a una piattaforma commerciale con lista d'attesa su graphify.com, che applica in continuo lo stesso approccio all'intero contesto di lavoro.
Punti chiave
Natura. skill /graphify + CLI Python, Apache-2.0, distribuita su PyPI con il nome graphifyy (due y, mentre graphify è in fase di recupero). uv tool install graphifyy && graphify install. Funziona in Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot e una quindicina di altri client.
Inquadramento chiave. il grafo sostituisce grep — si chiede una relazione, non un'occorrenza di stringa. ### Le tre scelte di design, e perché si tengono insieme 1. Il codice viene analizzato localmente, senza LLM — AST tree-sitter, deterministico, « nothing leaves your machine ». Un corpus composto solo da codice non richiede alcuna chiave API e funziona offline; documenti, PDF e immagini, al contrario, passano attraverso un modello. 2. Ogni arco porta con sé la propria provenienza — EXTRACTED (esplicito nella fonte), INFERRED (risolto da graphify), AMBIGUOUS nel report: « You always know what was found vs guessed. » 3. Nessun indice vettoriale — nessun embedding, nessun vector store, un grafo da percorrere. Le tre si rafforzano a vicenda: il determinismo azzera il costo, il costo zero rende possibile una ricostruzione frequente, e l'etichettatura degli archi rende il risultato verificabile. ### I benchmark, letti correttamente | Benchmark | Metrica | graphify | Concorrenti | |---|---|---|---| | LOCOMO (n=300) | recall@10 | 0,497 | supermemory 0,149 · mem0 0,048 | | LOCOMO (n=300) | accuratezza QA | 45,3% | supermemory 49,7% · mem0 27,3% | | LongMemEval-S (n=50) | accuratezza QA | 76% | alla pari con un RAG denso | | Costruzione del grafo | crediti LLM | 0 | fatturati per token altrove | graphify domina chiaramente in recall, perde in accuratezza QA, eguaglia il RAG denso sul secondo benchmark, e costruisce il proprio grafo gratuitamente. Il differenziatore difendibile è dunque il costo e la tracciabilità, non la qualità delle risposte: presentare graphify come "migliore del RAG" sarebbe contraddetto dai suoi stessi numeri. Protocollo dichiarato: stesso harness, stesso modello, stessi budget, giudice validato in cieco rispetto a un secondo giudice (90,6% di accordo, kappa di Cohen 0,81). Va confrontato con l'unica cifra comparabile nel corpus: Compare the Market ha misurato un grafo AST al ~70% contro il ~58% di un RAG vettoriale su 79 merge request, con il RAG che performa peggio dell'assenza di contesto — vedi [[comparethemarket-context-retrieval-ai-code-review-gkg-rag-2026-03-06]]. Due misurazioni indipendenti convergono sulla superiorità del grafo strutturato per il codice. ### Interrogazione e copertura query "<domanda>" restituisce un sottografo per una domanda in linguaggio naturale, path A B traccia il percorso tra due entità, explain X dispiega il vicinato di un concetto. L'esempio del README: path "FastAPI" "ModelField" restituisce un percorso a tre salti con il tipo di ciascun arco. Stesso vantaggio attribuito a GitNexus in [[lassiege-usine-logicielle-heure-ia-2026-07-28]]. La copertura va oltre "solo il codice": 36 grammatiche tree-sitter (~40 linguaggi, tra cui CUDA, Metal, Zig, Elixir, Julia, Dart, SystemVerilog, Fortran), oltre a SQL, Terraform/HCL, Apex Salesforce, configurazioni MCP (.mcp.json, claude_desktop_config.json — server, pacchetti e variabili d'ambiente richieste), manifest di pacchetti (pyproject.toml, go.mod, pom.xml, un nodo canonico per pacchetto), Office, Google Workspace, PDF, immagini, video e audio. Applicare graphify alle proprie configurazioni MCP è un modo inatteso e immediatamente utile di mappare la propria superficie di strumenti. ### Il "perché" come oggetto di prima classe I commenti # NOTE:, # WHY:, # HACK:, i docstring e le motivazioni di design presenti nella documentazione diventano nodi separati collegati al codice che spiegano. L'intento è trattato come un'entità del grafo: si può chiedere il perché, non solo il cosa. ### Aggiornamento e output Tre meccanismi di aggiornamento: una cache SHA256 (vengono rielaborati solo i file modificati), --watch (ricostruzione istantanea al salvataggio, solo AST, nessun LLM; documenti e immagini segnalano che è necessario un --update), e graphify hook install (un hook post-commit, nessun processo in background). La modalità --watch è giustificata per i flussi multi-agente: « the graph stays current between waves automatically ». Output per gli agenti: --wiki produce articoli per comunità con un index.md — « point any agent at index.md and it can navigate the knowledge base by reading files instead of parsing JSON » — e --mcp avvia un server MCP stdio. Esportazioni verso Obsidian, GraphML, Neo4j (cypher), SVG. ### Riservatezza, un confine granulare | Elaborazione | Dove | |---|---| | Codice (tree-sitter), video e audio (faster-whisper) | locale; --code-only impone questa modalità su un repository misto | | Documenti, PDF, immagini | inviati al modello; catena di priorità automatica Gemini → Kimi → Claude → OpenAI → DeepSeek → Azure → Bedrock → Ollama | Kimi instrada verso i server di Moonshot AI in Cina — il README lo segnala, e --backend ollama fornisce una modalità interamente locale. Nessuna telemetria né tracciamento d'uso, ma un log delle query scritto per impostazione predefinita in ~/.cache/graphify-queries.log (timestamp, domanda, corpus, nodi restituiti, durata; i sottografi in sé non vengono memorizzati). Disattivabile tramite GRAPHIFY_QUERY_LOG_DISABLE=1. Locale, ma attivo senza opt-in: da conoscere prima di un impiego in un contesto sensibile. ### Due insidie documentali nel repository 1. Il branch main è obsoleto: porta un README dell'epoca v1 (7 KB) che descrive « a Claude Code skill » per un unico client, mette in evidenza l'affermazione "71,5× meno token" su un corpus di 52 file, e rimanda ancora a safishamsi/graphify. Il branch predefinito è v8 (57 KB). Leggere v8, mai main. 2. Il nome del pacchetto: pip install graphifyy con due y; il comando CLI e della skill restano graphify. ### Modello di business e trazione La skill open source funge da punto d'ingresso a una piattaforma commerciale su graphify.com — « the always-on layer… applies the same graph approach to your entire working context: meetings, files, docs, and code, updating continuously in the background », attualmente con lista d'attesa. Open source locale da un lato, servizio ospitato in continuo dall'altro. 103.187 stelle in quattro mesi rappresentano un ritmo eccezionale, ma il numero non dice nulla sull'uso effettivo, e il sito ufficiale del progetto mostra ancora 3.700 — un segno che la comunicazione non ha tenuto il passo. Citare il conteggio delle stelle come segnale di attenzione, mai come misura di adozione. Disambiguazione: il sito graphify.net è una proprietà distinta da graphify.com, la piattaforma commerciale.
Il grafo di conoscenza estratto da questa fiche — 9 entità, 24 relazioni.
In questo grafo :graphify · Safi Shamsi · Graphify Labs · provenance d'arête · extraction hybride par type de fichier · tree-sitter · algorithme de Leiden · LOCOMO · LongMemEval