Tema

Tamanho do texto

Fonte

Entrelinha

MÓDULO 1.4

🧑‍💻 Codar com o Astra: trocar, refatorar, rollback

Três tarefas reais num projeto local: trocar o modelo de um serviço, refatorar a interface e reverter quando o resultado ficou pior. O redesign de um painel saiu pior na primeira rodada e melhor na segunda. O módulo mostra como iterar sem medo: git antes, fork da sessão, critério de aceite, rollback em um comando.

6
Tópicos
45
Minutos
Intermediário
Nível
Prática
Tipo
0 de 60%
1

🔧 Tarefa 1: trocar o modelo de um serviço local

Antes de qualquer tarefa que edita código: árvore limpa no git. Isso transforma rollback em git checkout .. Depois, o contrato. O agente localiza a configuração (sem você apontar), edita, reinicia o serviço e prova com um grep e a página aberta.

Copie e rode

Preparar o terreno: garantir árvore limpa e um ponto de retorno

cd <PASTA_DO_PROJETO>
git status --short          # deve vir vazio
git add -A && git commit -m "ponto de retorno antes do Astra" 2>/dev/null || true
git log --oneline -1
Como verificar: `git status --short` vazio e um commit recente. Se não é repositório git, `git init && git add -A && git commit -m init` antes de continuar.

Copie e rode

Contrato da tarefa 1, no app ou no CLI

Resultado: o serviço em http://localhost:<PORTA> passa a usar o modelo "gpt-6-astra" no provedor Codex. Serviço reiniciado e respondendo.
Onde: esta pasta.
Prova: (1) saída de `git diff --stat`, (2) saída de `grep -rn "gpt-6-astra" --include=*.{toml,json,yaml,yml,env,ts,js,py} .`, (3) screenshot da página com o modelo selecionado.
Não faça: não altere outros provedores, não instale nada, não faça commit.
Como verificar: O diff toca um ou dois arquivos de configuração, não dez. O grep mostra o modelo. A página abre com ele. Pergunte ao serviço "qual modelo você é?" e confira.

💡 Diff pequeno é o sinal de saúde

Trocar um modelo é uma linha. Se o diff --stat mostra cinco arquivos, o agente "aproveitou" para arrumar outras coisas. Peça rollback dos extras e ajuste o "Não faça".

2

🎨 Tarefa 2: refatorar a UI sem mudar comportamento

Abra um fork da sessão principal (a original continua estável). No contrato, feche o escopo: só CSS e marcação, nenhuma rota, nenhum dado, nenhuma dependência. Dê critérios: contraste, espaçamento, hierarquia. Peça o antes/depois capturado pelo próprio agente.

Copie e rode

Contrato da refatoração visual (rodar num fork da sessão)

Resultado: a tela principal com visual mais limpo e moderno. Critérios de aceite:
- texto principal com contraste mínimo 4.5:1 sobre o fundo;
- espaçamento consistente (escala de 4/8/16/24 px);
- hierarquia clara: título > seções > itens;
- nenhuma rota, dado, chamada de API ou dependência alterada.
Onde: esta pasta; só arquivos de estilo e marcação da tela principal.
Prova: `git diff --stat`, screenshot antes (./ui-antes.png) e depois (./ui-depois.png) da mesma tela na mesma largura.
Não faça: não toque em lógica, não instale pacotes, não faça commit.
Como verificar: diff --stat só com CSS/HTML/componentes de apresentação. Os dois PNGs existem e mostram a mesma tela. Se "depois" ficou mais vazio (menos informação visível), reprove: pediu limpo, não esvaziado.
Rodada 1 (sem critério) "mais bonito e moderno"fundo mais escuromenos informação na telavocê não sabe dizer por que não gostou Rodada 2 (com critério) contraste ≥ 4.5:1agrupamento por dataconexões visíveis entre itensdá para aceitar ou reprovar item a item mesmo prompt base, critérios diferentes
O que olhar: O que mudou entre as rodadas não foi o modelo. Foi o contrato ter critérios que um humano ou um script consegue conferir.

✓ Critério de aceite verificável

  • Contraste numérico
  • Lista do que não pode mudar
  • Screenshot na mesma largura
  • Nenhum arquivo fora de uma lista

✗ Critério que não verifica

  • "mais bonito"
  • "mais profissional"
  • "como um app moderno"
  • "você decide"
3

⏪ Tarefa 3: rollback quando ficou pior

Copie e rode

Rollback total ou seletivo do que o agente mudou (sem commit feito)

# ver o que mudou
git status --short && git diff --stat

# voltar TUDO ao último commit
git checkout -- . && git clean -fd

# OU guardar a tentativa para comparar depois e voltar
git stash push -m "ui rodada 1"
# ...depois, se quiser rever: git stash list / git stash apply
Como verificar: `git status --short` vazio após o checkout. Suba o serviço e confirme a tela antiga. O stash guarda a rodada 1 se você quiser reaproveitar partes.

Copie e rode

Rodada 2: pedir a nova versão dizendo o que reprovou na primeira

Voltei ao estado anterior (git checkout). A rodada anterior ficou pior: mais escura e com menos informação visível. Refaça com estes critérios adicionais:
- manter TODA a informação que existia (nenhum item some);
- agrupar os itens por <CRITÉRIO, ex.: data>;
- mostrar as ligações entre <ELEMENTOS> de forma visível;
- fundo não mais escuro que o atual.
Mesmas provas: git diff --stat + ui-antes.png + ui-depois.png.
Como verificar: Compare ui-depois.png das duas rodadas. A segunda deve ter mais informação legível, não menos. Só então commit.

Ciclo de iteração

1

Rodada N

