-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task pt BR
Meta: adicionar um comando totalmente novo à CLI — de ponta a ponta —
direcionando seu agente. Vamos adicionar lockedin endorse: ele endossa
completos estranhos por habilidades que quase certamente eles não têm. Na
marca.
Este é o coração do tutorial. Você vai praticar o ciclo de verdade: especificação → testes → implementação → barreira verde → revisão.
← Anterior: Tutorial 2 Como o Código Funciona · Próximo: Tutorial 4 Prompts e Revisão
Antes de escrever qualquer prompt, escreva você mesmo a especificação em linguagem simples. Pedidos vagos geram código vago — vindo de um humano ou de um agente.
endorseimprime de 5 a 7 linhas, cada uma endossando uma pessoa escolhida aleatoriamente (reutilize o poolNAMESexistente) por uma habilidade de jargão corporativo escolhida aleatoriamente (um pool novo). Termina com uma frase de efeito satírica. Deve ser acessível comolockedin endorse, como o/endorsedentro da sessão, e aparecer emhelp. Toda a aleatoriedade deve usar os helpers com sementepick/shufflepara que a saída permaneça determinística.npm testdeve continuar verde, e deve haver um teste novo que fixe pelo menos uma invariante.
Esse parágrafo é o que você vai entregar ao agente. Note que ele nomeia as restrições do Capítulo 2 (RNG com semente, a barreira de testes, o hábito das invariantes).
Comece pedindo um plano. Esta é sua chance de pegar uma abordagem ruim antes que qualquer arquivo mude.
"Quero adicionar um comando
endorseao LockedIn CLI. Aqui está a especificação: [paste your spec]. Antes de escrever código, me diga quais arquivos você vai mudar e sua abordagem, para que eu aprove. Siga os padrões existentes de um comando comoconnect."
Um bom plano menciona: um pool SKILLS novo + um renderEndorse() em
src/lockedin.js, conectá-lo em dispatch() e handleSlash(), adicionar uma
linha em renderHelp(), exportar a nova função/pool, e adicionar testes em
ambos os arquivos de teste. Se o plano perder a regra do RNG com semente ou os
testes, diga isso agora.
Peça ao agente para escrever os testes antes da implementação. Testes primeiro transformam sua especificação em algo executável, e mantêm o agente honesto.
"Ótimo. Primeiro, adicione apenas testes que falham: um teste unitário de que
renderEndorse()retorna texto mencionando uma habilidade conhecida e pelo menos 5 endossos, e um teste emcli.test.jsde quelockedin endorsesai com 0 e imprime um endosso. Use uma semente fixa. Não implementerenderEndorseainda — vamos ver os testes falharem primeiro."
Rode-os e observe-os falhar pelo motivo certo (a função ainda não existe):
npm testAgora dê sinal verde para a implementação:
"Agora implemente para que esses testes passem, seguindo o padrão do
connect. Adicione um poolSKILLSde ~25 habilidades de jargão corporativo, umrenderEndorse()que retorna uma string, conectedispatchehandleSlash, adicione uma linha emhelp, e exporte o que você adicionou. Use apenaspick/shufflepara a aleatoriedade."
O que o agente produzir deve se parecer bastante com o resto do arquivo. Por
exemplo, um pool SKILLS e um renderizador:
const SKILLS = [
'Thought Leadership', 'Sinergia', 'Storytelling', 'Vibes',
'Soneca Estratégica', 'Alinhamento de Stakeholders', 'Sinceridade Radical', /* ...~25 no total... */
];
function renderEndorse() {
const people = shuffle(NAMES).slice(0, 5 + Math.floor(rand() * 3)); // 5–7
const skills = shuffle(SKILLS);
const out = [''];
people.forEach((n, i) =>
out.push(' ✔ Endossou ' + n + ' por ' + skills[i % skills.length]));
out.push('', ' Você endossou 6 desconhecidos por habilidades que não consegue verificar. Eles vão endossar você de volta em até uma hora.');
return out.join('\n');
}…mais uma linha em dispatch() e handleSlash(), uma linha em
renderHelp(), e SKILLS, renderEndorse adicionados a module.exports.
npm testVerde? Você acabou de publicar uma funcionalidade com um agente, com testes primeiro. Não verde? Isso é normal — vá para o ciclo de iteração do Capítulo 4 e diga ao agente exatamente o que falhou.
Depois, dê uma olhada na coisa real (os testes verificam texto, mas você deve continuar olhando):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reprodutívelNunca aceite um diff que você não leu. Passe os olhos especificamente por isto:
-
Seguiu o padrão? O comando novo deve espelhar o
connect— sem dependências novas, semconsole.logdentro desrc/. -
Só RNG com semente? Procure
Math.randomno diff. Não deve haver nenhum. - Tocou em algo que não devia? A mudança deve ser aditiva; linhas não relacionadas não deveriam se mover.
-
O teste novo é significativo? Deve falhar se alguém depois quebrar a
funcionalidade — não apenas verificar
true.
Se algo estiver errado, peça um ajuste (Capítulo 4). Se estiver bom, você terminou.
Faça o ciclo completo acima de verdade. Depois, como crédito extra, peça ao agente para estendê-lo:
- "Faça o
endorseaceitar um nome opcional:lockedin endorse Adadeveria endossar a Ada especificamente. Adicione um teste, mantenha a barreira verde."
Você acabou de construir uma funcionalidade de ponta a ponta. O último capítulo é sobre fazer isso de forma tranquila — criando prompts e revisando como um engenheiro líder.
Próximo: Tutorial 4 Prompts e Revisão
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.