Tessera: análise de código com grafo de conhecimento versionado

Analisar código é mais do que ler arquivo por arquivo. Você quer entender a arquitetura: quem chama quem, quais são as dependências escondidas, o que quebra se uma função mudar, se o novo PR viola regras de projeto. Essas respostas não estão em nenhum arquivo isolado, elas estão nas relações entre os arquivos.
Foi pensando nisso que nasceu o Tessera: conecte um repositório Git e ele constrói um grafo de conhecimento versionado da sua base de código. Classes, interfaces, métodos, chamadas, dependências — tudo mapeado, e o mais importante: cada commit gera um snapshot imutável. Você pode perguntar "o que quebra se eu mexer no X?" em qualquer versão do código.
A sacada: o AST é a verdade, a IA é só o resumo
A primeira tentação em projeto assim é jogar o repositório inteiro num LLM e pedir pra ele "entender". Spoiler: não funciona bem. Modelo alucina estrutura, inventa relação que não existe, e você perde a confiança no sistema inteiro.
O Tessera faz o contrário. O tree-sitter (análise estática de AST) é a fonte da verdade, com confiança ~1.0. Ele decide o que existe: classes, métodos, heranças, chamadas, dependências. A IA entra só depois, pra resumir e inferir semântica, em cima de uma estrutura que já foi decidida deterministicamente.
Resultado: descrições úteis, mas estrutura sempre correta.
Dois hashes por nó, zero trabalho desperdiçado
Cada nó do grafo tem dois hashes:
structuralHash: o AST normalizado. Muda quando a estrutura muda.semanticHash: o conteúdo + os hashes dos filhos. Propaga em cascata.
Isso dá processamento incremental de verdade. Mudou 5 arquivos num repositório de 10 mil? A IA processa 5 nós, não o monólito inteiro. E como os snapshots são imutáveis e endereçados por conteúdo, toda consulta é "time-travel": diffs arquiteturais entre versões, queries com versão específica, sem estado global pra gerenciar.
O que dá pra fazer com isso
O dashboard vira uma caixa de ferramentas de análise:
- Grafo interativo — navegue pelos nós e arestas tipadas (Inherits, Calls, FieldDependency, Injected...), filtre por tipo.
- Impacto — "o que quebra se eu mudar
Program.cs?" O sistema classifica dependências diretas e indiretas, pondera por profundidade e devolve um rating CRITICAL/HIGH/MEDIUM/LOW com um preview do caminho de impacto. - Diff arquitetural — compare snapshots e veja o que mudou em nível de arquitetura, não de diff de arquivo.
- Análise de risco de PR — o webhook de
pull_requestcai no grafo e devolve: quais regras de arquitetura o PR viola, quais entidades de alto impacto ele toca. - Regras de arquitetura — crie regras (camadas, direção de dependência, chamadas proibidas) e valide no servidor ou no CLI, no CI, com o mesmo motor.
- Chat RAG — pergunte sobre o código com citações
arquivo:linha. E quando o corpus não tem nada relevante, ele fala "NoContext" em vez de alucinar resposta.
O CLI
Nem todo mundo quer subir Docker pra analisar um código. O tessera é um binário console que roda o mesmo pipeline parse → resume → link → grafo, mas 100% offline: sem banco, sem API, sem IA, sem upload. Ele só precisa do .NET, git e do sidecar de parsing.
Isso significa: regras de arquitetura validadas no CI, relatórios em Markdown gerados localmente, e o mesmo resultado do dashboard, porque reutiliza o mesmo motor de regras e os mesmos algoritmos de grafo.
Onde está
Projeto open source, com histórico de desenvolvimento spec-driven documentado. Se você quer entender a arquitetura de um código antes de mexer nele, inclusive o seu próprio, dá uma olhada aqui.
Código parado é mistério. Código analisado é mapa.