Inteligência artificial, sem ruído.
Tutoriais4 min

LLM Wikis São Superdimensionados — Desenvolvedor Substitui Agentes por Compilador Python Puro

Cansado de pagar tokens para organizar anotações que já tinha no disco, um desenvolvedor construiu um compilador Python determinístico que transforma markdown bagunçado em wiki vinculada — com zero chamadas a LLMs e usando apenas a biblioteca padrão.

LLM Wikis São Superdimensionados — Desenvolvedor Substitui Agentes por Compilador Python Puro

A maioria das “wikis com LLM” usa agentes, embeddings e chamadas repetidas a modelos para organizar anotações locais. Emmimal P Alexander, desenvolvedor e autor do artigo no Towards Data Science, construiu uma alternativa determinística: um compilador Python puro que transforma markdown bagunçado em uma wiki vinculada e validada usando apenas a biblioteca padrão.

Por que substituir agentes por um compilador?

Alexander conta que tentou construir uma wiki no estilo Karpathy — com loops de agentes, chamadas recursivas a LLMs e embeddings para tudo. A entrada era uma pasta de arquivos markdown que ele já possuía no disco. No meio do caminho percebeu: “Eu estava pagando tokens para reorganizar texto que eu já tinha.”

A diferença fundamental é filosófica: um agente decide como sua wiki poderia ser; um compilador garante como ela deve ser. O pipeline determinístico produz o mesmo resultado todas as vezes — essencial para anotações de referência pessoal onde consistência importa.

As quatro etapas do pipeline

O compilador opera em quatro estágios independentes e testáveis:

1. Extrator de metadados com regex

Pastas de anotações reais são caóticas. Alguns arquivos usam # Header, outros uma linha em maiúsculas, outros não têm cabeçalho algum. O extrator verifica primeiro por # header, depois por linha em maiúsculas e, se nada funcionar, usa o nome do arquivo. Ele varre campos de metadados onde quer que apareçam, sem exigir posições fixas.

2. Construtor de grafos (e o bug de performance)

A primeira versão fazia regex par a par entre todas as entidades — complexidade O(n²). Com 100 arquivos funcionava. Com 1.000, levava 4,4 segundos. Com 5.000, explodia para 107 segundos. Alexander substituiu por um matcher indexado por palavras: tokeniza cada arquivo uma vez e usa lookup em dicionário. O resultado: 1.000 arquivos em menos de 50ms; 5.000 em menos de 1 segundo.

O grafo resultante é puramente léxico — só detecta menções exatas do nome da entidade. Ele não entende que “a empresa” e “meu empregador” podem ser a mesma coisa. Essa é uma limitação honesta e reconhecida.

3. Reescrevedor consciente de seções

Em vez de reescrever tudo do zero, o reescrevedor preserva qualquer conteúdo que o usuário tenha escrito na seção ## Notes. As seções gerenciadas pelo compilador (Metadata, Related, Referenced By, Body) são regeneradas da fonte. As anotações pessoais permanecem intactas entre recompilações.

4. Linter (e o segundo bug)

O linter faz verificações estruturais simples: links quebrados e páginas órfãs. A primeira versão tinha um bug sério: contava links da seção “Referenced By” como links de saída, inflando artificialmente a contagem. Com 100 arquivos e 13 órfãos reais, o linter bugado reportava zero. A correção limitou a contagem à seção “Related”. Um teste de regressão foi adicionado com o nome do bug para evitar recorrência.

Benchmarks: duas máquinas, números idênticos

O pipeline foi testado em três escalas (100, 1.000 e 5.000 arquivos) tanto em container Linux quanto em Windows 10. Os resultados de conectividade (contagem de órfãos: 13, 133, 644) foram idênticos em todas as execuções, independentemente do sistema operacional — prova da natureza determinística do compilador.

O estágio mais caro é o linter, por causa de I/O de disco, não de CPU. Com 5.000 arquivos, ele custa mais que extração, grafo e reescrita combinados. No Windows, o Defender provavelmente contribui verificando cada arquivo na abertura, mas isso não foi verificado diretamente.

Para uso real: com 5.000 notas, uma recompilação completa leva cerca de 12 segundos em hardware Windows padrão — zero custo de tokens, zero chamadas de rede. Na escala da maioria das bases de conhecimento pessoais (centenas a poucos milhares de notas), a recompilação termina em menos de 2 segundos.

Onde isso quebra

Fontes não estruturadas ou extremamente inconsistentes vão derrubar o extrator baseado em regex. A vinculação semântica também é um limite claro: se uma nota fala de “gradiente descendente” e outra descreve “a etapa de otimização” sem usar a frase literal, elas não serão vinculadas. Nada no pipeline entende significado — essa é a fronteira honesta do que um compilador determinístico pode fazer.

O argumento não é que LLMs são a ferramenta errada para construir wikis pessoais. É que elas são a ferramenta errada para os 90% do trabalho que é puramente mecânico — e possivelmente a ferramenta certa para os 10% que exigem entender o que o texto significa, e não apenas como ele está escrito.

O código-fonte completo, incluindo gerador, extrator, construtor de grafos, reescrevedor, linter, harness de benchmark e todos os 17 testes, está disponível em: github.com/Emmimal/wiki-compiler.


Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.