← Voltar ao blog
Aicerca de 7 min de leitura

Graphify transforma uma pasta em grafo. O 71.5x precisa de contexto

Publicado 28 de out. de 2026
Graphify transforma uma pasta em grafo. O 71.5x precisa de contexto

O Graphify ganhou cerca de 7,300 estrelas nesta semana, o que o coloca no topo das tendências semanais do GitHub e leva o total para além de 137,000. O discurso cabe em uma linha: aponte seu agente de programação para uma pasta, digite /graphify . e receba de volta um grafo de conhecimento de tudo o que há ali.

O interessante não é o grafo. É o número pendurado ao lado dele: 71.5x menos tokens por consulta, medido contra a leitura dos arquivos brutos. Se isso se sustenta em geral, não é uma ferramenta de conveniência, é uma mudança na quantidade de contexto que um agente precisa carregar.

De onde veio

O autor, safishamsi, enquadra o projeto como resposta a um hábito bem específico de Andrej Karpathy: manter uma pasta /raw onde papers, tuítes, capturas de tela e notas vão sendo despejados, e nunca conseguir encontrar nada ali depois. O problema é identificável, e a origem é mais honesta que a maioria, porque descreve um modo de falha e não um mercado.

O objetivo declarado é mais estreito do que“pesquise nos seus documentos”. Trata-se de produzir algo persistente que sobreviva entre sessões e de ser explícito sobre o que foi inferido e o que foi extraído. Toda aresta do grafo recebe uma etiqueta: EXTRACTED, INFERRED ou AMBIGUOUS. É uma escolha de projeto incomum e, na minha visão, a parte mais valiosa de todo o conjunto.

O que ele faz de fato

A instalação são dois comandos, e sim, o nome do pacote no PyPI está temporariamente errado:

pip install graphifyy && graphify install

O Y dobrado vem de uma disputa de nome, não de um erro de digitação. A CLI e o comando do skill continuam sendo graphify. No Windows, se o comando não for reconhecido depois da instalação, é preciso colocar a pasta Scripts do Python no PATH, ou usar pipx install graphifyy e contornar o problema.

Depois, dentro do Claude Code, em qualquer diretório:

/graphify .
/graphify ./raw --mode deep
/graphify query "what connects attention to the optimizer?"
/graphify path "DigestAuth" "Response"
/graphify explain "SwinTransformer"

A saída cai em graphify-out/. Há um graph.html interativo para navegar clicando, uma pasta obsidian/ que abre como vault, um graph.json persistente para consultar semanas depois sem reler nada, um cache/ com chave SHA256 para que as reexecuções processem só os arquivos alterados, e um GRAPH_REPORT.md que lista os chamados god nodes — os conceitos de maior grau — além de“conexões surpreendentes”ordenadas por uma pontuação composta em que arestas de código para paper pesam mais que arestas de código para código.

A parte multimodal não é marketing. Arquivos de código passam pelo tree-sitter para análise de AST mais uma passada no grafo de chamadas. Markdown, PDFs e imagens passam pelo Claude: conceitos e relações extraídos da prosa, mineração de citações nos papers e visão para capturas de tela, diagramas, fotos de quadro branco e imagens em outros idiomas.

Há também exportações que importam para quem não quer viver dentro desta ferramenta: --svg, --graphml para Gephi ou yEd, e --neo4j, que gera um cypher.txt em vez de exigir um banco de dados rodando. A stack é NetworkX, clustering Leiden via graspologic, tree-sitter e vis.js. Sem servidor. Nada sai da máquina, exceto as chamadas ao Claude.

一整面白板上手绘的节点连边图,成簇的圆圈被红线圈出,箭头与简短标注,黑色与红色马克笔

O 71.5x, examinado

O corpus de referência tem 52 arquivos: os repositórios do Karpathy, cinco papers, quatro imagens. Resultado: 71.5x menos tokens por consulta em comparação com a leitura dos arquivos brutos.

