Refatorar código, como renomear uma variável importante em múltiplos arquivos, pode ser arriscado. Um erro pode quebrar a aplicação. Esta receita mostra como delegar essa tarefa ao Modo Agente, usando seu poder de planejamento e execução controlada para realizar a refatoração com segurança.

O Problema

Você precisa renomear uma variável de configuração, por exemplo, de DATABASE_URL para POSTGRES_DSN, em todo o seu projeto. Fazer isso manualmente é tedioso e propenso a erros. Usar sed ou find-and-replace em massa pode ser perigoso se o nome da variável for uma substring comum.

Ingredientes

  • Um projeto de código onde você precisa realizar a refatoração.
  • O ChatCLI no modo interativo.

Passo a Passo

Passo 1: Delegue a Tarefa ao Agente

Inicie o Modo Agente com uma instrução clara e detalhada. Seja específico sobre o que precisa ser feito.

/agent em todo o projeto, encontre todos os arquivos que contêm a string “DATABASE_URL” e a substitua por “POSTGRES_DSN”. Mostre-me os arquivos que serão modificados antes de fazer qualquer alteração.

Desconstruindo o Prompt:

  • “em todo o projeto…”: Define o escopo da operação.
  • “encontre… e substitua…”: Descreve a ação de refatoração.
  • “Mostre-me os arquivos… antes de fazer qualquer alteração”: Esta é uma instrução de segurança crucial. Estamos pedindo ao agente para criar um plano que nos permita validar o escopo antes de executar a mudança.

Passo 2: Revise o Plano de Ação

A IA irá analisar sua solicitação e propor um plano. Um bom plano para esta tarefa provavelmente terá duas etapas:

  📋 PLANO (visão compacta)
  ⏳ #1: Listar arquivos afetados — grep -rl "DATABASE_URL" .
  ⏳ #2: Executar a substituição — find . -type f -name "*" -exec sed -i 's/DATABASE_URL/POSTGRES_DSN/g' {} +
  

Passo 3: Execute e Valide o Primeiro Passo

Em vez de executar tudo de uma vez, vamos executar apenas o primeiro comando para validar o escopo.

No prompt do agente, digite 1 e pressione Enter.

➤ Sua escolha: 1

O ChatCLI executará grep -rl “DATABASE_URL” . e mostrará a lista de arquivos que contêm a string.

Exemplo de Saída:

  🧾 ÚLTIMO RESULTADO
  ./config/app.go
  ./internal/database/connection.go
  ./docker-compose.yml
  

Agora você pode revisar esta lista. Se ela contiver um arquivo inesperado (ex: README.md ), você sabe que a abordagem precisa ser refinada.


Passo 4: Edite o Plano para Maior Segurança (Opcional, mas recomendado)

O comando sed é poderoso, mas pode ser arriscado. Vamos editar o comando 2 para usar uma extensão de backup, criando cópias dos arquivos originais.

No prompt do agente, digite e2 (editar comando 2). O ChatCLI pedirá o novo comando.

  Comando 2/2 (shell): find . -type f -name "*" -exec sed -i'.bak' 's/DATABASE_URL/POSTGRES_DSN/g' {} +
  

Agora, o comando sed criará um arquivo .bak para cada arquivo modificado, permitindo uma reversão fácil se algo der errado.


Passo 5: Execute a Refatoração e Conclua

Com o plano validado e aprimorado, execute o segundo comando digitando 2 .

O agente executará a substituição. Após a conclusão, você pode verificar as mudanças com git diff e, se tudo estiver correto, remover os arquivos de backup. Você pode até mesmo pedir ao agente para fazer isso:

➤ Sua escolha: c2 (Continuar após a execução do passo 2)

A refatoração foi concluída com sucesso. Agora, por favor, crie um comando para encontrar e remover todos os arquivos .bak no projeto.