Minha jornada aprendendo #Rust: Parte 2 -- agora com IA! (#cli #rustlang #dev #devlog #programming #ia)

Overview
Depois do meu último post, senti que aprendi bastante sobre Rust, mas ainda não o suficiente. Então decidi continuar criando ferramentas CLI para resolver diferentes problemas. Como agora vivemos em uma sociedade onde o peso da alma de alguém é medido pela quantidade de IA que conseguimos enfiar nela, decidi também criar ferramentas que usam IA.
A jornada – Parte 2
Quando escrevi o último post, eu tinha completado 10 ferramentas. Desde então continuei firme e forte, e sempre que tinha um problema que achava que seria legal resolver usando uma ferramenta de linha de comando, eu criava. Algumas ferramentas são muito específicas para serem úteis para outras pessoas, mas algumas (na minha opinião) são bem legais!
Até o momento em que estou escrevendo esta segunda parte, tenho 26 ferramentas, e ainda estou a todo vapor!
Na Conclusão, falo sobre se vale a pena ou não aprender Rust.
E lá vem a IA!
Você pode estar se perguntando: por que precisamos de IA para ferramentas CLI?
A resposta é simples: IA é uma ferramenta como qualquer outra, e devemos aproveitá-la se ela melhora nossas vidas e faz sentido usar em um determinado contexto.
Neste projeto, temos duas ferramentas usando IA. A primeira é um chatbot onde você pode selecionar uma personalidade e conversar com ela. Por enquanto, criei várias personalidades de exemplo de Baldur's Gate 3, Fallout 4, Skyrim, e uma para um Astrofísico. Essas personalidades estão longe de serem estado da arte, eu sei. Porém, quando criei essa ferramenta, a ideia era montar componentes de IA reutilizáveis.
Para o chatbot, eu estava criando os wrappers para chamar a IA, gerenciar contexto, tratar erros etc. Então a ferramenta em si é bem básica.
A segunda ferramenta é um pouco mais útil. É uma ferramenta CLI que faz duas coisas:
- Corrige um comando que você digitou errado.
- Responde quando você pergunta como fazer algo no terminal.
Ela também detecta qual shell e sistema operacional você está usando e leva isso em consideração ao responder.
Ao criar essa ferramenta, adicionei ai functions, que são funções Rust com uma docstring explicando exatamente o que fazer, como reagir e responder etc. Então uso um prompt fixo e envio essa função como uma string para a IA, que vai avaliá-la e retornar o resultado esperado. Isso ajudou muito a melhorar a precisão da resposta da IA.
Ambas as ferramentas suportam qualquer coisa que use uma interface similar à OpenAI, então o OpenRouter também é suportado.
No geral, foi interessante criar essas ferramentas, e agora que todos os wrappers para usar com IA estão prontos, vai ser moleza criar outra ferramenta baseada em IA, se eu tiver uma ideia legal.
Não achei nada particularmente desafiador em fazer isso em Rust. É claro que seria 10x mais fácil fazer em Python, mas esse não é o ponto.
E as outras ferramentas?
Então, quais são as outras ferramentas (sem IA) que criei? Aqui vai, espero que você encontre algo interessante:
Servidor HTTP leve link
Servidor web focado em desenvolvimento que serve arquivos estáticos de um diretório local. Fornece serviço de arquivos instantâneo com navegação automática de diretórios, sendo perfeito para servir rapidamente sites estáticos, testar aplicações frontend ou compartilhar arquivos localmente durante o desenvolvimento.
Uma coisa que gosto muito nessa ferramenta é que ela facilita muito o compartilhamento de arquivos entre computadores na mesma rede.
Gerador de dados fictícios link
Como o nome sugere, gera dados fictícios para você. Pense no Faker/Bogus, mas no terminal.
Chat P2P criptografado link
Uma aplicação de chat peer-to-peer básica, segura e privada que permite comunicação em tempo real criptografada entre duas partes via TCP. Cria um canal seguro usando criptografia RSA de 4096 bits com troca automática de chaves, garantindo que todas as mensagens sejam criptografadas de ponta a ponta sem depender de servidores externos ou serviços de terceiros.
Criador/atualizador de gitignore link
Uma ferramenta CLI inteligente que cria ou atualiza automaticamente arquivos .gitignore com base nos tipos de arquivo detectados no seu projeto. Ela escaneia o diretório do projeto e busca regras de gitignore apropriadas de fontes confiáveis como o repositório de gitignore do GitHub.
Criador/atualizador de AI-Ignore link
Uma ferramenta CLI que cria ou atualiza automaticamente arquivos comuns de AI-ignore no diretório do seu projeto. Esses arquivos ajudam a controlar quais arquivos e diretórios são excluídos da indexação e processamento de assistentes de IA. Essa ferramenta é similar à anterior, mas mais simples e focada em manter a IA longe de coisas que ela não deveria ver.
Editor de imagens link
A ferramenta de processamento de imagens (imgx) é um utilitário de linha de comando multithread para operações de edição de imagens em lote. A ferramenta suporta operações comuns de imagem como redimensionamento, conversão para escala de cinza e conversão de formato, mantendo a qualidade através de algoritmos avançados de codificação.
Cliente MQTT link
Utilitário para publicar mensagens e se inscrever em tópicos MQTT. Fornece uma interface simples para interagir com brokers MQTT, tornando muito conveniente para testes de IoT, depuração de fluxos de mensagens ou envio/recebimento rápido de mensagens durante o desenvolvimento.
Gerador de QR code link
Utilitário que cria QR codes para dados de texto e credenciais de WiFi. A ferramenta suporta múltiplos formatos de saída incluindo exibição no console, imagens PNG e arquivos SVG, sendo perfeita para compartilhamento rápido de informações, credenciais de WiFi, URLs ou qualquer dado de texto que precise ser facilmente escaneável.
Ferramenta para encontrar texto em arquivos ou arquivos por nome link
Lookup é um utilitário CLI simples e rápido para:
- procurar um trecho de texto dentro de arquivos (subcomando text), ou
- encontrar arquivos por nome usando padrões wildcard ou regex (subcomando files). Ambos os modos usam busca case-insensitive por padrão. A ferramenta suporta escaneamento recursivo ou apenas na pasta atual, saída configurável e cabeçalhos por subcomando.
Uma ferramenta como ping, mas com recursos extras link
Uma CLI estilo ping multiplataforma com recursos extras. Como o ping clássico, mas com modos de saída convenientes (CSV/JSON/templates personalizados), estatísticas periódicas, timestamps e controles IPv4/IPv6.
Codificador/decodificador para Base64 link
Uma ferramenta CLI simples para codificar/decodificar dados usando codificação Base64.
Monitor de conectividade e velocidade da internet link
Utilitário que monitora conectividade e velocidade, armazena atividade em SQLite e envia notificações via Telegram, e opcionalmente OpenTelemetry. Vem com uma imagem Docker, então você pode deixá-lo rodando em um container.
Removedor de caracteres de largura zero link
Um utilitário que remove caracteres Unicode de formato de largura zero (Cf) de texto. Funciona com stdin e arquivos, podendo escanear e processar diretórios recursivamente.
Por último, mas não menos importante, uma ferramenta para testar APIs link
Pense no Postman, mas sem toda aquela gordura, e funciona no terminal. Você pode orquestrar chamadas de API individuais ou encadeá-las para criar fluxos de trabalho complexos.
O que me inspirou a criar este projeto é outro projeto baseado em Rust chamado Hurl. Ele faz todo o trabalho pesado para funcionar como uma versão CLI do Postman. Porém, ele não tem suporte para reutilização de requisições e outras coisas que são úteis ao testar cenários complexos em APIs.
Então criei essa ferramenta, que funciona como um wrapper para o Hurl, mas com uma sintaxe personalizada que permite reutilização e orquestração de requisições e variáveis de ambiente.
Próximos passos
- Ainda tenho melhorias que quero fazer no Whurl, então esse é o próximo passo imediato.
- Depois, como a Microsoft lançou uma crate oficial para EventHub, preciso reescrever completamente as ferramentas eh-read e ex-export.
- E finalmente, adicionar uma nova ferramenta (usando IA) que converte comandos de uma distro para outra. (Por exemplo: se eu usar
apt install x, mas estou no Arch, ela traduzirá parapacman -S x.)
Conclusão
Depois de construir todas essas ferramentas, estou fluente em Rust? Não, ainda não. Rust é bem poderoso e acho que vou precisar de um projeto maior, mais complexo e do "mundo real" antes que vire memória muscular.
Valeu a pena aprender? Com certeza. Mesmo que você não use Rust no dia a dia, aprender outra forma de modelar um sistema, com segurança de memória e concorrência é valioso. Mesmo com ferramentas de IA para programação em todo lugar, ainda vale a pena expandir seus fundamentos e sua caixa de ferramentas mental.
Lembre-se: quando tudo o que você tem é um martelo, tudo parece um prego. Mas quando você tem uma caixa de ferramentas, pode escolher a ferramenta certa para o trabalho.
Então, Rust é certo para o seu próximo projeto? Talvez.
Atenção: As recomendações abaixo são regras gerais baseadas em opinião. Use o que se encaixa nas suas restrições e na sua equipe.
- Se você precisa de baixa latência/alta vazão e quer garantias fortes em torno de segurança de memória e concorrência (e pode arcar com uma curva de aprendizado mais íngreme), Rust é um forte candidato.
- Se você precisa entregar rápido e performance bruta não é o gargalo, Python é difícil de bater.
- Se você quer ferramental sólido, ótima produtividade e boa performance para uma ampla gama de aplicações, C# é um excelente meio-termo.
Leve essas recomendações com cautela, e lembre-se que existem outras ótimas linguagens e ferramentas por aí.
Aqui está o link para o repositório: https://github.com/brenordv/rusted-toolbox
Espero ter ajudado! :)