-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task fr
Objectif : ajouter une commande toute neuve à la CLI — de bout en bout —
en dirigeant votre agent. Nous ajouterons lockedin endorse : elle recommande de
parfaits inconnus pour des compétences qu'ils n'ont presque certainement pas. Dans
le ton.
C'est le cœur du tutoriel. Vous pratiquerez la vraie boucle : spéc → tests → implémentation → barrière au vert → revue.
← Précédent : Tutoriel 2 Comment fonctionne le code · Suivant : Tutoriel 4 Prompting et revue
Avant de rédiger le moindre prompt, écrivez vous-même la spéc en langage clair. Les demandes vagues donnent du code vague — d'un humain ou d'un agent.
endorseaffiche 5 à 7 lignes, chacune recommandant une personne choisie au hasard (réutilisez le poolNAMESexistant) pour une compétence jargonneuse choisie au hasard (un nouveau pool). Elle se termine par une pointe satirique. Elle doit être accessible en tant quelockedin endorse, en tant que/endorsedans la session, et apparaître danshelp. Tout l'aléatoire doit utiliser les helpers à grainepick/shufflepour que la sortie reste déterministe.npm testdoit rester au vert, et il devrait y avoir un nouveau test qui fixe au moins un invariant.
Ce paragraphe est ce que vous confierez à l'agent. Remarquez qu'il nomme les contraintes du Chapitre 2 (RNG à graine, la barrière de tests, l'habitude des invariants).
Commencez par demander un plan. C'est votre chance de repérer une mauvaise approche avant qu'aucun fichier ne change.
« Je veux ajouter une commande
endorseà LockedIn CLI. Voici la spéc : [paste your spec]. Avant d'écrire du code, dis-moi quels fichiers tu vas modifier et ton approche, pour que je puisse l'approuver. Suis les patrons existants pour une commande commeconnect. »
Un bon plan mentionne : un nouveau pool SKILLS + un renderEndorse() dans
src/lockedin.js, son branchement dans dispatch() et handleSlash(), l'ajout
d'une ligne à renderHelp(), l'export de la nouvelle fonction/du nouveau pool, et
l'ajout de tests dans les deux fichiers de test. Si le plan oublie la règle du RNG
à graine ou les tests, dites-le maintenant.
Demandez à l'agent d'écrire les tests avant l'implémentation. Les tests d'abord transforment votre spéc en quelque chose d'exécutable, et gardent l'agent honnête.
« Parfait. D'abord, ajoute uniquement des tests qui échouent : un test unitaire montrant que
renderEndorse()renvoie du texte mentionnant une compétence connue et au moins 5 recommandations, et un testcli.test.jsmontrant quelockedin endorsesort avec 0 et affiche une recommandation. Utilise une graine fixe. N'implémente pas encorerenderEndorse— voyons d'abord les tests échouer. »
Exécutez-les et regardez-les échouer pour la bonne raison (la fonction n'existe pas encore) :
npm testDonnez maintenant le feu vert à l'implémentation :
« Maintenant, implémente-la pour faire passer ces tests, en suivant le patron de
connect. Ajoute un poolSKILLSd'environ 25 compétences jargonneuses, unrenderEndorse()qui renvoie une chaîne, branchedispatchethandleSlash, ajoute une ligne àhelp, et exporte ce que tu as ajouté. N'utilise quepick/shufflepour l'aléatoire. »
Ce que l'agent produit devrait beaucoup ressembler au reste du fichier. Par
exemple, un pool SKILLS et un moteur de rendu :
const SKILLS = [
'Leadership éclairé', 'Synergie', 'Vibes', 'Blockchain (en théorie)',
'Modestie performative', 'Revenir sur le sujet', 'Aura Farming', /* ...~25 au 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(' ✔ Recommandé ' + n + ' pour ' + skills[i % skills.length]));
out.push('', ' Vous avez recommandé 6 inconnus pour des compétences que vous ne pouvez pas vérifier. Ils vous recommanderont en retour dans l’heure.');
return out.join('\n');
}…plus une ligne dans dispatch() et dans handleSlash(), une ligne dans
renderHelp(), et SKILLS, renderEndorse ajoutés à module.exports.
npm testAu vert ? Vous venez de livrer une fonctionnalité avec un agent, les tests d'abord. Pas au vert ? C'est normal — allez à la boucle d'itération du Chapitre 4 et dites à l'agent exactement ce qui a échoué.
Ensuite, jetez un œil à la vraie chose (les tests vérifient le texte, mais vous devriez tout de même regarder) :
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reproductibleN'acceptez jamais un diff que vous n'avez pas lu. Survolez spécifiquement ces points :
-
A-t-il suivi le patron ? La nouvelle commande devrait refléter
connect— pas de nouvelles dépendances, pas deconsole.logdanssrc/. -
Uniquement le RNG à graine ? Cherchez
Math.randomdans le diff. Il ne devrait y en avoir aucun. - A-t-il touché quelque chose qu'il ne devrait pas ? Le changement devrait être additif ; les lignes sans rapport ne devraient pas bouger.
-
Le nouveau test est-il significatif ? Il devrait échouer si quelqu'un casse
plus tard la fonctionnalité — pas seulement affirmer
true.
Si quelque chose cloche, demandez une correction (Chapitre 4). Si c'est bon, vous avez terminé.
Faites toute la boucle ci-dessus pour de vrai. Ensuite, en bonus, demandez à l'agent de l'étendre :
- « Fais en sorte que
endorseaccepte un nom optionnel :lockedin endorse Adadevrait recommander Ada spécifiquement. Ajoute un test, garde la barrière au vert. »
Vous avez maintenant construit une fonctionnalité de bout en bout. Le dernier chapitre porte sur la façon de le faire sans accroc — rédiger des prompts et passer en revue comme un ingénieur lead.
Suivant : Tutoriel 4 Prompting et revue
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.