Contrato com critérios. Prova.

2

Reprovar com motivo

Uma frase sobre o que ficou pior. Isso vira critério da próxima.

3

Rollback

git checkout ou stash. Estado limpo.

4

Rodada N+1

Mesmo contrato + critérios novos. Quando aprovar: commit com mensagem que diz o que foi aceito.

4

🧭 Trabalhar com projetos que você não conhece

Copie e rode

Reconhecimento de um repositório desconhecido, sem mudanças

Leia este repositório. Não altere nada. Responda:
1. Stack e como sobe (comando exato).
2. Onde está a configuração de modelos de IA (arquivo:linha). Se houver mais de um lugar, liste todos e diga qual é o efetivo em runtime.
3. Existe teste? Comando.
4. Os 5 arquivos mais arriscados de tocar e por quê.
Formato: lista curta, caminhos relativos.
Como verificar: Rode o comando de subir e o de teste que ele deu. Se algum falha, o mapa está errado e a próxima tarefa vai errar junto.

Copie e rode

Limitar o raio de ação a uma lista de arquivos

Você só pode editar estes arquivos: <A>, <B>, <C>. Qualquer outra mudança necessária: pare e me pergunte antes.
Tarefa: <CONTRATO>.
Como verificar: `git diff --stat` só lista arquivos da lista. Um arquivo fora dela sem pergunta = reprove e reforce a regra no AGENTS.md.

💡 Dois lugares de config

Projetos crescidos têm a mesma configuração em dois lugares (arquivo e variável de ambiente, ou dois arquivos). Pergunte qual vale em runtime antes de editar; o agente costuma saber, mas só se você perguntar.

5

🤖 Astra dentro do seu agente local

Se você roda um agente próprio ou um painel de agentes local, ele provavelmente tem perfis de modelo. Um perfil apontando para o provedor Codex usa o login da sua assinatura. A troca é exatamente a tarefa 1 deste módulo, com um perfil novo em vez de uma edição: o agente do Codex cria o perfil, reinicia e prova.

Copie e rode

Delegar a criação de um perfil de modelo no seu agente local

Resultado: no <NOME_DO_SEU_AGENTE_OU_PAINEL> rodando em http://localhost:<PORTA>, existe um perfil novo chamado "astra" que usa o modelo gpt-6-astra via provedor Codex (login da assinatura, sem chave de API). O perfil aparece no seletor e responde.
Onde: esta pasta.
Prova: `git diff --stat`, o trecho de config do perfil novo, e a resposta do perfil a "qual modelo você é?".
Não faça: não remova perfis existentes, não altere o perfil padrão, não faça commit.
Como verificar: O perfil novo aparece no seletor do seu painel e responde com o nome do modelo. Os perfis antigos continuam lá.

✓ Diff saudável nessa troca

  • Um bloco de perfil novo num arquivo de configuração
  • Referência ao provedor Codex, sem credencial
  • Perfis existentes intactos
  • Nenhuma dependência adicionada

✗ Reprove na hora

  • Qualquer string sk-, token ou secret escrita em arquivo
  • Perfil padrão alterado sem você pedir
  • Perfis antigos removidos "para limpar"
  • Novo pacote instalado para "suportar o provedor"

⚠️ Chave de API em texto no diff

Se o diff mostra uma chave (sk-..., token, secret) escrita num arquivo, reprove na hora. Perfis via Codex não precisam de chave; se apareceu uma, o agente inventou um caminho. Rollback e "sem chave de API" em maiúsculas no contrato.

6

📋 Prática: as três tarefas em sequência

Roteiro (40 min)

1

Git limpo

status vazio, commit de ponto de retorno.

2

Tarefa 1

Trocar modelo. Prova: diff --stat, grep, página.

3

Commit 1

"troca modelo para gpt-6-astra (verificado: página + grep)".

4

Fork + tarefa 2

Refatoração visual com critérios. Antes/depois.

5

Reprovar ou aceitar

Reprovou: rollback + rodada 2 com o motivo como critério. Aceitou: commit 2.

6

Tarefa 3 (opcional)

Perfil "astra" no seu agente local. Commit 3.

Copie e rode

Commit final que registra o que foi verificado (você commita, não o agente)

git add -A
git commit -m "UI: rodada 2 aceita (contraste ok, nada sumiu, diff só em estilos)"
git log --oneline -3
Como verificar: Três commits (ou dois) com mensagens que dizem o que foi aceito. Quem ler o log daqui a um mês entende o que o agente fez e o que você verificou.
setuprodada 1rodada 2rodada 3rodada 4 minutos seus git+contratoreprovarcritérioprovaprova seu tempoCurva de esforço humano por rodada: alto na primeira (setup, contrato), caindo nas seguintes até estabilizar em revisão e prova
O que olhar: O custo cai porque o critério aprendido na rodada 1 vira texto no contrato da rodada 2. Sem rollback barato, a curva não desce: você aceita a rodada 1.

🧪 Teste rápido do módulo

Três perguntas. Clique numa opção para ver a resposta.

1. Trocar um modelo produziu um diff em cinco arquivos. O que isso indica?

2. Qual critério de aceite é verificável?

3. A rodada de redesign ficou pior. Primeiro passo:

📋 Resumo do módulo

Git antes - árvore limpa e commit de retorno tornam rollback um comando.
Diff pequeno - trocar modelo é uma linha; diff grande é escopo vazando.
Critério de aceite - números e listas do que não muda; antes/depois na mesma largura.
Rollback e rodada 2 - reprovar com motivo, voltar, pedir de novo com o motivo como critério.
Seu agente local no Astra - perfil via provedor Codex, sem chave; chave no diff é reprovação.