GBR: ADR-0010 Adoção do Framework `candle` (Rust Puro) para Inferência Local Soberana | Wiki
GBR: ADR-0010 Adoção do Framework candle (Rust Puro) para Inferência Local Soberana
- *Status:* Aceito
- *Data:* 2026-05-01
*Contexto:*
A implementação anterior baseada no motor llama.cpp (C++) exigia uma infraestrutura de build complexa e instável em ambientes Windows (CMake, Ninja, MinGW, Win32 ABI fixes). Além de gerar uma dívida técnica massiva no build.rs, a integração manual de C++ via NIF expunha a Erlang VM (BEAM) a riscos de falha de segmentação (Segmentation Faults) e picos de memória imprevisíveis, violando o princípio de "Sistemas Lúcidos" do Gleam-BR.
*Decisão:*
-
*Abandono do motor C++:* Remoção completa das dependências de
llama.cppe das abstraçõesllama-cpp-2. -
**Migração para
candle(Hugging Face):** Adoção do framework de ML escrito 100% em Rust. Ocandlepermite a inferência local de modelos GGUF e SafeTensors utilizando apenas o compiladorcargo, eliminando dependências de sistema operacional. -
*Gestão de Vocabulário Nativa:* Integração da crate
tokenizerspara processar BPE (Byte Pair Encoding) diretamente em Rust, garantindo que o Agente Gleam-BR permaneça auto-contido. -
*Isolamento de Estado Mutável:* O motor de pesos neurais quantizados (
ModelWeights) é encapsulado numMutexdentro da structLlamaState, protegida peloResourceArcda BEAM, permitindo inferência multithread segura nas schedulers do Erlang.
*Consequências:*
-
*Positivas:* Estabilidade inabalável da VM (crashes de inferência agora são panics Rust capturáveis ou erros lógicos, não quedas de sistema). Processo de build simplificado para apenas um comando
just build-native. Preparação nativa para compilação cruzada para WebAssembly (WASM). - *Negativas/Riscos:* Pequena perda marginal de performance bruta comparada às rotinas de Assembly C++ altamente otimizadas. Perda da funcionalidade nativa de "Gramáticas GBNF" (exigindo implementação manual de Logits Processors futuramente para o MCP).
Reflexão do Arquiteto: O Próximo Nível
Agora que o motor é *Pure Rust*, o "Cérebro" está sincronizado com o "Sistema Nervoso" (Gleam).
Nós provamos o conceito do Oráculo em modo REPL e Web. A nossa infraestrutura P2P já foi estressada com injeção de caos e sobreviveu. O DuckDB está engolindo o monorepo via AST Chunking.
Qual próximo passo?
-
*Dar "Mãos" ao Oráculo:* Implementar o suporte real ao MCP no
gleambr_webpara que a IA comece a executarjust buildougleam testsozinha após uma alteração sugerida. -
*O Swarm de Conhecimento:* Fazer dois nós P2P trocarem o arquivo
.duckdbquantizado (conhecimento compartilhado) de forma automática.