Se você desenvolve em Delphi, sabe o quanto a produtividade e a estabilidade dentro da IDE são valiosas. O Rad IA, assistente de IA projetado especificamente para a IDE do Delphi (usando a Open Tools API), tem passado por uma evolução fantástica.
Desde a versão v0.0.15, o plugin recebeu uma série de melhorias arquiteturais, novos recursos de produtividade, estabilidade de nível corporativo e correções profundas para garantir uma experiência de desenvolvimento fluida e sem interrupções.
Neste artigo, vamos explorar tudo o que foi implementado e aprimorado da versão v0.0.16 até a mais recente v0.0.21, trazendo exemplos práticos para você ver como essas mudanças impactam o seu dia a dia.
Principais Novidades e Recursos de Produtividade
Geração de Código Direta com “Create Example from Comment” (v0.0.21)
Uma das novidades mais empolgantes da v0.0.21 é a ação Create Example from Comment no menu contextual do editor. Agora, você pode preencher métodos vazios a partir de uma descrição em linguagem natural.
- Como funciona: Basta escrever um comentário (seja usando
//,{ ... }ou(* ... *), inclusive multilinha) acima ou dentro de um método vazio e acionar o comando. - O parser localiza o escopo pelo cursor e a IA gera a implementação correspondente, inserindo o código diretamente abaixo do comentário sem a necessidade de abrir o comparador Smart Diff.
- O fluxo é inteligente e totalmente compatível tanto com provedores tradicionais (BYOK) quanto com o inovador Web Login.
Exemplo Prático de Uso:
Imagine que você declarou a seguinte assinatura na sua unit:
function TMathHelper.RecursiveFactorial(const AValue: Integer): UInt64;
begin
// Calcula o fatorial de um número inteiro de forma recursiva
|
end;
Ao posicionar o cursor no caractere | e acionar Create Example from Comment, o Rad IA realiza a chamada em segundo plano e insere o código diretamente no editor:
function TMathHelper.RecursiveFactorial(const AValue: Integer): UInt64;
begin
// Calcula o fatorial de um número inteiro de forma recursiva
if AValue <= 1 then
Exit(1); Result := AValue * RecursiveFactorial(AValue - 1);
end;
Ações Contextuais Inteligentes com Fallback para Unit Inteira (v0.0.19)
Antes, para usar comandos como Explain, Generate Tests, Locate Bugs, Document Method ou Optimize/Refactor, era obrigatório selecionar um trecho de código.
- A partir da v0.0.19, se você acionar qualquer uma dessas ações sem nenhuma seleção active, o Rad IA automaticamente lê a unit inteira do editor ativo (via
IOTAEditReaderem chunks eficientes) e a envia como contexto. - O plugin detecta de forma inteligente se o retorno da IA deve substituir o buffer inteiro do arquivo ou apenas um cursor selecionado.
Exemplo Prático de Uso:
Você abriu uma unit complexa e antiga de persistência e quer verificar se há problemas estáticos ou memory leaks ocultos:
- Clique com o botão direito no editor (sem selecionar nenhuma linha).
- Selecione a opção Locate Bugs (ou envie o comando
/bugsno chat). - O Rad IA lerá as 500 linhas da unit inteira em segundo plano, enviará o contexto e exibirá a análise detalhada no chat:
Retorno do Chat: “Identificado na Unit
UPersistenciaCliente.pas:
- 1. No método
TClienteRepository.Salvar(linha 142), o objetoLConnectioné criado localmente mas não está protegido por um blocotry..finally. Risco de memory leak caso ocorra uma exception.- 2. O método
ConsultarInadimplentes(linha 180) está fazendo uma consulta SQL sem parâmetros. Sugere-se parametrizar para evitar SQL Injection…”
Smart Diff Integrado ao Web Login (v0.0.20)
O recurso Smart Diff (comparador visual lado a lado que permite aplicar sugestões com um clique) agora é totalmente compatível com o Web Login (que permite usar contas como ChatGPT Plus/Pro e Gemini Advanced sem chave de API).
- O Rad IA agora gerencia a ponte do WebView e extrai as sugestões formatadas em blocos
pascalmantendo quebras de linha e indentação de forma limpa, garantindo a mesma experiência rica do comparador visual para quem não usa chaves BYOK.
Exemplo de Diferença Visual (Smart Diff):
Quando você solicita Optimize/Refactor na sua unit, o Rad IA exibe no comparador:
<<<< ORIGINAL
procedure TClienteService.Salvar(ACliente: TCliente);
begin
FRepository.Insert(ACliente);
end;
==== SUGERIDO
procedure TClienteService.Salvar(ACliente: TCliente);
begin
+ if ACliente = nil then
+ raise EArgumentException.Create('Cliente não pode ser nulo');
+
FRepository.Insert(ACliente);
end;
>>>>
(Ao clicar no botão [Aplicar Alteração], a alteração sugerida é inserida automaticamente no seu código).
Estabilidade da IDE e Robustez de Integração
Integrar plugins à IDE do Delphi (bds.exe) exige muito cuidado técnico para evitar congelamentos e Access Violations. Vários avanços fundamentais foram feitos nesse sentido:
- Prevenção de Deadlocks e Crashes no Menu (v0.0.16 e v0.0.19): O registro de notifiers OTA (
IOTAIDENotifiereIOTAEditorNotifier) agora gerencia os hooks de menu de forma assíncrona e segura, aguardando que oTEditWindowesteja totalmente renderizado pela IDE antes de injetar o menu. Isso elimina conflitos conhecidos de code folding (como crash na DLLboreditu.dllao iniciar projetos) e garante estabilidade no Delphi 12 e Delphi 13. - Leitura de Grandes Arquivos em Chunks (v0.0.19): A captura da unit ativa passou a ler o buffer do editor em blocos, evitando gargalos de memória e permitindo o envio de units grandes sem travar o processo principal da IDE.
- Gerenciamento do Ciclo de Vida do WebView2 (v0.0.16): Implementação de rotinas robustas para encerramento síncrono da WebView2 no shutdown da IDE, evitando travamentos de até 1 minuto ou Access Violations em
rtl290.bplao fechar o Delphi.
Polimento de UI, UX e Marca Rad IA (v0.0.18)
A experiência de uso do chat e a interface com o desenvolvedor também receberam um banho de loja:
- Nova Tela Inicial Interativa: O painel do chat agora conta com uma tela de boas-vindas contendo animações, atalhos rápidos e histórico de conversas carregado sob demanda (otimizando a velocidade de abertura do painel).
- Bloqueio de Sessões em Processamento: Durante a geração de respostas da IA, todas as ações de troca de chat, criação, renomeação ou exclusão de sessões ficam travadas. Isso previne corrupção de contexto e mantém a integridade da conversa ativa.
- Polimento Visual de Temas: Suporte visual aprimorado para o tema claro (incluindo o tom Mountain Mist) com larguras de scrollbars otimizadas e remoção de bordas escuras desnecessárias nos blocos de código.
- Padronização da Marca: Toda a interface visual, menus da IDE, documentação e metadados foram revisados para padronizar o nome oficial do plugin como Rad IA.
Evolução Arquitetural e Qualidade de Código
Por trás dos panos, o Rad IA se tornou um projeto extremamente robusto do ponto de vista de engenharia de software:
- Introdução do Padrão MVP (v0.0.16): A lógica do painel de chat e das telas de configuração foi totalmente desacoplada dos formulários VCL, sendo encapsulada em Presenters (
TChatPresentereTConfigPresenter), transformando a UI em uma View passiva. - Abstração de Armazenamento com ISettingsStorage (v0.0.16): A persistência das opções foi abstraída. Em produção, os dados utilizam o registro do Windows (
TRegistrySettingsStorage). Nos testes unitários, uma implementação em memória (TMemorySettingsStorage) garante testes 100% isolados, impedindo que testes de regressão sobrescrevam a chave de API real do desenvolvedor. - Aumento da Cobertura de Testes: A suíte de testes unitários baseada em DUnitX saltou de 117 para 155 testes aprovados, validando desde o parser de comentários até os fluxos do apresentador.
Resumo Cronológico das Releases
Para quem gosta de acompanhar versão por versão:
- v0.0.21 (Create Example from Comment): Introdução do recurso de preenchimento de métodos vazios a partir de comentários e validação com 155 testes.
- v0.0.20 (Web Login + Smart Diff): Integração do comparador visual para usuários de login web e correção de isolamento em testes de registro.
- v0.0.19 (Fallback Unit Ativa): Habilitação de comandos contextuais sem código selecionado, leitura por chunks e correção do menu no Delphi 13.
- v0.0.18 (UX & Marca): Nova tela inicial no chat, bloqueio anti-corrupção em streams ativos, ajustes finos de temas e consolidação do nome Rad IA.
- v0.0.17 (Estabilização & WebView Cache): Correção de renderização Markdown em mensagens de código e inclusão de cache-busting automático no script de build (
build.ps1) para evitar JavaScript antigo em atualizações. - v0.0.16 (MVP & Robustez): Refatoração arquitetural completa para MVP, configuração abstrata em memória/registro e hooks OTA assíncronos e seguros.
Como Instalar ou Atualizar
A atualização é simples e automatizada pelo script PowerShell na raiz do projeto:
# Abra o PowerShell como Administrador e execute:
powershell.exe -ExecutionPolicy Bypass -File build.ps1 -Install
O script detecta suas IDEs instaladas, remove caches antigos e atualiza os arquivos do WebView2 localizados em %APPDATA%\RadIA\Web.
Gostou das novidades? O Rad IA continua evoluindo para se tornar o assistente definitivo do desenvolvedor Delphi. Experimente na sua IDE e potencialize sua produtividade!
Descubra mais sobre Régys Borges da Silveira
Assine para receber nossas notícias mais recentes por e-mail.
Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.