O repositório é incomumente honesto sobre como isso escala, o que é raro o bastante para merecer citação do conteúdo: a redução de tokens cresce com o tamanho do corpus, e com seis arquivos o valor do grafo está na clareza estrutural, não na compressão, porque seis arquivos cabem numa janela de contexto de qualquer jeito. O exemplo que eles mesmos montam, com o código do graphify mais o paper do Transformer, dá 5.4x. Com seis arquivos sintéticos de biblioteca, aproximadamente 1x.

A forma está correta. Se o seu corpus já cabe numa janela de contexto, você não está economizando tokens, está comprando um mapa. Se são cinquenta arquivos de tipos misturados, a economia é real e grande, porque a alternativa não é ler os arquivos uma vez, é relê-los repetidamente ao longo de vários turnos, sempre que um agente perde o fio.

A comparação também favorece o graphify numa direção e o subestima na outra. Ler arquivos brutos é a pior linha de base possível; um índice de recuperação bem ajustado pareceria melhor em comparação do que os arquivos brutos. Mas um índice de recuperação devolve trechos, e o que o graphify devolve são relações: a resposta para“o que conecta a atenção ao otimizador”não é um trecho, é um caminho. São consultas diferentes, e um banco vetorial atende só uma delas.

“Sem banco vetorial”é uma posição arquitetural de verdade

A maioria dos sistemas de recuperação fatia o texto, gera embeddings e faz busca por vizinhos mais próximos. O Graphify pula tudo isso: análise de AST local e determinística para código, extração por LLM para prosa e imagens, e então um grafo. Não há etapa de embedding nem busca por similaridade.

O que se ganha em troca é explicabilidade. Pergunte por que duas coisas estão conectadas e você recebe as arestas, cada uma rotulada conforme tenha sido extraída da fonte ou inferida pelo modelo. Um índice vetorial não sabe dizer isso. Ele só sabe dizer que a distância de cosseno era pequena.

O custo é cobertura. Um grafo só conhece o que o extrator encontrou. Se a passada de extração perdeu uma relação, nenhuma consulta vai trazê-la à tona, e não existe fallback difuso. A etiqueta AMBIGUOUS é o reconhecimento honesto disso, e a flag --mode deep existe porque a passada padrão é conservadora ao inferir arestas.

Onde ele conquista seu lugar

Dois fluxos de trabalho, pela minha experiência com ferramentas desse tipo.

O primeiro é entrar num código desconhecido. Não“onde fica a função X”— para isso o grep basta —, mas“quais são os conceitos que sustentam isso aqui e quais deles tocam o código de cobrança”. É uma pergunta de grafo, e o relatório de god nodes responde num formato que se lê em dois minutos.

O segundo é o caso multiagente. Quando vários agentes escrevem código em paralelo, o modelo que cada um tem do repositório fica obsoleto em minutos. Um grafo reconstruído a cada commit (graphify hook install instala um hook post-commit) ou a cada salvamento de arquivo (--watch) dá a todos os agentes o mesmo mapa atualizado em vez de cinco palpites divergentes.

O limite óbvio: isso é construído primeiro como skill do Claude Code. O caminho de instalação manual deixa um SKILL.md em ~/.claude/skills/graphify/ e acrescenta uma linha ao CLAUDE.md. Existe um modo servidor MCP (--mcp) que outros clientes podem usar, mas a ergonomia é claramente otimizada para um único ecossistema, e a dependência do Claude significa que a passada de extração custa dinheiro de verdade num corpus grande.

O veredito honesto

O Graphify não é um mecanismo de busca e não deveria ser avaliado como um. É um modelo persistente e inspecionável do que existe numa pasta, com a propriedade incomum de dizer quais partes ele chutou. Para um projeto com 137,000 estrelas que está em alta há uma semana, a pergunta interessante não é se o grafo impressiona, e sim se o hábito de etiquetar a inferência sobrevive ao contato com usuários que só querem respostas.

Meu palpite é que a maioria vai usar query, ignorar as etiquetas das arestas e nunca abrir o graph.json. Quem ficar são os que precisavam do mapa, não do gabarito.

Artigos relacionados