-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task it
Obiettivo: aggiungere un comando nuovo di zecca alla CLI — dall'inizio alla
fine — dirigendo il tuo agente. Aggiungeremo lockedin endorse: valida perfetti
sconosciuti per skill che quasi sicuramente non hanno. In pieno stile.
Questo è il cuore del tutorial. Eserciterai il ciclo reale: specifica → test → implementazione → barriera verde → revisione.
← Precedente: Tutorial 2 Come funziona il codice · Avanti: Tutorial 4 Prompt e revisione
Prima di scrivere qualsiasi prompt, scrivi tu stesso/a la specifica in linguaggio semplice. Le richieste vaghe producono codice vago — da un umano o da un agente.
endorsestampa 5–7 righe, ognuna che valida una persona scelta a caso (riusa il poolNAMESesistente) per una skill di buzzword scelta a caso (un nuovo pool). Termina con una battuta satirica di una riga. Deve essere raggiungibile comelockedin endorse, come/endorsedentro la sessione, e comparire inhelp. Tutta la casualità deve usare gli helper con seedpick/shufflecosì che l'output resti deterministico.npm testdeve restare verde, e ci deve essere un nuovo test che fissa almeno un invariante.
Quel paragrafo è ciò che consegnerai all'agente. Nota che nomina i vincoli del Capitolo 2 (RNG con seed, la barriera dei test, l'abitudine agli invarianti).
Comincia chiedendo un piano. È la tua occasione per intercettare un approccio sbagliato prima che cambi qualsiasi file.
"Voglio aggiungere un comando
endorsea LockedIn CLI. Ecco la specifica: [paste your spec]. Prima di scrivere codice, dimmi quali file cambierai e il tuo approccio, così posso approvarlo. Segui i pattern esistenti per un comando comeconnect."
Un buon piano menziona: un nuovo pool SKILLS + un renderEndorse() in
src/lockedin.js, il collegamento in dispatch() e handleSlash(), l'aggiunta di
una riga in renderHelp(), l'esportazione della nuova funzione/pool e l'aggiunta
di test in entrambi i file di test. Se il piano dimentica la regola dell'RNG con
seed o i test, dillo subito.
Chiedi all'agente di scrivere i test prima dell'implementazione. I test prima di tutto trasformano la tua specifica in qualcosa di eseguibile, e mantengono l'agente onesto.
"Ottimo. Prima, aggiungi solo test che falliscono: un test unitario che
renderEndorse()restituisce testo che menziona una skill nota e almeno 5 endorsement, e un test incli.test.jschelockedin endorseesce con 0 e stampa un endorsement. Usa un seed fisso. Non implementare ancorarenderEndorse— vediamo prima fallire i test."
Eseguili e guardali fallire per la ragione giusta (la funzione non esiste ancora):
npm testOra dai il via libera all'implementazione:
"Ora implementalo per far passare quei test, seguendo il pattern di
connect. Aggiungi un poolSKILLSdi ~25 skill di buzzword, unrenderEndorse()che restituisce una stringa, collegadispatchehandleSlash, aggiungi una riga inhelped esporta ciò che hai aggiunto. Usa solopick/shuffleper la casualità."
Ciò che l'agente produce dovrebbe assomigliare molto al resto del file. Per
esempio, un pool SKILLS e un renderizzatore:
const SKILLS = [
'Thought Leadership', 'Sinergia', 'Vibes', 'Blockchain (in teoria)',
'Essere Umiliati', 'Tornare sul Punto', 'Aura Farming', /* ...~25 in totale... */
];
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(' ✔ Hai validato ' + n + ' per ' + skills[i % skills.length]));
out.push('', ' Hai validato 6 sconosciuti per skill che non puoi verificare. Ti valideranno a loro volta entro un\'ora.');
return out.join('\n');
}…più una riga ciascuno in dispatch() e handleSlash(), una riga in
renderHelp(), e SKILLS, renderEndorse aggiunti a module.exports.
npm testVerde? Hai appena pubblicato una funzionalità con un agente, con i test prima di tutto. Non verde? È normale — vai al ciclo di iterazione del Capitolo 4 e di' all'agente esattamente cosa è fallito.
Poi dai un'occhiata alla cosa vera (i test controllano il testo, ma dovresti comunque guardare):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # riproducibileNon accettare mai un diff che non hai letto. Scorri in particolare questi punti:
-
Ha seguito il pattern? Il nuovo comando dovrebbe rispecchiare
connect— nessuna nuova dipendenza, nessunconsole.logdentrosrc/. -
Solo RNG con seed? Cerca
Math.randomnel diff. Non dovrebbe essercene nessuno. - Ha toccato qualcosa che non doveva? Il cambiamento dovrebbe essere additivo; le righe non correlate non dovrebbero spostarsi.
-
Il nuovo test è significativo? Dovrebbe fallire se qualcuno in seguito rompe
la funzionalità — non limitarsi a verificare
true.
Se qualcosa non va, chiedi una correzione (Capitolo 4). Se è a posto, hai finito.
Fai davvero l'intero ciclo qui sopra. Poi, per un credito extra, chiedi all'agente di estenderlo:
- "Fai in modo che
endorseaccetti un nome opzionale:lockedin endorse Adadovrebbe validare Ada in particolare. Aggiungi un test, mantieni la barriera verde."
Ora hai costruito una funzionalità dall'inizio alla fine. L'ultimo capitolo riguarda il farlo senza attriti — scrivere prompt e revisionare come un lead engineer.
Avanti: Tutorial 4 Prompt e revisione
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.